Старый 24.06.2008, 02:03   #1
LordWilex
Жара, однако...
 
Аватар для LordWilex
 
Регистрация: 01.06.2008
Сообщения: 8,479
По умолчанию Как работать со швейцарскими эфемеридами в Microsoft Office Excel

Мало кому известно, но швейцарские
эфемериды можно подключить к Excel и проводить астрономические/астрологические расщеты любой сложности прямо на рабочем листе.

Прежде всего эта информация пригодиться, если вы занимаетесь астрологическими исследованиями или желаете провести какие-то нестандартные расщеты, которые не получается сделать в стандартных астрологических программах.

Если вы умеете немного праграммировать на Visual Basic, то в сочетании со математическими/статистическими возможностями в Exel и возможностью создавать макросы, - перед вами откроются безграничные возможности в моделировании експериментов, которые не может дать ни одна астрологическая/математичекая программа.

Но даже без знания Visual Basic можно сделать очень многое!!!

И так начнем с основ.

Для начала нам нужно будет подключить сами эфемериды к книге.
Т.е. задекларировать основные функции швейцарских эфемерид в рабочей книге и установить библиотеку швейцарских эфемерид.

Для этого:
1. Скопируйте файл: "swedll32.dll" в папку c:/windows/System32.
Этот файл входит в комплект постави многих астрологических программ, на пример ZET , но если его у вас нет, скачать его (вместе с документацией на английском языке, исходниками и др. полезностями) можно по ссылке: ftp://ftp.astro.com/pub/swisseph/sweph.zip (4 MB).

2. Теперь идем в Exel. Создаем новый документ.
Далее заходим: Меню "Сервис" -> "Макросы" -> "Редактор Visual basic".

Находим надпись "книга1.xls" (Если вы назвали документ по другому, то ваше название), и кликаем правой кнопкой мыши, выбираем "insert"->"module"
emph.gif

и вставляем в появившеся окне следующий текст (єто основные деклорации функций):

Продолжение в следующем посте....

Последний раз редактировалось LordWilex, 24.06.2008 в 02:05.
LordWilex вне форума   Ответить с цитированием
Старый 24.06.2008, 02:08   #2
LordWilex
Жара, однако...
 
Аватар для LordWilex
 
Регистрация: 01.06.2008
Сообщения: 8,479
По умолчанию

Ксожалению не поместилось в пост....
Короче, тогда просто вставляем содержимое этого файла в окно: SweDecl.zip

И так, основа у нас теперь есть, но с в таком виде с большинством функций работать очень сложно, поэтому добавим в конец следующий текст:


Function jday(year As Integer, month As Integer, day As Integer, hour As Integer, _
min As Integer, sec As Double, Optional greg) As Double
' returns julian day number given date in gregorian calender (greg=1)
' or julian calendar (greg = 0). If greg ommited, then Gregorian is assumed.
Dim a As Double
Dim b As Integer
a = 10000# * year + 100# * month + day
If (a < -47120101) Then MsgBox "Warning: date too early for algorithm"
If (IsMissing(greg)) Then greg = 1
If (month <= 2) Then
month = month + 12
year = year - 1
End If
If (greg = 0) Then
b = -2 + Fix((year + 4716) / 4) - 1179
Else
b = Fix(year / 400) - Fix(year / 100) + Fix(year / 4)
End If
a = 365# * year + 1720996.5
jday = a + b + Fix(30.6001 * (month + 1)) + day + (hour + min / 60 + sec / 3600) / 24
End Function


Public Function Plc(ByVal JD As Double, ByVal pl As Variant, Optional ByVal CType, Optional ByVal XPos) As Double
Dim x(6) As Double
Dim cusp(13) As Double
Dim ascmc(10) As Double

swe_set_ephe_path ("D:\SWESEMPHES")

iflag = SEFLG_SPEED + SEFLG_MOSEPH
If pl > 99990 And pl < 100018 Then
asss = swe_houses_ex(JD, iflag, CType, XPos, asc("P"), cusp(0), ascmc(0))
csp = pl - 99990
Plc = cusp(csp)
Call swe_close
Exit Function
End If

If CType = "Def" Then iflag = SEFLG_SPEED + SEFLG_MOSEPH

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

