Vaststellen welke hoek bij sinus hoort.
- Berichten: 342
Re: Vaststellen welke hoek bij sinus hoort.
Ik ben hier even naar aan het kijken (en van alles over het astronomisch coördinaten stelsel aan het leren) en ik denk dat er nog twee stukjes informatie missen.
Het horizontale coördinaten stelsel is een lokaal assenstelsel dat gebaseerd is op waar je op dat moment bent en hoe laat het is. Namelijk waar t.o.v. jou noord is (Azimuth) en hoe hoog boven de horizon het object is (Altitude). Het equatoriale coördinaten systeem is gebaseerd op het zonnestelsel en is daarmee onafhankelijk van tijd en plaats.
Dus wat er mist is tijd en plaats. Als dat niet op een of andere manier in je formules zit zal je nooit een juiste transformatie kunnen maken. Het lijkt me dus dat de formule die je hierboven geeft veel te simpel is.
Hier is een online tool dat deze transformatie voor je kan doen. Dat is iig een goede check.
https://frostydrew.org/utilities.dc/con ... ordinates/
Er zijn blijkbaar ook apps op je telefoon die dit kunnen:
https://astrobackyard.com/astronomy-app ... targazing/
Verder is de transformatie vrij ingewikkeld merk ik (omdat het dus ook van tijd en plaats afhangt), dus ik ga nu niet een hele tool in elkaar bouwen die deze transformatie kan doen. Bovendien hebben vele mensen dit al een keer voor je gedaan en moet er online wel veel te vinden zijn. Maar dat kan ik niet voor je doen omdat ik niet weet waar je precies naar opzoek bent.
Het horizontale coördinaten stelsel is een lokaal assenstelsel dat gebaseerd is op waar je op dat moment bent en hoe laat het is. Namelijk waar t.o.v. jou noord is (Azimuth) en hoe hoog boven de horizon het object is (Altitude). Het equatoriale coördinaten systeem is gebaseerd op het zonnestelsel en is daarmee onafhankelijk van tijd en plaats.
Dus wat er mist is tijd en plaats. Als dat niet op een of andere manier in je formules zit zal je nooit een juiste transformatie kunnen maken. Het lijkt me dus dat de formule die je hierboven geeft veel te simpel is.
Hier is een online tool dat deze transformatie voor je kan doen. Dat is iig een goede check.
https://frostydrew.org/utilities.dc/con ... ordinates/
Er zijn blijkbaar ook apps op je telefoon die dit kunnen:
https://astrobackyard.com/astronomy-app ... targazing/
Verder is de transformatie vrij ingewikkeld merk ik (omdat het dus ook van tijd en plaats afhangt), dus ik ga nu niet een hele tool in elkaar bouwen die deze transformatie kan doen. Bovendien hebben vele mensen dit al een keer voor je gedaan en moet er online wel veel te vinden zijn. Maar dat kan ik niet voor je doen omdat ik niet weet waar je precies naar opzoek bent.
-
- Berichten: 463
Re: Vaststellen welke hoek bij sinus hoort.
@ irArjan:
Tijd en lengtegraad zitten in de uurhoek (Hour Angle).
Missen we alleen nog de breedtegraad φ, in Nederland/Belgie rond de 51 a 52 graden.
De transformatie formules vallen mee, zie bijvoorbeeld
https://aa.quae.nl/en/reken/hemelpositie.html#1_10
@ REND:
Mocht je een en ander in een eigen programma willen programeren, dan kan je mogelijk onderstaande code gebruiken, en met name de transformatie-functies Hd2Ah() en Ah2Hd() hierin:
(de goniometrische functies eindigend op 'd' werken in graden;
Azimuth A is gedefinieerd als op bovenstaande site, Azimuth A-accent is jouw Azimuth;
via de atan2() functie kom je goed uit in het hele 0 .. 360 graden gebied)
en hier de volledige output:
en samengevat:
NOOT: ik heb breedtegraad = 51 graden gebruikt en kom daarmee redelijk in de buurt van jouw waarden.
Alleen de hoogte h (=altitude) van mirfak wijkt nogal af (ik kom 20 graden lager uit dan jij).
Zit er bij jou of bij mij iets mis?
Tijd en lengtegraad zitten in de uurhoek (Hour Angle).
Missen we alleen nog de breedtegraad φ, in Nederland/Belgie rond de 51 a 52 graden.
De transformatie formules vallen mee, zie bijvoorbeeld
https://aa.quae.nl/en/reken/hemelpositie.html#1_10
@ REND:
Mocht je een en ander in een eigen programma willen programeren, dan kan je mogelijk onderstaande code gebruiken, en met name de transformatie-functies Hd2Ah() en Ah2Hd() hierin:
(de goniometrische functies eindigend op 'd' werken in graden;
Azimuth A is gedefinieerd als op bovenstaande site, Azimuth A-accent is jouw Azimuth;
via de atan2() functie kom je goed uit in het hele 0 .. 360 graden gebied)
Code: Selecteer alles
\\ breedtegraad waarnemer (default = 52 graden)
phi=52;
\\ zet breedtegraad waarnemer:
setphi(p)={
phi=p;
}
\\ (Hour Angle, Declitation) to (Azimuth, Altitude):
Hd2Ah(H,d)={
h=asind(sind(phi)*sind(d)+cosd(phi)*cosd(d)*cosd(H));
A=atan2d(sind(H), cosd(H)*sind(phi)-tand(d)*cosd(phi));
}
\\ (Azimuth, Altitude) to (Hour Angle, Declitation):
Ah2Hd(A,h)={
d=asind(sind(phi)*sind(h)-cosd(phi)*cosd(A)*cosd(h));
H=atan2d(sind(A)*cosd(h)*cosd(phi), sind(h)-sind(phi)*sind(d));
H=(H+360)%360; \\ atan2 loopt van -180 tot 180, we willen van 0 tot 360
}
\\ IN: st=ster, ha=HourAngle, delta=Declination:
\\ OUT: print de input, converteer naar Az/hoogte, converteer terug
test(st,ha,delta)={
print("--------------------------------------------");
print("HA = ",ha);
print("Decl = ", delta);
print("--------------------------------------------");
Hd2Ah(ha,delta);
print("azimuth A = ",A); \\ Azimuth A: N=-180, O=-90, Z=0, W=90
Aacc=(A+180)%360; \\ A-accent : N=0, O=90, Z=180, W=270
print("azimuth A' = ",Aacc);
print("altitude h = ",h);
print("--------------------------------------------");
Ah2Hd(A,h); \\ terugrekenen vanuit Azimuth A
print("H = ",H);
print("d = ",d);
print("--------------------------------------------");
Ah2Hd(Aacc-180,h); \\ terugrekenen vanuit Azimuth A-accent
print("H = ",H);
print("d = ",d);
print("--------------------------------------------");
printf("%-12s %10.6f %10.6f %10.6f %10.6f %10.6f %10.6f\n",st,ha,delta,Aacc,h,H,d);
print("--------------------------------------------");
}
\\ MAIN PROGRAM:
{
\\ zet breedtegraad waarnemer op 51 graden:
setphi(51);
\\ test de hele tabel:
test("polaris", 254.5625, 89.3556);
test("mirfak", 254.9542, 49.9372);
test("sadalmelik", 332.0458, -0.2142);
test("albaldah", 16.5292 , -20.9883);
test("arcturus", 95.1250 , 19.0683);
test("alioth", 111.5208 , 55.8425);
test("menkulinan", 215.6833 , 44.9483);
}
Code: Selecteer alles
--------------------------------------------
HA = 254.56250000000000000000000000000000000
Decl = 89.355600000000000000000000000000000000
--------------------------------------------
azimuth A = -179.01667219866287906626521251801419720
azimuth A' = 0.98332780133712093373478748198580280453
altitude h = 50.824330048414265745721241381717608051
--------------------------------------------
H = 254.56250000000000000000000000000000004
d = 89.355599999999999999999999999999999999
--------------------------------------------
H = 254.56250000000000000000000000000000004
d = 89.355599999999999999999999999999999999
--------------------------------------------
polaris 254.562500 89.355600 0.983328 50.824330 254.562500 89.355600
--------------------------------------------
--------------------------------------------
HA = 254.95420000000000000000000000000000000
Decl = 49.937200000000000000000000000000000000
--------------------------------------------
azimuth A = -134.53193598288672664008694405389617722
azimuth A' = 45.468064017113273359913055946103822781
altitude h = 29.316511002849151948083440606335438231
--------------------------------------------
H = 254.95420000000000000000000000000000000
d = 49.937200000000000000000000000000000000
--------------------------------------------
H = 254.95420000000000000000000000000000000
d = 49.937200000000000000000000000000000000
--------------------------------------------
mirfak 254.954200 49.937200 45.468064 29.316511 254.954200 49.937200
--------------------------------------------
--------------------------------------------
HA = 332.04580000000000000000000000000000000
Decl = -0.21420000000000000000000000000000000000
--------------------------------------------
azimuth A = -34.236501604075829416576546707616868436
azimuth A' = 145.76349839592417058342345329238313156
altitude h = 33.571947803753828511669517841438798055
--------------------------------------------
H = 332.04580000000000000000000000000000000
d = -0.21420000000000000000000000000000000000
--------------------------------------------
H = 332.04580000000000000000000000000000000
d = -0.21420000000000000000000000000000000000
--------------------------------------------
sadalmelik 332.045800 -0.214200 145.763498 33.571948 332.045800 -0.214200
--------------------------------------------
--------------------------------------------
HA = 16.529200000000000000000000000000000000
Decl = -20.988300000000000000000000000000000000
--------------------------------------------
azimuth A = 16.088094854991123305234177231918503058
azimuth A' = 196.08809485499112330523417723191850306
altitude h = 16.554658538899145522353225526112936660
--------------------------------------------
H = 16.529200000000000000000000000000000000
d = -20.988300000000000000000000000000000000
--------------------------------------------
H = 16.529199999999999999999999999999999999
d = -20.988300000000000000000000000000000000
--------------------------------------------
albaldah 16.529200 -20.988300 196.088095 16.554659 16.529200 -20.988300
--------------------------------------------
--------------------------------------------
HA = 95.125000000000000000000000000000000000
Decl = 19.068300000000000000000000000000000000
--------------------------------------------
azimuth A = 106.07196861293817802377850081410530732
azimuth A' = 286.07196861293817802377850081410530732
altitude h = 11.581279231587952647235167122745254693
--------------------------------------------
H = 95.125000000000000000000000000000000000
d = 19.068300000000000000000000000000000000
--------------------------------------------
H = 95.125000000000000000000000000000000000
d = 19.068300000000000000000000000000000000
--------------------------------------------
arcturus 95.125000 19.068300 286.071969 11.581279 95.125000 19.068300
--------------------------------------------
--------------------------------------------
HA = 111.52080000000000000000000000000000000
Decl = 55.842500000000000000000000000000000000
--------------------------------------------
azimuth A = 142.50486330831710851144738609582616100
azimuth A' = 322.50486330831710851144738609582616100
altitude h = 30.894954833436083814628076440361686474
--------------------------------------------
H = 111.52080000000000000000000000000000000
d = 55.842500000000000000000000000000000000
--------------------------------------------
H = 111.52080000000000000000000000000000000
d = 55.842500000000000000000000000000000000
--------------------------------------------
alioth 111.520800 55.842500 322.504863 30.894955 111.520800 55.842500
--------------------------------------------
--------------------------------------------
HA = 215.68330000000000000000000000000000000
Decl = 44.948300000000000000000000000000000000
--------------------------------------------
azimuth A = -155.14872412208052258469139638962715360
azimuth A' = 24.851275877919477415308603610372846401
altitude h = 10.792511164194092485692305528807194392
--------------------------------------------
H = 215.68330000000000000000000000000000000
d = 44.948300000000000000000000000000000000
--------------------------------------------
H = 215.68330000000000000000000000000000000
d = 44.948300000000000000000000000000000000
--------------------------------------------
menkulinan 215.683300 44.948300 24.851276 10.792511 215.683300 44.948300
--------------------------------------------
Code: Selecteer alles
polaris 254.562500 89.355600 0.983328 50.824330 254.562500 89.355600
mirfak 254.954200 49.937200 45.468064 29.316511 254.954200 49.937200
sadalmelik 332.045800 -0.214200 145.763498 33.571948 332.045800 -0.214200
albaldah 16.529200 -20.988300 196.088095 16.554659 16.529200 -20.988300
arcturus 95.125000 19.068300 286.071969 11.581279 95.125000 19.068300
alioth 111.520800 55.842500 322.504863 30.894955 111.520800 55.842500
menkulinan 215.683300 44.948300 24.851276 10.792511 215.683300 44.948300
Alleen de hoogte h (=altitude) van mirfak wijkt nogal af (ik kom 20 graden lager uit dan jij).
Zit er bij jou of bij mij iets mis?
-
- Berichten: 13
Re: Vaststellen welke hoek bij sinus hoort.
Hallo irArjan,irArjan schreef: ↑zo 19 dec 2021, 15:15 Ik ben hier even naar aan het kijken (en van alles over het astronomisch coördinaten stelsel aan het leren) en ik denk dat er nog twee stukjes informatie missen.
Het horizontale coördinaten stelsel is een lokaal assenstelsel dat gebaseerd is op waar je op dat moment bent en hoe laat het is. Namelijk waar t.o.v. jou noord is (Azimuth) en hoe hoog boven de horizon het object is (Altitude). Het equatoriale coördinaten systeem is gebaseerd op het zonnestelsel en is daarmee onafhankelijk van tijd en plaats.
Dus wat er mist is tijd en plaats. Als dat niet op een of andere manier in je formules zit zal je nooit een juiste transformatie kunnen maken. Het lijkt me dus dat de formule die je hierboven geeft veel te simpel is.
.......
Bedankt voor de moeite.
De longitude , altitude en lokale sterrentijd komen voor en na deze berekeningen.
namelijk van RA naar HA en van HA naar RA.
Online tools helpen mij niet omdat ik dan een continue internet verbinding nodig heb en deze een handmatig over typen van de waarden zouden vereisen.
De post va RedCat biedt waarschijnlijk mogelijkheden, die ga ik proberen te implementeren.
Nogmaals dank voor je tijd.
Theo
-
- Berichten: 13
Re: Vaststellen welke hoek bij sinus hoort.
Er zat bij mij een foutje in
Ik heb je code omgeschreven naar python en zal die voor de volledigheid hieronder plaatsen.
De berekeningen komen hetzelfde uit als in je voorbeeld.
Het zal morgen (vanavond ) worden voor ik de kans krijg het te implementeren in de volledige code, daarna kan ik je terug melden of het inderdaad doet wat we verwachten.
Alvast bedankt voor de moeite,
Groet,
Theo
de python code:
Code: Selecteer alles
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import math
h = 0
A = 0
d = 0
H = 0
# breedtegraad waarnemer (default = 52 graden)
phi=51.2305555556;
# zet breedtegraad waarnemer:
def setphi(p):
phi=p
# (Hour Angle, Declitation) to (Azimuth, Altitude):
def Hd2Ah(H,d):
global h
global A
h= math.degrees(math.asin(math.sin(math.radians(phi))*math.sin(math.radians(d))+math.cos(math.radians(phi))*math.cos(math.radians(d))*math.cos(math.radians(H))))
A= math.degrees(math.atan2(math.sin(math.radians(H)), math.cos(math.radians(H))*math.sin(math.radians(phi))-math.tan(math.radians(d))*math.cos(math.radians(phi))))
# (Azimuth, Altitude) to (Hour Angle, Declitation):
def Ah2Hd(A,h): # nog schuiven met graden en radialen **************************************************
global d
global H
d= math.degrees(math.asin(math.sin(math.radians(phi))*math.sin(math.radians(h))-math.cos(math.radians(phi))*math.cos(math.radians(A))*math.cos(math.radians(h))))
H= math.degrees(math.atan2(math.sin(math.radians(A))*math.cos(math.radians(h))*math.cos(math.radians(phi)), math.sin(math.radians(h))-math.sin(math.radians(phi))*math.sin(math.radians(d))))
H=(H+360)%360; # atan2 loopt van -180 tot 180, we willen van 0 tot 360
# IN: st=ster, ha=HourAngle, delta=Declination:
# OUT: print de input, converteer naar Az/hoogte, converteer terug
def test(st,ha,delta):
print "--------------------------------------------"
print "HA = %s" %ha
print "Decl = %s"%delta
print "--------------------------------------------"
Hd2Ah(ha,delta)
print "azimuth A = %s"%A # Azimuth A: N=-180, O=-90, Z=0, W=90
Aacc=(A+180)%360 # A-accent : N=0, O=90, Z=180, W=270
print "azimuth A' = %s"%Aacc
print "altitude h = %s"%h
print "--------------------------------------------"
Ah2Hd(A,h) # terugrekenen vanuit Azimuth A
print "H = %s"%H
print "d = %d"%d
print "--------------------------------------------"
Ah2Hd(Aacc-180,h) # terugrekenen vanuit Azimuth A-accent
print "H = %s"%H
print "d = %s"%d
print "--------------------------------------------"
txt = "{%-12s} {%10.6f} {%10.6f} {%10.6f} {%10.6f} {%10.6f} {%10.6f}\n" %(st,ha,delta,Aacc,h,H,d)
print txt
print "--------------------------------------------"
# MAIN PROGRAM:
# zet breedtegraad waarnemer
setphi(phi)
# test de hele tabel:
test("polaris", 254.5625, 89.3556)
test("mirfak", 254.9542, 49.9372)
test("sadalmelik", 332.0458, -0.2142)
test("albaldah", 16.5292 , -20.9883)
test("arcturus", 95.1250 , 19.0683)
test("alioth", 111.5208 , 55.8425)
test("menkulinan", 215.6833 , 44.9483)
-
- Berichten: 13
Re: Vaststellen welke hoek bij sinus hoort.
Het lijkt goed te werken, volledig implementeren zal een paar avonden kosten.
Ik laat het resultaat nog weten.
Ik laat het resultaat nog weten.
-
- Berichten: 463
Re: Vaststellen welke hoek bij sinus hoort.
Hieronder een alternatieve Python codering, waarin ik de standaard goniometrische functies in graden heb gedefinieerd.
Je kan daarmee in het hele programma in graden blijven rekenen.
De omzettingsformules (H,d) ↔ (A,h) worden daardoor ook wat beter leesbaar.
Misschien kan je dit gebruiken in jouw code.
Verder heb ik van de omzettingsformules functies gemaakt, zodat je de globale variabelen niet meer nodig hebt.
PS: als je als gebruiker met de functie setphi(p) wil afwijken van de default breedtegraad van je waarnemingspositie, moet je phi in die functie wel laten verwijzen naar de globale phi.
Je kan daarmee in het hele programma in graden blijven rekenen.
De omzettingsformules (H,d) ↔ (A,h) worden daardoor ook wat beter leesbaar.
Misschien kan je dit gebruiken in jouw code.
Verder heb ik van de omzettingsformules functies gemaakt, zodat je de globale variabelen niet meer nodig hebt.
PS: als je als gebruiker met de functie setphi(p) wil afwijken van de default breedtegraad van je waarnemingspositie, moet je phi in die functie wel laten verwijzen naar de globale phi.
Code: Selecteer alles
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import math
# -----------------------------------------------------------------------------
# definieer de standaard goniometrische functies in graden:
def sind(x):
return math.sin(math.radians(x))
def cosd(x):
return math.cos(math.radians(x))
def tand(x):
return math.tan(math.radians(x))
def asind(x):
return math.degrees(math.asin(x))
def acosd(x):
return math.degrees(math.acos(x))
def atand(x):
return math.degrees(math.atan(x))
def atan2d(y, x):
return math.degrees(math.atan2(y, x))
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# breedtegraad waarnemer (default = 51.2305555556 graden)
phi = 51.2305555556
# zet breedtegraad waarnemer:
def setphi(p):
global phi
phi=p
# -----------------------------------------------------------------------------
# omzettingsformules (alles in graden):
# (Hour Angle, Declitation) to (Azimuth, Altitude):
def Hd2Ah(H,d):
h = asind(sind(phi)*sind(d) + cosd(phi)*cosd(d)*cosd(H))
A = atan2d(sind(H), cosd(H)*sind(phi) - tand(d)*cosd(phi))
return A, h
# (Azimuth, Altitude) to (Hour Angle, Declitation):
def Ah2Hd(A,h):
d = asind(sind(phi)*sind(h)-cosd(phi)*cosd(A)*cosd(h));
H = atan2d(sind(A)*cosd(h)*cosd(phi), sind(h)-sind(phi)*sind(d));
H = (H+360) % 360; # atan2 loopt van -180 tot 180, we willen van 0 tot 360
return H, d
# -----------------------------------------------------------------------------
# IN: st=ster, ha=HourAngle, delta=Declination:
# OUT: print de input, converteer naar Az/hoogte, converteer terug
def test(st,ha,delta):
print( "--------------------------------------------")
print( "HA = %s" %ha)
print( "Decl = %s" %delta)
print( "--------------------------------------------")
A, h = Hd2Ah(ha,delta)
print( "azimuth A = %s "%A) # Azimuth A: N=-180, O=-90, Z=0, W=90
Aacc = (A+180) % 360 # A-accent : N=0, O=90, Z=180, W=270
print( "azimuth A' = %s" %Aacc)
print( "altitude h = %s" %h)
print( "--------------------------------------------")
H, d = Ah2Hd(A,h) # terugrekenen vanuit Azimuth A
print( "H = %s" %H)
print( "d = %s" %d)
print( "--------------------------------------------")
H, d = Ah2Hd(Aacc-180,h) # terugrekenen vanuit Azimuth A-accent
print( "H = %s" %H)
print( "d = %s" %d)
print( "--------------------------------------------")
print("%-12s %10.6f %10.6f %10.6f %10.6f %10.6f %10.6f\n" %(st,ha,delta,Aacc,h,H,d))
print( "--------------------------------------------")
# MAIN PROGRAM:
# zet breedtegraad waarnemer
# setphi(51) # niet nodig als we de bovenaan gedefinieerde default waarde 51.2305555556 gebruiken
# test de hele tabel:
test("polaris", 254.5625, 89.3556)
test("mirfak", 254.9542, 49.9372)
test("sadalmelik", 332.0458, -0.2142)
test("albaldah", 16.5292 , -20.9883)
test("arcturus", 95.1250 , 19.0683)
test("alioth", 111.5208 , 55.8425)
test("menkulinan", 215.6833 , 44.9483)
-
- Berichten: 13
Re: Vaststellen welke hoek bij sinus hoort.
Het heeft even geduurd maar hierbij de bevestiging dat de integratie in het python script gelukt is.
RedCat, nogmaals bedankt voor de hulp
RedCat, nogmaals bedankt voor de hulp