Все, что есть в файле “Звезда Шри Янтры.vsd”, создано только средствами MS VISIO.

Скачать файл «Звезда Шри Янтры.vsd»

Сущность необъясненного явления

Практическая невозможность начертить, используя линейку и циркуль звезду Шри Янтры. Это центральная её часть. Закольцованность взаимосвязей положения всех треугольников приводит к тому, что малейшая неточность создаёт значительное расхождение в точках пересечения линий. То есть в месте, где пересекаются три линии, образуется маленький треугольник.
Многочисленные перерисовки приводят только к незначительному уменьшению этих треугольников, но не убирают их полностью. Поэтому все адепты рекомендуют рисовать окончательный вариант толстыми линиями, которые скроют ошибки автора. Тут приводится руководство по ручному созданию звезды. Очень хлопотное скажу вам занятие. Один мой знакомый полуметровую рисовал месяц, известен своеобразный рекорд: метровую нарисовали за сутки. Имеется в виду диаметр внешней окружности.
И как следствие нет разнообразия форм и конфигураций звезды. Очень трудно нарисовать хотя бы одну. На другие формы уже нет ни сил, ни времени.
Нет математической модели, и значит, нет точного рецепта построения.
Впрочем, это, скорее всего из-за того, что никто из серьёзных математиков не заинтересовался древним геометрическим построением. Уж слишком несерьёзно выглядит картинка. Кружок и внутри девять треугольников. Своих забот хватает. А практической пользы нет, и не предвидится.
Хранение: в сухом прохладном месте.

Как пользоваться

  1. Все элементы звезды содержат формулы, управляющие их поведением. Например, в ячейке начала линии с координатой Y содержит формулу обеспечивающую равенство значения с ячейкой координаты Y конца линии: =EndY. Тем самым обеспечивается горизонтальность лини. Конечно не все формулы такие простые. Вот, например формула определения координаты Y точки пересечения двух линий 17-й и 20-й: ((((Sheet.20!EndY×Sheet.20!BeginX-Sheet.20!BeginY×Sheet.20!EndX)/(Sheet.20!BeginX-Sheet.20!EndX))-((Sheet.17!EndY×Sheet.17!BeginX-Sheet.17!BeginY×Sheet.17!EndX)/(Sheet.17!BeginX-Sheet.17!EndX)))×((Sheet.20!EndY-Sheet.20!BeginY)/(Sheet.20!EndX-Sheet.20!BeginX)))/(((Sheet.17!EndY-Sheet.17!BeginY)/(Sheet.17!EndX-Sheet.17!BeginX))-((Sheet.20!EndY-Sheet.20!BeginY)/(Sheet.20!EndX-Sheet.20!BeginX)))+((Sheet.20!EndY×Sheet.20!BeginX-Sheet.20!BeginY×Sheet.20!EndX)/(Sheet.20!BeginX-Sheet.20!EndX)).
  2. Описание основных формул в приложении. Все эти формулы работают независимо от настроек и параметров VISIO.
  3. Но кроме формул есть ещё макросы, программы, написанные на VBA и предназначенные для облегчения выполнения некоторых операций. Так вот для того чтобы они могли выполняться надо в настройках VISIO разрешить работу макросов. Исходный код мною не закрыт. Программированием на VBA я занялся менее года назад и эти программы не могут считаться интеллектуальной собственностью по причине их примитивности. Делайте с ними что пожелаете. Описание программ в приложении.
  4. На всех страницах есть различные управляющие элементы. Это линии управления конфигурацией звезды, элементы настройки оформления внешнего вида звезды и кнопки запуска программ VBA.

Первая страница

Это краткое изложение моих мыслей о Шри Янтре и немного истории.
Вторая страница.
Тут звезда Шри Янтры выполнена в варианте с одной управляющей линией. На неё указывает синий пунктир со стрелочкой.
Для изменения конфигурации надо выделить эту линию щелчком мыши и нажимая клавиши «вверх» «вниз» на клавиатуре, перемещать её. Для того чтобы шаг перемещения был не таким большим удерживайте нажатой клавишу «Shift». Тогда шаг перемещения будет меньше.
Для перемещения или изменения размера звезды используйте внешнюю окружность. Это относится ко всем изображениям звезды.

