Вернуться   Астрологические форумы ARGO > Делимся информацией. Тестируем астрологию. Прогнозируем. > Астрологические программы

Ответ
 
Опции темы Опции просмотра
Старый 06.01.2023, 23:04   #641
ОлесяК
Собеседник
 
Регистрация: 06.01.2023
Сообщения: 2
ОлесяК репутация выше +10
По умолчанию Определение скорости куспидов домов с функцией swe_houses_ex2

Всем привет! Помогите, пожалуйста, неопытному пользователю ШЭ заставить работать функцию swe_houses_ex2 в Excel с целью получения скорости куспидов домов. Не пойму, в чем проблема...выдает #ЗНАЧ! и все тут! Спасибо большое!

Public Function Swe_houses_Speed_calc(Year, Month, Day, hour, min, sec, geolat, geolon, ihsy, house) As Double
Dim tjd_ut As Double
Dim iflag As Long
Dim dret(10) As Double
Dim serr As String
Dim hcusps(13) As Double 'Array of 13 doubles that holds house cusps as described in Swiss Ephemeris Programmer's Manual
Dim cusp_speed(13) As Double 'Array of 13 doubles that holds house cusps as described in Swiss Ephemeris Programmer's Manual
Dim ascmc(10) As Double
Dim ascmc_speed(10) As Double

house = house + 1
iflag = 0

swe_set_ephe_path ("E:\Ephemeris\Swiss Ephemeris\SWEPH\EPHE") ' Set the directory path of the ephemeris files

'swe_utc_to_jd выдает
'tjd_et = dret[0]; /* this is ET (TT) */
'tjd_ut = dret[1]; /* this is UT (UT1) */

flag_ret = swe_utc_to_jd(Year, Month, Day, hour, min, sec, 1, dret(1), serr)

tjd_ut = dret(2)

flag_ret = swe_houses_ex2(tjd_ut, iflag, geolat, geolon, ihsy, hcusps(1), ascmc(1), cusp_speed(1), ascmc_speed(1), serr)


Swe_houses_Speed_calc = cusp_speed(house)

End Function


https://drive.google.com/file/d/1M1j...usp=share_link

Последний раз редактировалось ОлесяК, 06.01.2023 в 23:14.
ОлесяК вне форума   Ответить с цитированием
Старый 08.01.2023, 19:05   #642
DoReMi
Бухгалтер
 
Аватар для DoReMi
 
Регистрация: 23.04.2008
Адрес: Волгодонск
Сообщения: 357
DoReMi репутация выше +50DoReMi репутация выше +50
По умолчанию

Цитата:
Сообщение от ОлесяК
Всем привет! Помогите, пожалуйста, неопытному пользователю ШЭ заставить работать функцию swe_houses_ex2 в Excel с целью получения скорости куспидов домов. Не пойму, в чем проблема...выдает #ЗНАЧ!

А попроще функции работают у вас? Какая-нибудь swe_degnorm(), преобразует число градусов более 360 в интервал 0..360.
Боюсь, что тоже не работают.

Насколько мне память не изменяет, когда передаёте массивы, надо передавать первый элемент массива, а не второй (а элементы нумеруются начиная с нуля), посмотрите в примере на первой странице этой темы:

Код:
swe_houses_ex(JD, iflag, CType, XPos, asc("P"), cusp(0), ascmc(0))
DoReMi вне форума   Ответить с цитированием
Старый 09.01.2023, 20:49   #643
DoReMi
Бухгалтер
 
Аватар для DoReMi
 
Регистрация: 23.04.2008
Адрес: Волгодонск
Сообщения: 357
DoReMi репутация выше +50DoReMi репутация выше +50
По умолчанию

Поскольку раз в год кто-то появляется с вопросом, "просто оставлю это здесь". Нашёл версию 1.2 автора темы от 2009 года, добавил свежие последние dll (32 и 64) в архив, добавил файлы BAS и XLT в которых заменил объявления функций на 64-битный вариант, предыдущие там на месте, как и остальные файлы.

Я протестировал работу в 64-битном Excel, cо swedll64.dll и исправленным кодом - у меня работает, но всё подряд не проверял.

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

Скачать здесь. Или во вложении к этому посту.