If CType = "MTrop" Then iflag = SEFLG_TRUEPOS + SEFLG_MOSEPH
If CType = "MSid" Then iflag = SEFLG_SIDEREAL + SEFLG_MOSEPH
If CType = "MHel" Then iflag = SEFLG_HELCTR + SEFLG_MOSEPH
If CType = "MXYZ" Then iflag = SEFLG_XYZ + SEFLG_MOSEPH
If CType = "MRad" Then iflag = SEFLG_RADIANS + SEFLG_MOSEPH




serr$ = String(255, 0)
Call swe_calc_ut(JD, pl, iflag, x(0), serr$)
' serr$ = set_strlen(serr$)
Plc = x(0)

If XPos = 1 Or XPos = "Lat" Then Plc = x(1)
If XPos = 2 Or XPos = "Lon" Then Plc = x(2)
If XPos = 3 Or XPos = "Dis" Then Plc = x(3)
If XPos = 4 Or XPos = "SpdLat" Then Plc = x(4)
If XPos = 5 Or XPos = "SpdLon" Then Plc = x(5)
If XPos = 6 Or XPos = "SpdDis" Then Plc = x(6)
If XPos = 7 Or XPos = "Er" Then Plc = serr$
DoEvents
End Function


Public Function ASPECT(x, y)
ASPECT = Abs(swe_difdeg2n(x, y))
End Function

Public Function ASPECT2(x, y)
ASPECT2 = swe_difdeg2n(x, y)
End Function


Это основной "джентльменский" набор функций, другие функции мы будем добавлять сюда же..

Внимание!!! Не забудьте заменить D:\SWESEMPHES на путь к файлам со швейцарскими эфемеридами на вашем компьютере, иначе почти ни чего работать не будет!!!
Сами файлы эфемерид, если у вас их нет, - можно скачать здесь: ftp://ftp.astro.com/pub/swisseph/ephe/.

И так, сохраняем и теперь мы можем работать с эфемеридами прямо на рабочем листе.

Продолжение следует

Последний раз редактировалось LordWilex, 24.06.2008 в 02:17.
LordWilex вне форума   Ответить с цитированием
Старый 24.06.2008, 02:48   #3
LordWilex
Жара, однако...
 
Аватар для LordWilex
 
Регистрация: 01.06.2008
Сообщения: 8,479
По умолчанию

Ура!!! Теперь мы можем начать работать, давайте попробуем вычислить тропическую долготу Солнца на 10 авнуста 1980 года в 13:58:40 GMT.

Для начала нам все же понадобиться определить юлианскую дату, на это время (к сожаления все функции работают только с юлианскими датами).

Для этого либо нажимаем кнопку Fx на панели инструментов, либо заходим в меню "вставка" -> "функция", и в, появившеся окне выбираем категирию "определенные пользователем", дальще ищем функуцию "jday" и выбираем её.

Теперь у нас появится вот такое окно:

emph2.gif

Вводим дату, нажимаем ОК. И так, юлианска дата на 10-8-1980 13:58:40 была: 2444462,082.

Теперь опять заходим во "вставка" -> "функция" -> "определенные пользователем", и ищем функцию plc

И дальше аналогично предыдущему пункту:

emph3.gif

Параметр pl - это номер планеты в системе швейцарских эфемерид.
Параметр JD - это юлианская дата
Параметр CType - это выбор зодиака (STrop - трапический, SSid Сидерический). Буква S в начале означает швейцарские эфемериды, а T - эфемериды Мошьера (TTrop), которые тоже включены в файл swedll32.dll.
Параметр XPos - это выбор координаты (на пример 0 это долгота, 1 Широта, можно на пример получить XYZ координаты и т.д. )

Короче нажимаем ОК и получаем результат.
И так 10-8-1980 в 13:58:40 GMT Долгота Солнца была 138,0711226 (или 18-й градус льва).


Продолжение следует...
LordWilex вне форума   Ответить с цитированием
Старый 24.06.2008, 08:21   #4
Алексей
Собеседник
 
Аватар для Алексей
 
Регистрация: 01.11.2007
Сообщения: 4,458
По умолчанию

Отличная идея, LordWilex!

