Приступаем к обширной теме - аспекты между точками карты. Аспекты, условно говоря, состоят из 2 частей:

  1. массива аспектов которые мы будем "искать" в карте
  2. таблицы расчитанных аспектов

Это то что касается расчета аспектов. Для их отображения в области отрасовки карты принцип как у точек карты - есть свои объекты ViewAspect и ViewAspectCurve. Сами аспекты это наследники от класса Aspect. На данный момент можно расчитывать аспекты по эклиптической долготе, по склонению, по приему и по знакам без учета орбиса.

Доступ к аспектам и таблице аспектов осуществляется через экземпляр класса AspectTable который получается вызовом метода getAspectTable(). Чтобы было проще, начнем разбираться на практике. Загружайте архив. Распаковывайте.

Изучаем файл start_4_1.bsh. Переименовывайте в start.bsh и запускайте программу. В поле отрисовки карт видим одну карту, с планетами до Урана, дома выделены цветами и множество линий аспектов. В поле информации добавились данные по аспектам. Открываем файл - разбираемся. В самом начале видим загрузку библиотеки "point/natal.bsh" и дальше по тексту вызов PointNatal(natal, view) который и добавляет все точки и цветные зоны домов в нашу карту. Теперь разбираемся с аспектами. Смотрим функцию Aspect(view). В качестве параметра передается объект ViewChart, который содержит отображение набора карт. Т.е. это значит, что аспекты могут быть уникальны для каждого набора карт. Например имеем отображение натала с натальными аспектами и рядом набор для прогнозов, со своими аспектами (типа аспектов, орбисами итд). Далее добавляем в аспекты объект для расчета аспектов по эклиптической долготе - вызов addEcliptic(). Сразу отмечу что таких объектов расчетов может быть сколько угодно, даже одного и того-же типа. В этом есть практический смысл, рассмотрим это попозже. Далее работаем с нашим объектом AspectEcliptic. Создаем с его помощью объект орбисов AspectEclipticOrbis через вызов newOrbis. Пока настраивать орбисы не будем - просто укажем орбис по умолчанию при создании (10 градусов). Дальше мы исключаем из расчета таблицы аспектов все оси, куспиды домов через указание категорий Axis и House - достаточно чтобы одна из точек принадлежала этой категории. И игнорируем аспект между Лунными узлами через указание двух имен точек. Исключение из расчета точек, которые заведомо не будут считаться, экономит память и ускоряет расчеты когда их много. Потом начинаем добавлять сами угловые аспекты. Минимально для этого надо:

  1. создать объект аспекта через вызов addLon с указанием долготы между точками.
  2. присвоить созданному объекту орбис через вызов setOrbis
  3. указать текстовую информацию (имя) аспекта через вызов addInfo

После добавления последнего аспекта (в 180 градусов) расположена функция для добавления отображения аспектов. И далее через ее вызов непосредственно добавляются отображения. Сами аспекты и их отображения связываются как раз через текстовую информацию (имя) объекта который указывается методом addInfo.

Так, аспекты добавили, отображения добавили. Посмотрим как получать таблицу аспектов. Для этого ниже есть функция InfoAspect. После расчета аспектов вызовом метода AspectTable.calc() можно получить массив данных аспектов через вызов getItems. Для этого нужно получить так называемый итератор и с его помощью в цикле выбирать объекты AspectData. Эти объекты содержат данные к каким точкам относится аспект  (getSpot1() и getSpot2()) и если между этими точками есть аспект то вызов getInfo() будет содержать текстовую информацию аспекта (то что задавали через AddInfo).

И теперь осталось понять  как указать какие точки должны аспектировать между собой. Для этого необходимо вызвать метод AspectTable.aspected(chart) если у нас аспекты внутри одной карты (натал, хорар итд) или AspectTable.aspected(chart1, chart2) если аспектируются точки двух разных карт (транзит, синастрия итд).

Система угловых аспектов в AstroManta очень гибкая. Давайте немного углубимся. Для начала разнообразим орбисы. Смотрим файл start_4_2.bsh Изменений не много - добавилась загрузка библиотеки "info/aspect.bsh" (для отображения информации по аспектам) и ряд вызовов AspectEclipticOrbis.addName. Такой вызов указывает орбис в градусах для пары точек в которой у любой точки должно совпадать имя с указанной. Т.е. в нашем случае для всех аспектов Солнца орбис 11, аспектов Луны 9.5 итд. Обращаю внимание, что имя должно совпасть у одной точки в порядке добавления точек в карту. Например в аспекте Солнце-Юпитер будет использоваться орбис 11 - потому что Солнце расположено "выше". Если точка не будет найдена в указанных (ну например Уран), то будет использоваться орбис заданный по умолчанию. У нас это 3.5 градуса.

Но ничего не мешает задавать орбисы для конкретных пар точек. Например мы хотим настроить орбисы согласно представлениям классиков - укажем для каждой пары орбис как полусумму от радиусов тел планет. Открываем файл start_4_3.bsh. Принципиально ничего не изменилось, просто теперь мы указываем не одно имя точки, а оба. Ну и раз мы настраиваем аспекты в традициях классической астрологии - мы скроем аспекты которые пересекают границу знака. Для этого при создании аспекта через addLon укажем что нам нужно учитывать пересечение границы знака и не должен пересекать границу (параметр в true).

Уже лучше. Пытаемся получить еще больше информации об аспекте. Каждый случившийся аспект можно разбить на части в зависимости от его фазы и точности. Если конкретней то "фаза"  -1.0 это сходящийся аспект на самой грани, 0.0 это точный аспект, а 1.0 это расходящийся на самой грани (все относительно орбиса). Давайте выделим в нашей карте сходящиеся аспекты. Посмотрим файл start_4_4.bsh. В каждом созданном аспекте мы создаем не одину текстовую информацию, а 2 с указанием диапазона "фаз" аспекта. Сходящийся аспект с -1 до 0 помечаем дополнительно строкой <--. Расходящийся аспект с фазой от 0 до 1 помечаем строкой -->. И далее при создании отображения аспектов выделяем сходящиеся аспекты более толстой линией - в 3 точки. Расходящиеся остаются толщиной в 1 точку. Выделять аспекты вы можете по своему вкусу совершенно произвольно - цветом, типом линии (штриховкой), прозрачностью. Как вам удобно.

На этом пока все. Для самостоятельной работы попробуйте вместе с выделением сходимости аспекта выделять и точные аспекты. Например при значении 30% от орбиса считать аспект точным. В таком случае можно не точные аспекты отрисовывать более бледной линией, задав ей прозрачность 128 или даже меньше, а не 255. Еще задание - добавьте аспекты в 45 и 150 градусов с орбисами в 2 раза меньше чем имеющийся набор. Подсказка - у вас должно стать два объекта AspectEclipticOrbis

У вас нет прав чтобы комментировать