Макрокоманды системы Вектор

Блок 6 Векторный анализ

В системе Вектор на уровне МК решено множество задач векторно-графического анализа. Многие реализованы в Интернете на базе скриптов и скриптов-мистерий. Причем, обеспечивая МК определенный режим доступа (безопасности), задачи имеют выход в систему Вектор.

 

Базовый блок готовых МК в системе Вектор (версия 2017 года) включают 12 МК.

 

Диалог ВГА.jpg 

 

МК 6. 1 Брайль по контуру (задать). На самом деле данная МК преобразует dxf-картину в стилизованную картинку, далее в трубчатый иероглиф для тактильного их прочтения слепыми, еще далее  в абстрактный художественную картинку. Такие преобразования мы назвали художественно-пространственный ритм планеты Глория. В случае аложения картинок раздвинуть из структуры вручную.

 

МК 1.jpg

 

 

МК 6. 2. 3D-форма, задать 2D.  Например, задается из Clipart CorelDraw  Dxf-файл и по нему строится пирамида по трем сечениям от основания. Dxfкартинку  (лучше брать не сложную) по ней формируется 3D-форма – своего рода пирамидка, которую распечатав на 3D-принтере можно читать на ощупь. Особенно полезна задача для слепых.

МК 6.2.jpg

 

МК 6. 3. Объект на сетку 3х3. Любой объект  (в структуре последний активный).

 

МК 6.3.jpg

Объект слева 3-D помещен на сетку 3х3

 

МК 6. 4.  Купол без параметров. Купол легко строится в диалоге через поверхность вращения, потому здесь задача другая – в точности как МК 6.1 только добавлены  художественные преобразования. Лучше выполнять МК, начиная с нового экрана, вызвав dxf-файл.

МК 6.4.jpg.

Пространственно вибрационный ряд планеты Глория

 

МК 6. 5. Осьминог без параметров. На самом деле: Файл dxf-преобразовать в меньше количеством в ней отрезков. Чтобы построить осьминога вызовите МК из StdMacro вручную

МК 6.5 - на сетку 3x3.jpgМК 6.5 - Осьминог Боря.jpg

 

МК 6.6. Присоска осьминога

 

 

МК 6.6- Осьминог Боря.jpg

 

МК 6.7. Портулан на сфере - строит МК 5.19.  В данной МК задание Бегущего человечка в пространстве-времени мимо черной дыры

Самостоятельно задать «бегущего» через дыру в другое пространство и по нашему

МК 6.7- Пространство-время.jpgФвактал  бегущий-1.jpgФвактал  бегущий по кроткой.jpg

 

МК 6.8 Наместники на Земле. Без параметров автоматически

 

МК 6.8.jpg

МК 6.9. Гепта-фракталы Художественные образыы к dxf линии/группе

МК 6.9.jpg

 

МК 6.10. ИНВЕРСИЯ Гепта-фракталы Художественные образыы к dxf в группе. Из фильма «Прибытие»

МК 6.10.jpg

Гепта-пришельцы из фильма «Прибытие»

 

МК 6.11. Фракталы. 3D Dxf английские иероглифы Кадзи 2.

 

МК 6.11.jpgМК 6.11-2.jpg

9 иероглифов получены случайно, справа  в аксонометрии

МК 6. 12. Фракталы

 

МК 6.12.jpg  МК 6.12-2.jpg

Поменять папку с картинками можно в файле вручную

 

Векторно-графический анализ. Текст макросов   скопировать, поместить в свою папку с расширением *.vbs и запускать  как  макрокоманда.

 

Задачи по Векторно-графическому анализу. Как написать скрипт см:

http://vm/Vga/Vga2005/Vga_2005.html#Пример 5.

Введение: Урок 1 МК StdMacro: Vga1_old.vbs

Урок1.jpg

VBSMsg     " Введение в ВГА"  _

& vbCrLf & "Треугольник задать отрезками прямых, найти середины сторон," _

& vbCrLf & " через найденные точки построить треугольник как плоскость" _

& vbCrLf & " Set P1 = p(3, 4, 5) - метод определения точек" _ 

& vbCrLf & " otrezok.ss p1, p2 - метод задания отрезка " _ 

& vbCrLf & " Trian.ss p1, p2, p3 - задание параллелограмма"_ 

& vbCrLf & " Set K = PointOtr(P1, P2, s) метод задания точки на прямой от s"

 

' Дано

Set p1 = p(0.5,5,2)

Set p2 = p(3,2,7)

Set p3 = p(8,6,5)

otrezok.ss p1, p2

otrezok.ss p1, p3