Внимание: поскольку звезда содержит закольцованные формулы при резком перемещении или очень большом сдвиге она может «взорваться», возврат управляющей линии в прежнее положение может не дать желаемого результата. Следует закрыть файл БЕЗ СОХРАНЕНИЯ и повторно открыть его.

Управление внешним видом звезды

Процесс управления внешним видом звезды

Эта форма работает на формулах, без макросов. Непечатаемый объект.
Заголовок «Задание элементам звезды формата» является также «тягачём» для остальных прямоугольников. Переместите его и все связанные с ним элементы пойдут за ним.
В столбце «Заливка» элементы предназначены для изменения формата заливки и формата линии свободного пространства образованного сторонами основных треугольников. Выполните двойной щелчок на любом прямоугольнике и измените ему цвет, прозрачность, линию и т.д. эти изменения получат все малые треугольники звезды связанные с этим элементом. Изначально у них линия границы отсутствует, но ничто не мешает вам задать линию, любой толщины и стиля.
Столбец «Формат линии» позволяет изменять формат линии основных девяти треугольников, но только линии.
Иногда получаются довольно забавные картинки. Всё зависит только от вашей фантазии и вкуса. У меня на рабочем столе в качестве фонового рисунка звезда белыми линиями на чёрном фоне, в треугольниках размещаю иконки.
Экспортировать звезду можно во все графические форматы, ничего сложного нет. «Сохранить как» и так далее.

Запуск программ VBA

Процесс работы программ VBAЗапускать на выполнение конечно можно через меню пуска макросов, но так удобнее. Непечатаемый объект.
«Бинду».
Программа делает очень простое действие, двигает управляющую линию уменьшающимися шагами до тех пор, пока центр точки Бинду не совпадёт с центром внешней окружности. Сама точка расположена в центре вписанной окружности центрального треугольника и равна половине её диаметра. Точность подбора 6 знаков после запятой. Можно сделать и больше, но тогда ждать придётся очень долго. Во время передвижения на кнопке отображается номер шага. Обычно хватает примерно 70 шагов. Бывает меньше. При достижении точки Бинду места назначения она становится желтого цвета. Вручную мне ни разу не удалось этого добиться.

«4 перекрестия»

Это программа тоже двигает управляющую линию, только конечной целью её является совпадение четырёх перекрестий на одной линии. Эта линия является верхней горизонталью центрального треугольника, в котором расположена точка Бинду. Времени требуется примерно столько же. Номер шага отображается на кнопке.

«Движение»

Действие программы "Движение"Передвигает управляющую линию и делает паузу. 10 шагов в одну сторону и 10 обратно. В общем, мультик.
Количество шагов, величину шага и паузу можно задать произвольно. Если щелкнуть на левом нижнем поле, будет выделена управляющая линия.
Кнопка «JPEG» предлагает выбрать папку, куда будут записаны экспортированные в JPEG изображения звезды. Один шаг один файл. Имя файла совпадает с номером шага. Используя подходящий видеоредактор из этих картинок можно создать видеоклип. Движение начинается вверх потом вниз, если размер шага указать отрицательной величиной, то начальное движение будет вниз.
Номер шага отображается на кнопке.

«Скрыть лишнее».

Выключает видимость всех элементов кроме самой звезды и кнопок. Следующее нажатие возвращает всё на прежнее место.

Третья страница.

Звезда не изменилась только управляющих линий уже две. Вторая снизу.
Кнопки «Бинду 1» и «Бинду 2» выполняют те же действия только управляют разными линиями. «Бинду 1» управляет линией Sheet.75, а «Бинду 2» линией Sheet.83.
Кнопка «Движение» вызывает свою программу, только форма программы имеет уже два поля для двух линий. Поскольку линий две то и заданий размера шага два. Указание отрицательной величины шага меняет направление начального движения линии. Совет, не делайте шаг большим, получите искажённую картинку.

Четвёртая страница.

Ничем не отличается от третьей только вторая управляющая линия сверху.

Пятая страница.