Благодарю и жду продолженения. :)
Алексей вне форума   Ответить с цитированием
Старый 24.06.2008, 14:22   #5
Vladimir
Админ
 
Аватар для Vladimir
 
Регистрация: 01.06.2007
Адрес: Москва, Россия
Сообщения: 16,013
По умолчанию

Да, замечательно! Присоединяюсь к благодарностям!
Vladimir вне форума   Ответить с цитированием
Старый 25.06.2008, 00:48   #6
LordWilex
Жара, однако...
 
Аватар для LordWilex
 
Регистрация: 01.06.2008
Сообщения: 8,479
По умолчанию

Спасибо, очень рад, что єта технология пригодиться не только мне

Прежде чем продолжать, хотелось бы по подробней раскрыть некоторые неясные моменты из прошлых постов, в основном это касается функции plc.


1. Параметр CType, это выбор системы зодиака, а так же вида эфемерид. Первая буква в параметре, как я уже сказал, указывает тип эфемерид.

S - Швейцарские эфемериды, - более точные, но требуют помимо библиотеки swedll32.dll присутствия на компьютере самих файлов эфемерид (хотя ты бы файлов: sepl_18.se1, semo_18.se1, seas_18.se1). Их сточность сопоставима с точностью эфемерид DE405/DE406, поэтому их вполне можно использовать и для научных целей.

M - Эфемериды Мошьера. Встроены в файл swedll32.dll, поэтому ни чего дополнительного для работы с ними скачивать не нужно (к астероидам это утверждение не относится). Являются апроксимацией эфемериды DE404. Но во первых они не так точны, как швейцарские эфемериды, и для кретичных к точности научных задач, обычно не подходят. Во вторых работают они медленей швейцарских эфемерид, а при большом объеме вычислений это может отнять у вас лишних пару дней. Но для практических задачь очень даже подойдут. Единственный существнный +, - это небольшой размер.


Пример использования:
STrop - тропический задиак по швейцарским эфемеридам.
MTrop - Тропический зодиак, Эфемериды Мошьера.

*****
SSid (MSid) - Вернуть координаты планеты в сидерическом зодиаке
SHel (MHel) - Вернуть координаты планеты в гелиоцентре
SXYZ (MXYZ) - Вернуть XYZ координаты (используется в астрономии)
SRad (MRad) - Вернуть координаты в радианах


2. Параметр pl - номер планеты в системе швейцарских эфемерид (координаты планет вычисляются аналогично солнцу в предыдущем посте, только 0 нужно заменить на номер планеты).

****
0 - Солнце
1 - Луна
2 - Меркурий
3 - Венера
4 - Марс
5 - Юпитер
6 - Сатурн
7 - Уран
8 - Нептун
9 - Плутон

**** (Система Луна-Земля)
10 - Средний Восх. узел
11 - Истинный Восх. узел
12 - Средний апогей Луны (Лилит)
13 - Истиный апогей Луны
14 - Земля (в любом случае, результат в гелиоцентре).

*** (Основные астероиды. Эти астероиды включены в стандартный файл seas_18.se1)
15 - Хирон
16 - Фол
17 - Церара
18 - Плалада
19 - Юнона
20 - Веста
****

21 - INTP APOG (не знаю, что это такое, очевидно какой-то апогей...)
23 - INTP PERG (тоже не знаю, но явно перегей какой-то)

23 ... 39 - зарезервированніе номера планет

**** (Транснептуны ГША)
40 - Купидон
41 - Гадес
42 - Зевс
43 - Кронос
44 - Апалон
45 - Адметос
46 - Вулкан
47 - Посейдон

**** (Другие фиктивные планеты)
48 - Изида
49 - Нибиру (? В англиской транскрипции: Nibiru, Очевидно один из результатов "вычисления" 10-й планеты Солнечной системы).
50 - Харингтон (то же самое)
51 - Нептун Леверьера
52 - Нептун Адамса
53 - Плутон Лоуэла
54 - Плутон Пикеринга
*****

Так же, имеется возможность добавлять орбитальные элементы других фиктивных плапнет (как для земной орбиты, так и для солнечной), записав их в специальный файл.
Кстати, нам ни чего не мешает записать туда же и орбитальные элементы астероидов, если нет желания скачивать его эфемериды, правда точность таких координат астероида будет весьма сомнительна.