otrezok.ss p3, p2

'Ищем середины сторон

s=0.5

Set K1 = PointOtr(P1, P2, s)

Set K2 = PointOtr(P2, P3, s)

Set K3 = PointOtr(P3, P1, s)

Trian.ss k1, k2, k3

 

VBSMsg "середина отрезка р1-р2: K1x = " & K1.x & " K1y =" & K1.y & " K1z =" & K1.z _

& vbCrLf & "середина отрезка р1-р2: K2x = " & K2.x & " K2y =" & K2.y & " K2z =" & K2.z _

& vbCrLf & "середина отрезка р1-р2: K3x = " & K3.x & " K3y =" & K3.y & " K3z =" & K3.z

 

Урок 2 МК StdMacro: Vga2_old.vbs

Урок2.jpg

VBSMsg     " Введение в ВГА "  _

& vbCrLf & "Задать синусоиду и организовать цикл ее вращения" _

& vbCrLf & " Sinus.ss p1, R, s1, s2 - метод задания синусоиды" _

& vbCrLf & " For i = 0 To 36 step 1  - организация цикла вращения " _

& vbCrLf & "       Sinus.ss p(0,0,0) , 1.2, 0, 360 "  _

& vbCrLf & "       obj.zAngle = 10*i "_

& vbCrLf & "       obj.SetH  "_

& vbCrLf & " Next "

 

For i = 0 To 36 step 0.5

Sinus.ss p(0,0,0) , 1.1, 0, 360

SetWidthColor 10, 250, 0, 150

obj.zAngle = 10*i

obj.SetH

Next

Урок 3 МК StdMacro: Vga3_old.vbs

Урок3.jpg

VBSMsg     " Введение в ВГА "  _

& vbCrLf & "Муар реугольник в треугольнике" _

& vbCrLf & "Схема решения задачи:" _

& vbCrLf & "1) Задаются точки - вершины треугольника" _

& vbCrLf & "2) Создается цикл в котором вершины скользят по сторонам треугольника" _

& vbCrLf & " Используются методы:" _

& vbCrLf & " otrezok.ss p1, p2 - построения отрезка по двум точкам " _

& vbCrLf & " Set p12 = PointOtr(p1, p2, t) - точка на прямой от t "   _

& vbCrLf & " SetWidthColor 10, 0, 0, 250 - толщина и цвет линии "  

 

Set p1 = p(0.5,5,1)

Set p2 = p(3,1,7)

Set p3 = p(8,6,5)

 

      For t = 0 To 1 Step 0.05

         Set p12 = PointOtr(p1, p2, t)

         Set p23 = PointOtr(p2, p3, t)

         Set p31 = PointOtr(p3, p1, t)

                  otrezok.ss p12,p23

                  SetWidthColor 10, 250, 0, 0

                  otrezok.ss p23,p31

                  SetWidthColor 10, 0, 250, 0

                  otrezok.ss p31,p12

                  SetWidthColor 10, 0, 0, 250

      next

Урок 4 МК StdMacro: Vga4_old.vbs

Урок4.jpg

VBSMsg     " Алгоритмизация"  _

& vbCrLf & "Перебрать точки на прямой и соединенить их с третьей " _

& vbCrLf & " Алгоритм: K =(1-s)*p1+s*p2" _

& vbCrLf & " Метод: Set K = PointOtr(P1, P2, s) " 

Set p1 =p(1,1,1)

Set p2 =p(6,6,4)

otrezok.ss p1, p2

Ngpoint.ss P1

Ngpoint.ss P2

Text.ss p1, "p1"

Text.ss p2, "p2"

' задаем третью точку

Set p3 =p(10,2.5,0)

Ngpoint.ss P3

Text.ss p3, "p3"

' задаем цикл

For s = 0. To 1.01 Step 0.05

Set K = PointOtr(P1, P2, s)

otrezok.ss K, p3

Ngpoint.ss K

Next

 

' изображаем оси координат

otrezok.s 0.,0.,0.,10.,0.,0.

otrezok.s 0.,0.,0.,0.,6.,0.

otrezok.s 0.,0.,0.,0.,0.,5.

 

Урок 5 МК StdMacro: Vga5_old.vbs

Урок5.jpg

VBSMsg     " Алгоритмизация"  _

& vbCrLf & "Перебрать точки в параллелограмме (квадрате) р1-р4" _

& vbCrLf & " Алгоритм: K =(1-v)*p13+v*p24, где " _

& vbCrLf & " p13 =(1-u)*p1+u*p4" _ 