Управляющих линий две, но это две средние линии.
Здесь есть два круга лотосов обрамляющих звезду. И в блоке форматирования соответственно добавилось два прямоугольника. Лотосы ничем не управляются и ничего не делают. Это просто деталь декора. Из кнопок, только «Движение» и «Скрыть всё».

Шестая страница.

Три управляющие линии. Форма программы «Движение» имеет три поля.

Седьмая страница.

Четыре управляющих линии. Больший простор фантазии и возможностей конфигурирования звезды.

Восьмая страница.

Звезда некрасивая и какая-то блёклая. Но!
Вот тут то, как раз и есть самое интересное. Тут есть кнопка «Универсальная форма».

Кнопка "Универсальная форма"
Вот какая форма.
Как астролябия делает всё, было бы что делать.
Мне могут возразить, что эти функции давно осуществлены в AutoCAD, да и VISIO тоже может выполнять все, что тут запроектировано. Но. Куда же без но.
Эта программа вычисляет требуемые координаты, и собирает формулы, которые можно поместить в любую ячейку любого шейпа. А это уже совсем другой коленкор.
Эта программа является тем самым инструментом, который поможет вам собрать свою собственную никем ранее не опробованную компоновку звезды Шри Янтра или создать нечто новое. Дерзайте.

Приложение