**** Особенности работы с астероидами. Номера астероидов.

Для того, чтобы вычислить астероид нужно:
а). Закачать файл с эфемиридами астероида (на сегоднешний момент на сайте швейцарских эфемерид их доступно уже десятки, если не сотни тысяч)и положить его в папку с эфемеридами.
б). Прибавить к номеру астероида 10000, а дальше, вставляем в функцию и вычисляем, как и все остальные планеты.
На пример, если вам нужно вычислить астероид Урания (Urania) порядковый № которого 30, мы:
- Скачиваем файл se00030s.se1, и кладем его в папку с эфемеридами.
- Прибавляем к 10000 № астероида. 10000 + 30 = 10030 , - это и будет номер, который мы подставляем в функцию plc


**** Особенности работы с домами.

Так же при помощи этой функции можно вычислить координаты начала домов в системе Плацидуса.
Для этого нужно к номеру дома прибавить 99990 и подствавить это число в функцию plc вместо планеты.
На пример:
Асцендент = 99990 +1 = 99991
II дом = 99990 + 2 = 99992
и т.д...

К сожалению, этот алгоритм писался мной для личных целей, а я работаю только с плацидусом или равнодомной системой, поэтому работа с домами плохо продуманна... вообще-то тут есть возможность работать не меньше, чем с десятком систем....

Вобщем, в следуюущий раз что-нить придумаем, чтобы обойти это и посветим следующий пост работе с домами.

******

P.S. Кстати, забыл упамянуть еще об одной вещи. Наверное будет не очень удобно каждый раз, когда создаешь документ, вставлять в него код с функциями , да и не нужно
Просто создаем пустой документ, вставяем в него функции, как было описанно в начале, а потом просто сохраняем как, "Надстройка Exel" (файл с расширением .xla), на прмер, swe.xla
Потом все закрываем. Входим в меню "Сервис" - > "Надстройки" -> "Обзор" и подключаем наш файл. После этого все функции швейцарских эфемерид будут доступны в любом документе exel, на вашем компьютере.

Продолжение следует.....
LordWilex вне форума   Ответить с цитированием
Старый 25.06.2008, 10:29   #7
DoReMi
Комбайнёр
 
Аватар для DoReMi
 
Регистрация: 23.04.2008
Адрес: Волгодонск
Сообщения: 19
По умолчанию

Здесь положил работу Алексея Богдановского, выложенную на ныне покойном suastroclub.narod.ru, там хороший пример.
Сегодня уже не так актуальна тема, поскольку MSO и Excel в том числе, как мы недавно узнали, стоит денег, причём больших, за которые вполне можно купить полноценный астропроцессор.
Лично у меня ни на рабочей, ни на домашней машине офиса нет.
Вот если бы были примеры реализации работы swedll32.dll совместно с Openoffice.org, в частности Calc, то были бы и мои "респект и уважуха".
DoReMi вне форума   Ответить с цитированием
Старый 25.06.2008, 13:00   #8
Алексей
Собеседник
 
Аватар для Алексей
 
Регистрация: 01.11.2007
Сообщения: 4,458
По умолчанию

Цитата:
Так же при помощи этой функции можно вычислить координаты начала домов в системе Плацидуса.
Для этого нужно к номеру дома прибавить 99990 и подствавить это число в функцию plc вместо планеты.
На пример:
Асцендент = 99990 +1 = 99991

У меня почему-то смещение на +1. Т.е. для МС нужно поставить не +10, а +11.

Использую эту функцию для своих расчетов. :)
Алексей вне форума   Ответить с цитированием
Старый 25.06.2008, 13:34   #9
Алексей
Собеседник
 
Аватар для Алексей
 
Регистрация: 01.11.2007
Сообщения: 4,458
По умолчанию

Да, еще вопрос. Каким образом функция Plc может расчитывать куспиды домов, если не задаются географические координаты? А если расчитывает, то на какое место?
Алексей вне форума   Ответить с цитированием
Старый 26.06.2008, 02:34   #10
LordWilex
Жара, однако...
 
Аватар для LordWilex
 