Кто хочет пробовать впервые - читайте документацию в архиве. Самое главное - скопировать файлы swedll*.dll в доступное системе место, а также если пользуетесь файлами эфемерид - укажите к ним путь в строке
Код:
Call swe_set_ephe_path("c:\sweph\")
Для новых версий Excel поищите как включается в настройках ленты пункт "Разработчик".
Вложения
Тип файла: zip SweRu32_64.zip (1.84 Мб, 39 просмотров)
DoReMi вне форума   Ответить с цитированием
Старый 14.01.2023, 10:20   #644
ОлесяК
Собеседник
 
Регистрация: 06.01.2023
Сообщения: 2
ОлесяК репутация выше +10
По умолчанию

Проще функции работают. И swe_degnorm(), и swe_utc_to_jd(), swe_calc(), swe_houses() - работают норм. Причем параметры для работающей swe_houses() и неработающей swe_houses_ex2() в основном совпадают. ОТличие только в том, что в swe_houses_ex2() передаются еще cusp_speed(0), ascmc_speed(0).
Массивы передала первым элементом - элемент 0. Все равно swe_houses_ex2() не работает(
Люди, есть у кого-нибудь работающая swe_houses_ex2()? Поделитесь, пожалуйста!

Цитата:
Сообщение от DoReMi
А попроще функции работают у вас? Какая-нибудь swe_degnorm(), преобразует число градусов более 360 в интервал 0..360.
Боюсь, что тоже не работают.

Насколько мне память не изменяет, когда передаёте массивы, надо передавать первый элемент массива, а не второй (а элементы нумеруются начиная с нуля), посмотрите в примере на первой странице этой темы:

Код:
swe_houses_ex(JD, iflag, CType, XPos, asc("P"), cusp(0), ascmc(0))
ОлесяК вне форума   Ответить с цитированием
Старый 18.01.2023, 07:09   #645
DoReMi
Бухгалтер
 
Аватар для DoReMi
 
Регистрация: 23.04.2008
Адрес: Волгодонск
Сообщения: 357
DoReMi репутация выше +50DoReMi репутация выше +50
По умолчанию

Цитата:
Сообщение от ОлесяК
Все равно swe_houses_ex2() не работает(

Проверьте, есть ли у вас в коде объявление этой функции
Код:
Private Declare Function swe_houses_ex2 Lib "swedll32.dll"
или для x64
Код:
Private Declare PtrSafe Function swe_houses_ex2 Lib "swedll64.dll"

А также проверьте версию dll, функция swe_houses_ex2 появилась в версии 2.09.02 и далее, возможно нужно обновиться.
DoReMi вне форума   Ответить с цитированием
Старый 05.10.2023, 19:22   #646
Les
Собеседник
 
Регистрация: 08.12.2018
Сообщения: 153
Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000
По умолчанию

Доброго астрологического времени всем!
Возник вопрос, а можно ли реализовать на основе щейцарских эфемерид системы отсчета типа юпитеро-центрической и сатурно-центрической?
Интересно посмотреть будет всем, кто интересуется мунданной астрологией...
Les вне форума   Ответить с цитированием
Старый 06.10.2023, 23:20   #647
Vladimir
Админ
 
Аватар для Vladimir
 
Регистрация: 01.06.2007
Адрес: Москва, Россия
Сообщения: 77,778
Vladimir репутация выше +2000Vladimir репутация выше +2000Vladimir репутация выше +2000Vladimir репутация выше +2000Vladimir репутация выше +2000Vladimir репутация выше +2000Vladimir репутация выше +2000Vladimir репутация выше +2000Vladimir репутация выше +2000Vladimir репутация выше +2000Vladimir репутация выше +2000
По умолчанию

Цитата:
Сообщение от Les
Доброго астрологического времени всем!
Возник вопрос, а можно ли реализовать на основе щейцарских эфемерид системы отсчета типа юпитеро-центрической и сатурно-центрической?
Интересно посмотреть будет всем, кто интересуется мунданной астрологией...
http://forum.argo-school.ru/showpost...&postcount=910
Vladimir вне форума   Ответить с цитированием
Старый 08.10.2023, 09:46   #648
Les
Собеседник
 
Регистрация: 08.12.2018
Сообщения: 153
Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000
По умолчанию

Цитата:
Сообщение от Les
Доброго астрологического времени всем!
Возник вопрос, а можно ли реализовать на основе щейцарских эфемерид системы отсчета типа юпитеро-центрической и сатурно-центрической?
Интересно посмотреть будет всем, кто интересуется мунданной астрологией...




функция для расчета в документации имеется

Цитата:
swe_calc_pctr() calculates planetocentric positions of planets, i. e. positions as observed from some different planet, e.g. Jupiter-centric ephemerides. The function can actually calculate any object as observed from any other object, e.g. also the position of some asteroid as observed from another asteroid or from a planetary moon. The function declaration is as follows:
int32 swe_calc_pctr(
double tjd, // input time in TT
int32 ipl, // target object
int32 iplctr, // center object
int32 iflag,
double *xxret,
char *serr);


вот только в доступных функциях в VB ее не нашел
Les вне форума   Ответить с цитированием
Старый 09.10.2023, 04:44   #649
DoReMi
Бухгалтер
 
Аватар для DoReMi
 
Регистрация: 23.04.2008
Адрес: Волгодонск
Сообщения: 357
DoReMi репутация выше +50DoReMi репутация выше +50
По умолчанию

Цитата:
Сообщение от Les
функция для расчета в документации имеется
вот только в доступных функциях в VB ее не нашел

Добавьте сами в объявления по аналогии с другими. Функций много, могут с обновлениями библиотеки добавляться новые, меняться старые.
DoReMi вне форума   Ответить с цитированием
Старый 09.10.2023, 08:25   #650
Les
Собеседник
 
Регистрация: 08.12.2018
Сообщения: 153
Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000
По умолчанию

Цитата:
Сообщение от DoReMi
Добавьте сами в объявления по аналогии с другими. Функций много, могут с обновлениями библиотеки добавляться новые, меняться старые.




А можно пример пожалуйста как сделать? Поскольку ни разу не программист, и все делаю методом научного тыка, пока не получилось...
Тут еще проблема будет проверить результаты расчетов, поскольку программ расчитывающих планетоцентические системы почти что и нет...за исключением Солнца и Земли конечно...

Последний раз редактировалось Les, 09.10.2023 в 08:31.
Les вне форума   Ответить с цитированием
Старый 30.10.2023, 20:21   #651
DoReMi
Бухгалтер
 
Аватар для DoReMi
 
Регистрация: 23.04.2008
Адрес: Волгодонск
Сообщения: 357
DoReMi репутация выше +50DoReMi репутация выше +50
По умолчанию

для x64

Код:
Private Declare PtrSafe Function swe_calc_pctr Lib "swedll64.dll" _ ( _ ByVal tjd_ut As Double, _ ByVal ipl As Long, _ ByVal iplctr As Long, _ ByVal iflag As Long, _ ByRef x As Double, _ ByVal serr As String _ ) As Long ' x must be first of six array elements ' serr must be able to hold 256 bytes

или для x32

Код:
Public Declare Function swe_calc_pctr Lib "swedll32.dll" _ Alias "_swe_calc_ut@28" ( _ ByVal tjd_ut As Double, _ ByVal ipl As Int32, _ ByVal iplctr As Int32, _ ByVal iflag As Int32, _ ByRef x As Double, _ ByVal serr As String _ ) As Int32 ' x must be first of six array elements ' serr must be able to hold 256 bytes

выражение "по аналогии с другими" как раз подразумевает, что вникать в каждую букву не требуется, достаточно посмотреть на соседние функции и сделать аналогично
DoReMi вне форума   Ответить с цитированием
Старый 10.01.2024, 15:33   #652
Les
Собеседник
 
Регистрация: 08.12.2018
Сообщения: 153
Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000Les репутация выше +2000
По умолчанию

мне не удалось запустить эту функцию...уж не знаю по какой причине, может потому что запускаю (в виртуалке) на winxp (Excel2000, VB 6.0), а сам расчет планетоцентрических эфемерид с использованием функции swe_calc_pctr() появился на 20 лет позднее в октябре 2020 года

вот здесь можно взять декларации и последние версии .dll
https://github.com/aloistr/swisseph/...ter/windows/vb
Les вне форума   Ответить с цитированием
Ответ


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

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

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


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


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