& vbCrLf & " p24 =(1-u)*p2+u*p3" _ 

& vbCrLf & " Метод: Set K = Parall.P(u, v), где 0 < u, v < 1 "_ 

& vbCrLf & " Сетку 11х11 задать в диалоге"

 

'  Точки задавать против часовой стрелки

 

Set p1 =p(0,8,0)

Set p2 =p(0,0,0)

Set p3 =p(8,8,8)

 

' Cначала задаем параллелограмм

Parall.ss p1, p2, p3

 

' Точки - задаем двойной цикл

For v = 0. To 1.01 Step 0.1

            For u = 0. To 1.01 Step 0.1

            Set K = Parall.P(u, v)

            Ngpoint.ss K

            Next

 

Next

 

Text.ss p1, "p1"

Text.ss p2, "p2"

Text.ss p3, "p3"

 

' изображаем оси координат

otrezok.s 0.,0.,0.,10.,0.,0.

otrezok.s 0.,0.,0.,0.,10.,0.

otrezok.s 0.,0.,0.,0.,0.,5.

 

Text.ss p(0.,10.,0), "y"

Text.ss p(10.,0.,0), "x"

Text.ss p(0.,0.,5), "z"

 

 

Урок 6 МК StdMacro: Vga6_old.vbs

 

Урок6.jpg

VBSMsg     " Алгоритмизация  по методу случайных чисел"  _

& vbCrLf & " Построить окружность радиуса 1 в прямоугольнике " _

& vbCrLf & " Используется готовая функция: " _

& vbCrLf & " randomize - имя функции" _

& vbCrLf & " x = int(rnd(1)*15) возвращаемые и передаваемые параметры" 

 

Set p11 = p(0,0,0)

Set p12 = p(15,0,0)

Set p13 = p(15,10,8)

Set p14 = p(0,10,8)

Otrezok.ss p11, p12

Otrezok.ss p12, p13

Otrezok.ss p13, p14

Otrezok.ss p14, p11

 

For u = 0. To 1.01 Step 0.005

randomize

x = int(rnd(1)*15)

y = int(rnd(1)*10)

z = int(rnd(1)*8)

n1 = int(rnd(1)*250)

n2 = int(rnd(1)*250)

n3 = int(rnd(1)*250)

'  Kulak.ss p(x,y,z), 0.8, 0.2, 5

Krug.ss p(x,y,z), 0.5, p(x,y,z)

SetFillColor n1, n2, n3

Next

 

Урок 7 МК StdMacro: Vga7_old.vbs

Урок7.jpg

VBSMsg     " Оптимизация: найти минимум/максиму"  _

& vbCrLf & "Из набора чисел s1, s2, s3...sn найти минимальное" 

 

Dim s

s = Array(7, 5,8,6,1,2,0.5,0.7,9,3.5,1.,7.6,5.4,7.7,1.2,1.65,6.6,10.5,3.9,8.4)

' Эталон

s99 = 200

x103=0

y103=s(0)

z103=s(0)

 

For n = 0 To 19 Step 1

if s(n) < s99 Then s99=s(n)

otrezok.s x103, y103, z103, n, s(n), s(n)

SetFillColor 0, 0, 250

x103=n

y103=s(n)

z103=s(n)

Ngpoint.ss p(x103,y103,z103)

Next

И т.д. см. макрос

 

 

МК 6.1. Задача Герона. см. МК StdMacro: Vga8_old.vbs

VBSMsg     " Задача Герона. Найти точку Pi на прямой р11-р12,"  _

& vbCrLf & "так чтобы расстояние от двух заданных P1 и Р2 было наименьшим" _

& vbCrLf & "Или то же самое, в какой точке надо судну подойти к берегу, " _

& vbCrLf & "чтобы путь его следования из р1 в р2 был наикратчайшим" _

& vbCrLf & "Используем метод ПСВ: перебрать, сравнить и выбрать"

 

МК1

 

МК 6.2 VBSMsg     " Оптимизация задач, связанных со скоростью"  _ см. МК StdMacro: NVga2-копия.vbs

& vbCrLf & "Оптимизация движения пешехода по скошенному и не скошенному лугу" _

& vbCrLf & "v1=11 - скорость пешехода по скошенному лугу" _

& vbCrLf & "v2=5 - скорость пешехода по не скошенному лугу" _

& vbCrLf & "Найти минимум времени на преодолении данного пути из р1 в р2"_

& vbCrLf & "Алгоритм решения задачи: перебрать, сравнить и выбрать"

 

 

 

МК2

МК 6. 3 Движение судна по течению и без см. МК StdMacro: NVga3-копия.vbs

