Прочитал тему, ну нереально интересная и очень полезная. Только я не нашёл как посчитать деклинации и широту. Думаю такая возможность в ШЕ ест, надо только декларироват в функции PLC ?
LordWilex, можете добавит деклинации ?
Заранее спасибо,
Едуард
If CType = "STrop" Then iflag = SEFLG_TRUEPOS + SEFLG_SWIEPH
If CType = "SSid" Then iflag = SEFLG_SIDEREAL + SEFLG_SWIEPH
If CType = "SHel" Then iflag = SEFLG_HELCTR + SEFLG_SWIEPH
If CType = "SXYZ" Then iflag = SEFLG_XYZ + SEFLG_SWIEPH
If CType = "SRad" Then iflag = SEFLG_RADIANS + SEFLG_SWIEPH
Прочитал тему, ну нереально интересная и очень полезная. Только я не нашёл как посчитать деклинации и широту. Думаю такая возможность в ШЕ ест, надо только декларироват в функции PLC ?
LordWilex, можете добавит деклинации ?
Заранее спасибо,
Едуард
If CType = "STrop" Then iflag = SEFLG_TRUEPOS + SEFLG_SWIEPH
If CType = "SSid" Then iflag = SEFLG_SIDEREAL + SEFLG_SWIEPH
If CType = "SHel" Then iflag = SEFLG_HELCTR + SEFLG_SWIEPH
If CType = "SXYZ" Then iflag = SEFLG_XYZ + SEFLG_SWIEPH
If CType = "SRad" Then iflag = SEFLG_RADIANS + SEFLG_SWIEPH
Конечно есть, все типы координат выводятся через функции PLC, и ни чего дополнительно декларировать не нужно!!!
Если в последний парраметр (в данном примере я его обозвал "координата"), поставить 0, то функция выдаст обычную долготу, если поставить 1 - то выдаст широту, если 2, - радиус-вектор (расстояние до планеты), если поставить 3,4,5 соответствующие скорости.
Ну это конечно, при условии, что вы выбирите в предпоследнем парраметре, STrop/MTrop/JTrop или SSid/MSid/JSid (эклиптические координаты, сидерический или тропический зодиак).
А как бы обратиться к этой библиотеке из PHP во FreeBSD?
Нет, PHP пока не поддерживается, но есть 2 способа выкрутиться.
1. Если вам без разницы PHP или Perl.
В последней nix'ской версии есть расширение для Perl'a.
Просто компилите под FreeBSD тем компилятором, что у вас есть nix'скую версию ШЭ (на сколько я знаю, под FreeBSD "родной" компилятор тоже gcc ?), и устанавливайте Perl'овское расширение ШЭ себе в систему.
Только для этого нужны права администратора, чего вам вряд ли дадут на обычном хостинге, а я так понимаю вас оно интересует именно в качестве web-приложения?
2. Компилите под FreeBSD программу "swetest" (есть в комплекте никс'овскаой версии ШЭ, или если она вас не устраивает, - пишите свою), и вызываете её через PHP, кажется в PHP для этого есть функция "SysExec()" или что-то в этом роде, не помню точно....
Но для этого обязательно нужно, чтобы ваш хостинг поддерживал запуск скомпилированных исполняемых файлов.
Скажите пожалуйста, а есть ли возможность решения обратной задачи: вычислить точный момент времени по долготе той или иной планеты? Особенно интересует Солнце. Быть может, кто-то уже написал макрос для решения этой проблемы? Заранее благодарю за ответ...
Скажите пожалуйста, а есть ли возможность решения обратной задачи: вычислить точный момент времени по долготе той или иной планеты? Особенно интересует Солнце. Быть может, кто-то уже написал макрос для решения этой проблемы? Заранее благодарю за ответ...
Пока нет, но в.. нет не в следующей версии... а через версию или две, конечно же планируется.
*****
Кстати, анонс:
В ближайшее время (до нового года) выйдет обновление с исправлением некоторых ошибок, а так же, новым набором функций для работы с управителями/диспозиторами, а еще появятся функции для работы с ГША и жребиями.
В ближайшее время (до нового года) выйдет обновление с исправлением некоторых ошибок, а так же, новым набором функций для работы с управителями/диспозиторами, а еще появятся функции для работы с ГША и жребиями.
Пока нет, но в.. нет не в следующей версии... а через версию или две, конечно же планируется.
*****
Кстати, анонс:
В ближайшее время (до нового года) выйдет обновление с исправлением некоторых ошибок, а так же, новым набором функций для работы с управителями/диспозиторами, а еще появятся функции для работы с ГША и жребиями.
Спасибо за ответ. Пока приходится решать эту проблему через .... подручными средствами Excel. Будет хорошо, если эта опция появится. Тем более, что программка здесь не слишком сложная должна быть...
Спасибо за ответ. Пока приходится решать эту проблему через .... подручными средствами Excel. Будет хорошо, если эта опция появится. Тем более, что программка здесь не слишком сложная должна быть...
Если это реализовывать в среде Эксель, то задача получиться не такая простоя, как кажеться, не сколько из-за сложности, сколько из-за скорости самой среды Эксель, это ведь интерпретатор, а не компилятор, и работает он раз в 10 медленней нормальной программы, а с учетом того, что такой алгоритм требует много иттераций, получиться просто тихий ужасс
Если такую функуцию применить к одному объекту, или даже к десятку, - то скорость будет вполне себе удовлетворительная, даже для экселевского движка, но проект, прежде всего, ориентирован на статическую обработку больших объемов данных, а это значит, что довольно часто приходиться решать задачи применительно не к одному объекту, а на пример, к 10 000, и такой массив, в экселевских условиях на таком алгоритме может вычисляться недели две Так что реализовывать это пока не имеет смысла...
В скором времени (через версию или две, как получиться) я планирую координальным образом изменить архитектуру проекта.
Все дополнительные выичсления будут проводиться не в VB, как сейчас, а в отдельном dll модуле, в эксель будут подоваться только окончательные результаты вычислений, а в среде VB будут находиться только декларации функций и ни чего больше.
Причем, часть кода будет реализованна на ассемблере.
Благодаря этим мерам, как я надеюсь, скорость появления результата в экселевских ячейках увеличиться раза в три (в смысле скорости, увы, это все, что можно теоретически выжать из среды эксель), а код внутри самой dll будет выполняться раз в 10 быстрей, а то и больше.
Это позволит не слишком беспокоиться о скорости, и реализовывать внутри этой dll довольно сложные алгоритмы с иттерациями, и вообще моделировать такие эксперименты, которые раньше было реализовать почти невозможно. Вот тогда и сделаем то, что вы хотите.
К тому же, такая архитектура позволит сделать аналогичные модули для mathcad и mathlab, с минимальными издержками, а там возможностей гораздо больше, чем в excel.
Появились новые функции, которые обеспечивают полноценную работут с системами управителей/диспозиторов (класска и модерн), термов, триплицитетов, а так же функции для работы с планетными картинами ГША и жребиями:
RulerNum() - Возвращает номер планеты (в системе ШЭ), которая управляет, знаком Пример, если ввести “5” (лев), то функция возвратит “0” (Солнце)
RulerName() - Делает все тоже, что и RulerNum, только вместо номера, возвращает английское название планеты-управителя
На пример, если ввести 5 (Лев), то функция возвратит “Sun”
Dispositor() - Возвращает долготу диспозитора или долготу планеты, которая в этом знаке в изгнании.
На пример, если ввести 40 (10 градус Тельца), то функция вернет 3 (Венера), или 4 (Марс), если запросить планету в изгнании.
Ruler() - Возвращает долготу управителя произвольной точки эклиптики или долготу планеты, которая в этом месте в изгнании.
Пример. Допустим, что мы ввели 40 (10й градус Тельца), Тельцом управляет Венера, которая находится в 95 градусе, диспозитор которой Луна в 120 градусе. Если в параметрах задать управителя, то функция выдаст долготу Венеры (95), если задать диспозитора, то функция возвратит Луну (120).
RulerHouse() – Возвращает зодиакальную долготу управителя дома.
Пример. Нас интересует управитель 3 дома. 3й дом в Весах, управитель Весов Венера, функция возвратит долготу Венеры. Так же можно получить номер планеты, которая в этом знаке в изгнании.
RulerHouseInHouse() - Возвращает номер дома, в котором находится управитель дома
Пример. Нас интересует II дом. Второй дом в Весах. управитель II дома Венера в III доме, номер этого дома функция и вернет.
DayHight() – Возвращает 1, если карта дневная, и 0, если карта ночная.
jdayLT() – Делает тоже самое, что и функция jdayLT, т.е. выводит юлианскую дату, только вводить нужно местное время + поправка, а не время по гринвичу. Думаю так многим это облегчит работу.
Triplitsitet() – Возвращает номер управителя по триплицитету зодиакальной координаты Point,, в зависимости от того дневная карта или ночная (классика). Пример. Планета находиться в 10 градусе Стрельца. Карта дневная. Дневной управитель огненного триплицитета Солнца, следовательно его номер функция и выдаст.
TriplitsitetName() – Делает тоже самое, что и функция Triplitsitet (), только вместо номера возвращает латинское название управителя по триплицитету.
Пример. Планета находиться в 10 градусе Стрельца. Карта дневная. Дневной управитель огненного триплицитета Солнца, следовательно его имя (Sun) функция и выдаст.
Term() – Возвращает номер планету управителя термом.
Пример. Нас интересует 8 градус Овна. По Птолемею это терм Венеры. Следовательно функция выдаст 3 (номер Венеры в системе ШЭ).
TermName() – Делает то же самое, что и функция Term(), только вместо номера возвращает имя планеты.
Пример. Нас интересует 8 градус Овна. По Птолемею это терм Венеры. Следовательно функция выдаст “Venus”
Midp() – Возвращает среднюю точку между А и Б
MidpHar() - Возвращает среднюю точку между А и Б в заданной гармонике. В градации 0-360
MidpHarN() - Возвращает среднюю точку между A и B в заданной гармонике в градации 0-360, деленной на номер гармоники
Пример, для 4 гармоники (90 круг), максимально возможная координата = 90 градусов). Для того, чтобы проверить картину вида: A/B=C/D, просто вычислите: MidpHarN(A,B) и MidpHarN(C,D), если разница меньше 1 градуса, значит картина есть (орб. 1 градус).
AandBsubC() - Вычисляет точку вида A+(B-C) в круге 360. Для перевода результата, на пример, в 90 круг, воспользуйтесь функцией Harmonica, а для того, чтобы перевести то, что получилось в градацию 0-90 и т.д., разделите результат на номер гармоники
AandBdivC() - Вычисляет точку вида A+B/C в круге 360.
AandB() - Вычисляет точку вида A+B.
Grebiy() - Вычисляет жребий (формула вида A=B-C для дневной карты и A=C-B для ночной карты). Для вычисления жребия без учтета дневной/ночной карты просто воспользуйтесь функцией AandBsubC.
Более подробное описание новых функций см. в документации, если так можно выразица
*****
Люди, документация версталась в спешке, очень хотелось успеть закончить это дело до нового года, поэтому за верстку не судите строго )) Обещаю на праздниках подготовить нормальную документацию, и структурировать её в более удобочитаемом виде. :) Очень большая просьба в случае глюков, багов, косяков и пр. и пр. отписаться на форуме, либо lordwilex@lordwilex.ru , а я побежал готовиться к НГ :)
******
****
По просбам трудящихся добавленна функция для работы с дирекциями.
Вы можите скопировать от сюда:
Цитата:
Public Function DirectArc(ByVal BirthJD As Double, ByVal SobJD As Double, ByVal PCoeff As Double) As Double
'
' Выводит юлианскую дату соответствующую дате события, соответствующему положению дуги прогрессивного Солнца
' Где
' BirthJD - Дата рождения
' SobJD - Дата события
' PCoeff - Прогрессивный коэффициент (продолжительность года 365.25, 365.2425 или 265.2422 суток)
'
'
'
Arc = (SobJD - BirthJD) / PCoeff
days = 360 / PCoeff
DirectArc = BirthJD + (Arc * days)
End Function
Или скачать модуль целиком со всеми причиндалами, от предыдущей версии отличие только в наличии данной функции.
Как ей пользоваться?
Допустим, вам нужно расчитать дирекцию Солнечной дуги для человека, который родился 10-08-1980 17:00:35 по Московскому времени на дату 31:12:2009 12:09:07 По московскому времени.
1. Вычисляем юлианскую дату рождения человека, при помощи функции jdayLT():
10-08-1980 17:00:35 = 2444462,084
2. Вычисляем юлианскую дату события, при помощи функции jdayLT():
31:12:2009 12:09:07 = 2455196,881
3. В качестве дирекционного коэффицента берем 365.2422 (величину солнечного года в днях, хотя это завист от типа дирекции, можно, на пример, взять и 365.25).
4. Вводим данные в функцию
DirectArc(2444462.084, 2455196.881 , 365.2422)
= 2444491.051
В результате получаем дату: 2444491.051 , которую подставляем в функцию PLC() для расчета координат планет.
5. Чтобы перевести эту дату в обычную воспользуемся функцией JDToDay(), в результате получим: 8-9-1980 13:13:45 .
****
Описание новой функции в документацию пока не включено, так что считайте это неофициаальным релизом, документацией займусь по позже
Я посмотрел в архиве есть под Делфи файлы и они вполне работоспособны. Зачем заморачиваться с офисом, не понял теперь. Все прекрасно работает. Визуально.
Последний раз редактировалось vitek_tlt, 14.01.2010 в 17:47.
Я посмотрел в архиве есть под Делфи файлы и они вполне работоспособны. Зачем заморачиваться с офисом, не понял теперь. Все прекрасно работает. Визуально.
Вообще-то этот пакет предназначен в первую очередь для целей статистической обработки больших масивов информации простых генераторов эфемерид в текстовом виде в интернете и так полно, почти любая астропрограмма это умеет делать, тока как вы при помощи этой проги собираетесь работать со статистикой?
Если это вас устраивает, то пользуйтесь на здоровье
Тут такой вопросик выскочил: как можно посчитать координаты Прозерпины и Селены (Белой Луны) - есть такие планеты по Глобе :)
Эдуард
Это есть в документации и в этой теме.
Вот процедура подключения подобного рода объектов на примере Прозерпины:
Цитата:
Работа с нестандартными фиктивными планетами в ШЭ?
Что делать, если вашей любимой фиктивной планеты нет в Швейцарских Эфемеридах?
Две Прозерпины….
Вчера один из посетителей форума обратился ко мне с вопросом, «а куда вы, собственно говоря, дели мою любимую Прозерпину?». :)
Я с сей экзотичной планиДой ни когда не работал, но будучи уверен, что в ШЭ все есть, сначала посоветовал почитать внимательней форум, но когда внимательней поискал, все оказалось не так просто, как казалось, я обнаружил, что Прозерпины там действительно нет…
Верней я её конечно нашел, но эта Прозерпина оказалась какой-то не такой, во первых, её элементы оказались геоцентрическими, в то время, как мой знакомый уверял меня, что они должны быть геолиоцентрическими, во вторых координаты той Прозерпины, которая была в ШЭ (Ско 016° 22' 02,6953''), градусов на 5 отличались от того, что выдавала программа моего знакомого (Ско 011° 31' 50,3279'').
В общем-то если у вас имеются орбитальные элементы нужной вам фиктивной планеты, - это не проблема!
Достаточно создать файл seorbel.txt, добавить в него орбитальные элементы нужной «планеты» и поместить этот файл в папку со швейцарскими эфемеридами (или дописать элементы нужной фиктивной планеты в файл, если такой уже существует) и.. и все…
На пример, для этой самой Прозерпины, строка с орбитальными элементами будет выглядеть следующим образом (орбитальные элементы Прозерпины позаимствованы мной из программы ZET):