Octahedron meetkunde
- Berichten: 35
Octahedron meetkunde
Graag zou ik wat hulp willen vragen bij het analyseren van een octaedrische of in ieder geval een "Square bipyramid" configuratie vanuit xyz data op een Mn2+ ion.
De belangrijkste vraag is in hoeverre de equatoriale punten in 1 vlak liggen, gedefinieerd vanuit de (gemiddelde) axiale vector ASN-MN-MET, de positie van MN is hoe dan ook altijd het zwaartepunt van de polyhedron.
1) Ik zou willen starten met het transleren van MN(x,y,z) naar MN(0,0,0), dus als de origin, dit is later handig voor vectorrekening bijvoorbeeld om hoeken uit te rekenen.
2) Nu kan ik de gemiddelde lengte tussen MN en de 4 equatoriale residueen uitrekenen met lengte=wortel(x2 + y2 + z2) en definieren als de 'circumsphere radius' (voor een octahedron)
3) Ik denk dat ik nu de spherical coordiantes (r, theta, phi) definieer ik volgens het natuurkundig stelsel
r ≥ 0
0° ≤ θ ≤ 180° (π rad) (elevatie, vanuit z-as, normaal rechtshandig XYZ stelsel ook wel sys1 vanaf nu)
-180° ≤ φ < 180° (2π rad) (azimut)
(omdat de python math module atan2 definitie van -pi tot pi loopt)
4) Nu wil ik een tweede stelsel definieeren met middeling van de axiale ASN-MN en MN-MET vectoren (ik bereken de hoek van de genormaliseerde vectoren en deel die door 2, dan pas ik die hoek toe op de originele MN-MET vector en zorg dat hij lengte circR heeft (delen door zijn magnitude voor univector dan maal circR), deze vector definieer ik als "upZAxis_sys2" deze definieert mijn equatoriaal vlak met elevatie = 90, azimut = [-180,180], sys2 heeft dezelfde origin als sys1, vrij belangrijk
5) Nu heb ik 2 spherical coordinate stelsels waarbij ik de een naar de ander zal moeten roteren waarbij (circR, theta-deltaT, phi-deltaP)_sys1 = (circR, theta, phi)_sys2
(beide toegepast of (upZAxis_sys2_x,upZAxis_sys2_y,upZAxis_sys2_z)_sys1 = (0,0,circR)_sys2 of simpelweg de hoek tussen z_sys1 en upZAxis_sys2?
6) En nu de 4 equatoriale punten, hun magnitude kunnen we herschalen naar circR en dan rekenen we dtheta uit om op elevatie = 90 te komen, dteta, dmagnitude, teta, magnitude en phi schrijven we naar een outputbestand en dteta en magnitude geven een residual error, dphi (azimut) is nog onbekend omdat deze relatief zijn t.o.v. van het volgende equatoriaal punt die gemiddeld 90 graden moet zijn,
om een octaedron te kunnen projecteren is dus een minimalisatie van 4 delta phi waarden nodig, met een minimale verplaatsing van alle punten links of rechtsom, ddphi(1-2)+ddphi(2-3)+ddphi(3-4)+ddphi(4-1)
dit is een interessant probleem in zichzelf en zal meerdere iteraties nodig hebben :
6b) (optioneel!)
voor 4 punten op een cirkel, zorg dat deze 90 graden van elkaar verwijderd zijn met een minimale ddphi (linksom of rechtsom, +/-phi)
ik heb een "cheaty", maar geen efficiente oplossing denk ik, die houd ik nog even voor mezelf en ik ben benieuwd naar jullie (algoritmische) strategieen.
7) klaar? phew...
Mijn systeem (voor t = 0 )
MNx 8.348031044
MNy 6.6200809479
MNz 5.675637722
ALAx 6.2171177864
ALAy 6.6142530441
ALAz 6.5126109123
ASPx 10.1697587967
ASPy 7.7796792984
ASPz 6.7679605484
WAZ1712x 9.8235721588
WAZ1712y 6.4752426147
WAZ1712z 3.8675944805
WAZ1713x 7.2086253166
WAZ1713y 5.1687812805
WAZ1713z 4.374317646
ASNx 8.6833314896
ASNy 5.1422762871
ASNz 7.3141093254
METx 7.8370909691
METy 8.4241666794
METz 3.549110651
- note: Eq (equatoriaal) met de klok mee zijn op volgorde, ofwel -ALA-ASP-WAZ1712-WAZ1713-.
Ik zou graag de coordinaten generen van de octaedrische (gelijke edge/rand lengte) of square bipyramid (waarbij de axialen verder weg mogen zijn, maar er nog steeds een equatoriaal vlak aanwezig is)
Alvast bedankt voor jullie constructie opmerkingen en tips!
Coordination view:
De belangrijkste vraag is in hoeverre de equatoriale punten in 1 vlak liggen, gedefinieerd vanuit de (gemiddelde) axiale vector ASN-MN-MET, de positie van MN is hoe dan ook altijd het zwaartepunt van de polyhedron.
1) Ik zou willen starten met het transleren van MN(x,y,z) naar MN(0,0,0), dus als de origin, dit is later handig voor vectorrekening bijvoorbeeld om hoeken uit te rekenen.
2) Nu kan ik de gemiddelde lengte tussen MN en de 4 equatoriale residueen uitrekenen met lengte=wortel(x2 + y2 + z2) en definieren als de 'circumsphere radius' (voor een octahedron)
3) Ik denk dat ik nu de spherical coordiantes (r, theta, phi) definieer ik volgens het natuurkundig stelsel
r ≥ 0
0° ≤ θ ≤ 180° (π rad) (elevatie, vanuit z-as, normaal rechtshandig XYZ stelsel ook wel sys1 vanaf nu)
-180° ≤ φ < 180° (2π rad) (azimut)
(omdat de python math module atan2 definitie van -pi tot pi loopt)
4) Nu wil ik een tweede stelsel definieeren met middeling van de axiale ASN-MN en MN-MET vectoren (ik bereken de hoek van de genormaliseerde vectoren en deel die door 2, dan pas ik die hoek toe op de originele MN-MET vector en zorg dat hij lengte circR heeft (delen door zijn magnitude voor univector dan maal circR), deze vector definieer ik als "upZAxis_sys2" deze definieert mijn equatoriaal vlak met elevatie = 90, azimut = [-180,180], sys2 heeft dezelfde origin als sys1, vrij belangrijk
5) Nu heb ik 2 spherical coordinate stelsels waarbij ik de een naar de ander zal moeten roteren waarbij (circR, theta-deltaT, phi-deltaP)_sys1 = (circR, theta, phi)_sys2
(beide toegepast of (upZAxis_sys2_x,upZAxis_sys2_y,upZAxis_sys2_z)_sys1 = (0,0,circR)_sys2 of simpelweg de hoek tussen z_sys1 en upZAxis_sys2?
6) En nu de 4 equatoriale punten, hun magnitude kunnen we herschalen naar circR en dan rekenen we dtheta uit om op elevatie = 90 te komen, dteta, dmagnitude, teta, magnitude en phi schrijven we naar een outputbestand en dteta en magnitude geven een residual error, dphi (azimut) is nog onbekend omdat deze relatief zijn t.o.v. van het volgende equatoriaal punt die gemiddeld 90 graden moet zijn,
om een octaedron te kunnen projecteren is dus een minimalisatie van 4 delta phi waarden nodig, met een minimale verplaatsing van alle punten links of rechtsom, ddphi(1-2)+ddphi(2-3)+ddphi(3-4)+ddphi(4-1)
dit is een interessant probleem in zichzelf en zal meerdere iteraties nodig hebben :
6b) (optioneel!)
voor 4 punten op een cirkel, zorg dat deze 90 graden van elkaar verwijderd zijn met een minimale ddphi (linksom of rechtsom, +/-phi)
ik heb een "cheaty", maar geen efficiente oplossing denk ik, die houd ik nog even voor mezelf en ik ben benieuwd naar jullie (algoritmische) strategieen.
7) klaar? phew...
Mijn systeem (voor t = 0 )
MNx 8.348031044
MNy 6.6200809479
MNz 5.675637722
ALAx 6.2171177864
ALAy 6.6142530441
ALAz 6.5126109123
ASPx 10.1697587967
ASPy 7.7796792984
ASPz 6.7679605484
WAZ1712x 9.8235721588
WAZ1712y 6.4752426147
WAZ1712z 3.8675944805
WAZ1713x 7.2086253166
WAZ1713y 5.1687812805
WAZ1713z 4.374317646
ASNx 8.6833314896
ASNy 5.1422762871
ASNz 7.3141093254
METx 7.8370909691
METy 8.4241666794
METz 3.549110651
- note: Eq (equatoriaal) met de klok mee zijn op volgorde, ofwel -ALA-ASP-WAZ1712-WAZ1713-.
Ik zou graag de coordinaten generen van de octaedrische (gelijke edge/rand lengte) of square bipyramid (waarbij de axialen verder weg mogen zijn, maar er nog steeds een equatoriaal vlak aanwezig is)
Alvast bedankt voor jullie constructie opmerkingen en tips!
Coordination view:
- Berichten: 35
Re: Octahedron meetkunde
Betreffende 6b, de 'cheaty' manier is om een 90-90-90-90 graden spherisch stelsel te definieeren (binnen coordinatie sys2), die te roteren over 1 graad in iedere iteratie dan de ddphi somatie te berekenen, doe dit voor 89 iteraties en je hebt je minimum ddphi somatie.
Dit is cheaty omdat het geen algemene wiskundige procedure beschrijft, maar eerder een fitting procedure.
Een alternatief idee waarvan ik geen idee heb of het werkt is linksom draaien, rechtsom draaien, linksom draaien etc.
waarbij je gebruikt dat dphi1 == dphi2 moet worden, waarbij iedere keer 1 vast punt word genomen. Van grote hoek naar kleine hoek en uiteindelijk is dphi1=dphi2=dphi3=dphi4=90 graden. Ik ben geen wiskundige, maar misschien is het idee van deze convergentie duidelijk.
En heel misschien zou het werken, maar ik ga liever voor veiligere, cheaty methode. Als ik tijd over heb (niet erg waarschijnlijk) ga ik het wel uittesten, een leuke oefening in ieder geval. Voel je vrij om dit voor mij te proberen, ik ben benieuwd
Dit is cheaty omdat het geen algemene wiskundige procedure beschrijft, maar eerder een fitting procedure.
Een alternatief idee waarvan ik geen idee heb of het werkt is linksom draaien, rechtsom draaien, linksom draaien etc.
waarbij je gebruikt dat dphi1 == dphi2 moet worden, waarbij iedere keer 1 vast punt word genomen. Van grote hoek naar kleine hoek en uiteindelijk is dphi1=dphi2=dphi3=dphi4=90 graden. Ik ben geen wiskundige, maar misschien is het idee van deze convergentie duidelijk.
En heel misschien zou het werken, maar ik ga liever voor veiligere, cheaty methode. Als ik tijd over heb (niet erg waarschijnlijk) ga ik het wel uittesten, een leuke oefening in ieder geval. Voel je vrij om dit voor mij te proberen, ik ben benieuwd