VBSMsg     " Оптимизация задач, связанных со скоростью"  _

& vbCrLf & "Оптимизация движения по течению (ветру) и без него " _

& vbCrLf & "v1=8 - скорость судна; v2=6 - скорость воды " _

& vbCrLf & "р1-р2 - вектор направления движения судна" _

& vbCrLf & "р1-р3 - вектор направления движения воды "

 

 

 

МК3

 

МК 6. 4. Расхождение 2-судов см. МК StdMacro: NVga4-копия.vbs

VBSMsg     " Оптимизация задач, связанных со скоростью"  _

& vbCrLf & "Определить, на каком наикратчайшем расстоянии пройдут два судна (pi, и pj)" _

& vbCrLf & "если известно, что первое судно идет со скоростью v1 по вектору p11-p12," _

& vbCrLf & "второе (скорость v2), сворачивая, пытается уйти от столкновения" _

& vbCrLf & "Алгоритм решения задачи: перебрать, сравнить и выбрать"

 

МК4

МК 6. 5. Метод наименьших квадратов  см. МК StdMacro: NVga5-копия.vbs

VBSMsg     "Статанализ. Метод наименьших квадратов "  _

& vbCrLf & "Найти коэффициент а уравнения прямой y =ax, наилучшим образом описывающей" _

& vbCrLf & "например, зависимость длины стальной линейки от температуры " _

& vbCrLf & "Сделано пять контрольных измерений" _

& vbCrLf & "Решение: сумма отклонений (в квадрате) должна стремиться к минимуму"

 

МК5

МК 6. 6. Рост от возраста (задается в z точки) см. МК StdMacro: NVga6-копия.vbs

VBSMsg     "Статанализ. Определить, какой будет рост у человека в 15,19,25,50 лет"  _

& vbCrLf & "Можно воспользоваться уравнением: y = a*(1-b*exp(-k*t))," _

& vbCrLf & "у которого три неизвестных коэффициента" _

& vbCrLf & "Пусть они определены по МНК: a=244.6; b=0.710333; k=0.052333"

 

МК6

МК 6. 7. Двух критериальная задача см. МК StdMacro: NVga7-копия.vbs

VBSMsg     "Многокритериальные задачи и определение зоны Парето "  _

& vbCrLf & "Два города р1 и р2 решили построить завод р" _

& vbCrLf & "1-город стремиться построить его ближе к себе" _

& vbCrLf & "2-город стремиться построить ближе к себе"_

& vbCrLf & "общее расстояние от городов до завода д.б. минимальным" _

& vbCrLf & "2-город имеет приоритет 4" _

& vbCrLf & "на одинаковом растоянии - компромисс " _

& vbCrLf & "2-й город стремится как можно дальше, 1-й - ближе" _

& vbCrLf & "1-й город стремится как можно дальше, 2-й - ближе."

 

 

МК7

МК 6. 8. Min путь издержек, см. МК StdMacro: NVga8-копия.vbs

VBSMsg  " Задача: найти минимум расхода топлива при движении из р1 в р2" _

& vbCrLf & "Движение по методу случайных чисел"  _

& vbCrLf &  "1 - двигаемся горизонтально, 2 - по вертикали, 3 - диагонали" _

& vbCrLf & "Весь путь пробегаем 50 раз, из которых один выбираем как оптимальный"  

 

 

МК8

МК 6. 9. Богданов-Белман безусловная оптимизация см. МК StdMacro: NVga9-копия.vbs

МК9_1

МК9_2

МК9_31

МК9_3

МК 6. 10. Граф-критический путь затрат. см. МК StdMacro: NVga10-копия.vbs

 На графе найти критический путь трудозатрат из пяти возможных путей. Задачу решаем методом: перебрать, сравнить и выбрать.

МК10_0

МК10_1

МК 6. 11. Линейное программирование см. МК StdMacro: NVga11-копия.vbs

МК11_1

МК11_2

МК 6. 12 Расчет ЦФ max посылки см. МК StdMacro: NVga12-копия.vbs

МК12

МК12_2МК12_3

 

Задача о столе, коте, черепахе, бутылке и стакане.

            Дано: расстояние от головы черепахи, сидящей столом, до головы кота на столе равна 170 см. Предлагается вычислить высоту стола. Методов векторно-графической оптимизации (см здесь) МК StdMacro: Vga23 Кот и черепаха.vbs

Дано.jpgКот и черепаха.jpg

Округляем: Высота кота = 40, стола = 150, черепахи = 20

Аналогично задача решается со стаканом и бутылкой