Регистрация: 01.06.2008
Сообщения: 8,479
По умолчанию

Цитата:
Сообщение от DoReMi
Здесь положил работу Алексея Богдановского, выложенную на ныне покойном suastroclub.narod.ru, там хороший пример.
Спосибо! Не встречал этот пример. Эти функции можно использовать вместе с другими и расширить возможности!

Цитата:
Сообщение от DoReMi
Сегодня уже не так актуальна тема, поскольку MSO и Excel в том числе, как мы недавно узнали, стоит денег, причём больших, за которые вполне можно купить полноценный астропроцессор.
Лично у меня ни на рабочей, ни на домашней машине офиса нет.
Вот если бы были примеры реализации работы swedll32.dll совместно с Openoffice.org, в частности Calc, то были бы и мои "респект и уважуха"
Не согласен, во первых астрологические процессоры, - это астрологиеские процессоры.
Не смотря на то, что сейчас в них очень много возможностей, - ориентированны они на стандартные задачи... и очень трудно приспособить их под что-то свое...
На пример, со статистикой в них особо не разгуляешься..

А матаматические/статистические программы, - это совсем другое, но к сожалению, астрологическими функциями они пока особо не наделены :))))

Я уверен, что сейчас есть много астрологов, которые хотели БЫ и могли БЫ заняься исследованиями, но не могут реализовать свои идеи только из-за того, что отсутствуют гибкие средства для работы с астрологической статистикой, а программировать что-то свое они не умеют...

По крайней мере, пока не созданно ни чего лучшего, думаю, самый лучший путь это интегрировать эфемериды в стандартные математические программы.

Думаю exel сейчас есть не меньше, чем на 90% компютеров (а может и больше), и эта программа обладает всеми возможностями для статистической обработки данных, а швейцарсикие эфемериды бесплатны (если не закрывать исходный код и не использовать их в коммерческих целях) и в том или ином виде присутствуют на компьютерах большинства астрологов.
К тому же, в таком виде (ШЭ + Exel), - это очень гибкое решение, можно до бесконечности наращивать возможности, добавлая новые функции/макросы...

Поверьте мне, в этой связке можно реализовать любую идею, просто немного нужно "набить руку".

К сожалению, у меня нет Openoffice.org, но на сколько я помню, там в качесте языка макросов используется один из вариантов Basic'a, который кажется даже совместим с VB, так что думаю достаточно в функции внести небольшие коррективы и они прекрасно заработают и на вашей платформе.

У меня был еще опыт интеграции швейцарских эфемерид в MathCad, но там на много сложней, нужно писать библиотеки-переходники на С++, так что пока реализованны только расщеты самих координат планет, но зато остальные функции (типа аспектов) можно определить на самом рабочем листе в виде формул и функций.
Вот закончу с exel'ю займусь выкладыванием MathCad'овских функций :)))


Цитата:
Сообщение от Алексей
У меня почему-то смещение на +1. Т.е. для МС нужно поставить не +10, а +11.

Использую эту функцию для своих расчетов. :)

Цитата:
Сообщение от Алексей
Да, еще вопрос. Каким образом функция Plc может расчитывать куспиды домов, если не задаются географические координаты? А если расчитывает, то на какое место?

Это моя вина, возможно ошибка из-за того, что я забыл сказать, как указывать широту и долготу в этой функции.

Вместо типа зодиака в CType нужно прописать географическую широту.
А вместо XPos нужно указать долготу
(результат выдается в тропическом зодиаке).

Plc(Юлианская дата; 99990 + номер дома; Широта; Долгота)

Впрочем, работа с домами в этой функции действительно получилась корявая :)))

Сегодня я напишу ддругую, более подходящую для этих целей и более понятную функцию )))

P.S. Забыл про минуты.
Широту и долготу в этой функции нужно вводить одним десятичным числом.
т.е. если широта 47 градусов 12 минут
мы делаем так:
1/60*минуты+градусы

в данном случае широта в десятичном формате: 1/60*12+47=47,2

Впрочем, это будет не нужно, когда будет готова отдельная функция для домов ))
LordWilex вне форума   Ответить с цитированием
Ответ


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +1, время: 05:40.


Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
© 1995-2010, ARGO