Немного о MS VISIO, эта программа была написана независимым коллективом и в 2000 году куплена корпорацией Microsoft. Поэтому есть некоторые несогласованности. Например, невозможно связать ячейку шейпа с ячейкой Excel. Но есть и приятные отличия, например возможность выполнения циклических ссылок, которые запрещены в том, же Excel.
Каждый графический элемент Visio в дальнейшем для удобства именуемый шейп, имеет ячейки, в которых хранится вся информация о размерах и поведении данного шейпа. Так ячейка PinX содержит координату Х геометрического центра шейпа. А ячейки EndY, BeginX, EndX и BeginY сами за себя говорят о своём содержимом. Правда эти ячейки есть только у отрезков или сплайнов, прямоугольники и овалы не имеют начала и конца. Там другая система обозначений. Все ячейки имеют имена, указывающие на назначение содержимого. Имена шейпов, как правило, состоят из двух элементов. Слова SHEET разделительной точки и номера элемента, например: Sheet.92. Можно изменить это имя на любое произвольное. Ссылка на ячейку шейпа записывается следующим образом: Sheet.58!EndY. В ячейки можно записывать формулы точно также как в Excel только с поправкой на синтаксис Visio. Если в формуле есть ссылка на ячейку того же шейпа то имя шейпа можно не указывать. Вот, например содержимое ячейки с формулой: =Width×2, правда похоже на Excel? Если эту формулу поместить в ячейку Height, то при изменении ширины высота прямоугольника автоматически будет изменяться и составит ровно удвоенное значение ширины.
Длина формулы может быть довольно большой, в «звезде» есть формулы состоящие из 7302 знаков (числа, буквы, математические символы) и они прекрасно работают. Ограничение, конечно, есть, но величина его мне не известна.
Формула определяющая прямую линию: X=Y×a+b. Из чего следует:
a=(Ye-Yb)/(Xe-Xb)
b=((Ye×Xb-Yb×Xe))/(Xb-Xe)
Где Ye есть координата Y конца отрезка, ячейка EndY  ит.д.
Путем несложных преобразований выводится формула определения координат точки пересечения двух линий.
Как видите никакой сложной математики, чистая арифметика.
Но хотя сама формула проста, её реализация оказывается сложнее. Запись той же формулы но уже в формате понятном Visio выглядит вот так:
= (((Sheet.20!EndY×Sheet.20!BeginX-Sheet.20!BeginY×Sheet.20!EndX)/(Sheet.20!BeginX-Sheet.20!EndX))-((Sheet.17!EndY×Sheet.17!BeginX-Sheet.17!BeginY×Sheet.17!EndX)/(Sheet.17!BeginX-Sheet.17!EndX)))/(((Sheet.17!EndY-Sheet.17!BeginY)/(Sheet.17!EndX-Sheet.17!BeginX))-((Sheet.20!EndY-Sheet.20!BeginY)/(Sheet.20!EndX-Sheet.20!BeginX)))
Если эта фомула будет находиться в ячейке PinX какого либо шейпа то координата Х его геометрического центра будет всегда совпадать с координатой Х точки пересечения линий Sheet.20 и Sheet.17.
Если же в качестве базовых точек определяющих линию выбирать точки пресечения других линий, то размер формулы вырастает в десятки раз. И соответственно вырастает возможность ошибки при написании такой формулы. Чтобы избавиться от трудоемкого и ненадежного способа ручного составления формул, я средствами Excel создал ряд инструментов для автоматического составления формул путём простого «склеивания» небольших заготовок и получая на выходе готовую формулу. Этот файл «Малая механизация.xls сослужил мне хорошую службу и помог собрать все управляющие формулы звезды Шри Янтры.
Формула, определяющая координаты пересечения произвольной линии и окружности ещё сложнее в ней применяются тригонометрические функции (Sin, Cos и т.д.). Но всё равно для всех построений хватает учебника геометрии за 7-й класс.
Таким образом, основная работа по созданию связанной формулами звезды была закончена, используя только Visio и в качестве подсобного инструмента Excel.
Если убрать длительные перерывы, то получится примерно 4-5 месяцев чистого времени из 10 летней эпопеи строительства звезды.
Осенью 2010 года я начал изучать VBA и решил применить полученные знания для модернизации звёздочки.
Первая программа «Бинду» выполняет подбор положения управляющей линии до совпадения центра точки Бинду с центром внешней окружности.
Алгоритм очень простой: сначала двигается управляющая линия на 1 миллиметр вверх, потом сравнивается положение Бинду с центром внешней окружности и если Бинду стала выше, то величина шага делится на 5 и меняется направление движения. Если нет, то делается ещё один шаг и каждый раз при изменении направления величина шага уменьшается в 5 раз. Таким образом, последовательным приближением достигается совпадение центров Бинду и внешней окружности с точностью 6 знаков после запятой.
Таким же способом и такой же программой «4 перекрестия» подбирается положение горизонтальной линии образующей верхнюю сторону центрального треугольника, чтобы через этот отрезок проходило 4 пересечения.
Вот исходный текст программы:
Do While Dvig_2 – Osnova        Цикл длится пока центры не совпадут
If Dvig_2 > Osnova Then       Эта часть выполняется если Бинду выше центра
ActivePage.Shapes(vUprLine).Cells(«EndY»).Formula = Dvig_1 – Sdvig Шаг вниз
Dvig_2 = FormatNumber(ActivePage.Shapes(vCelevoy).Cells(«PinY»), 6)
If Dvig_2 < Osnova Then  Если Бинду перешагнула центр то деление
Sdvig = Sdvig / 5                         Деление величины шага на 5
End If
End If
If Dvig_2 < Osnova Then       Эта часть выполняется если Бинду ниже центра
ActivePage.Shapes(vUprLine).Cells(«EndY»).Formula = Dvig_1 + Sdvig  Шаг вверх
Dvig_2 = FormatNumber(ActivePage.Shapes(vCelevoy).Cells(«PinY»), 6)
If Dvig_2 > Osnova Then  Если Бинду перешагнула центр то деление
Sdvig = Sdvig / 5                         Деление величины шага на 5
End If
End If
Loop
Желтым цветом выделены переменные. Их значение задается в начале программы.
Osnova     Это координата Y центра внешней окружности, ячейка PinY.
vUprLine  Имя управляющей линии.
vCelevoy  Имя шейпа являющегося точкой Бинду.
Dvig_2      Сюда помещается координата «Y» точки Бинду с округлением до 6-го знака после запятой.
Следующая программа «Движение» делает N шагов управляющей линией в одну сторону, вверх или вниз, и столько же обратно. Пауза между шагами задается пользователем.
Если нажать кнопку «JPEG» то можно будет каждый шаг экспортировать в картинку в формате JPEG. Из этих картинок потом можно собрать небольшой видео ролик.
Текст программы:
vStep1tek = vStep1tek — vStep1
ActivePage.Shapes(vNameObj1).Cells(vCellContr).Formula = vStep1tek
Это движение на один шаг вниз, выполняется в цикле N раз. Потом цикл повторяется только со сдвигом в обратную сторону.
Программа «Скрыть лишнее».
Даже программой назвать нельзя. Единственное что она делает это записывает в нужные ячейки требуемые значения. Вот полный текст программы:
Public Sub VisiblLayers()
If Application.ActiveWindow.Page.Layers.Item(5).CellsC(visLayerVisible).FormulaU = «1» Then
Application.ActiveWindow.Page.Layers.Item(5).CellsC(visLayerVisible).FormulaU = «0»
Application.ActiveWindow.Page.Layers.Item(4).CellsC(visLayerVisible).FormulaU = «0»
vNamButt.Caption = «Показать всё»
Else
Application.ActiveWindow.Page.Layers.Item(5).CellsC(visLayerVisible).FormulaU = «1»
Application.ActiveWindow.Page.Layers.Item(4).CellsC(visLayerVisible).FormulaU = «1»
vNamButt.Caption = «Скрыть лишнее»
End If
End Sub
Как видите ничего сложного.
Программа «Универсальная форма».
Команда "Универасльная форма"Выглядит устрашающе. Но если приглядеться, то всё очень просто. Это программная версия файла «Малая механизация.xls».
В верхней части формы задаются координаты двух точек определяющих линию.
Если нажать кнопку «Пересечение» то  можно выбрать две пересекающихся линии и формулы пересечения будут помещены в соответствующие поля. Сначала надо выбрать шейп на рисунке, потом щёлкнуть по полю для помещения имени этого шейпа в поле ввода.
При двойном щелчке на поле будет вызвана форма выбора одного шейпа и ячейки в нём, содержащей требуемое значение. Можно вручную ввести любое значение или ссылку на ячейку содержащую нужное значение. Например: 4мм отобразит 4мм, 4 пересчитает дюймы в миллиметры и отобразит 101,6 мм, Sheet.25!EndY отобразит числовое значение ячейки в миллиметрах.
Если поле ввода содержит некорректные данные, отображаться будет «Ошибка».
Ниже задаются условия расположения начала и конца этой линии.
Если это базовые точки, тогда всё просто.
Если вычисление неизвестной координаты по известной другой координате. Например известна координата Х, значение которой находится в ячейке Sheet.18!BeginX. То тогда по координатам, базовых точек вычисляется координата Y. И наоборот. Тогда в поле ввода должно быть значение или ссылка на ячейку содержащей значение. Справа от поля ввода есть возможность выбора того какая координата является известной X или Y.
Если данные некорректны то отображается сообщение «Ошибка».
Возможно задание в качестве ограничивающего элемента линии, произвольной окружности. Тогда в поле ввода должно быть указано ТОЛЬКО ИМЯ шейпа. Например: Sheet.8. Поскольку линия имеет две точки пересечения с окружностью, то есть выбор какую точку использовать «Правую» или «Левую»
Если все данные введены, то помимо отображения результатов вычисляемых всеми формулами появится надпись о том, что все формулы скопированы в буфер обмена. Это сделано для того чтобы формулы можно было вставить в любой текст и распечатать при необходимости.
Можно выбрать отрезок на рисунке и щёлкнуть на поле «Записать формулы в отрезок» и нажать кнопку «Да».
И если нет сообщений об ошибке, то ФОРМУЛЫ будут помещены в ячейки выбранного вами отрезка. И когда вы начнёте перемещать любой из шейпов использованных при создании формул, ваш отрезок будет изменять своё положение соответствующим образом.
Выборочная запись позволяет вставлять любую формулу в произвольное место по вашему выбору.
Вкладка «Две линии» составляет формулы определения координат пересечения двух произвольных линий и позволяет поместить эти формулы в любую ячейку любого шейпа.
Вкладка «Линия и окружность»
Координаты пересечения произвольной линией произвольной окружности.
Вкладка «Две окружности».
Пересечение двух окружностей.

P.S. Пишите, если обнаружите ошибки. Постараюсь исправить в кратчайшие сроки и выслать сообщившему, исправленную версию.

 
Порекомендуйте эту статью:
Оцените статью:
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (5 оценок, среднее: 5,00 из 5)
Загрузка...