Octahedron meetkunde

Moderators: dirkwb, Xilvo

Reageer
Gebruikersavatar
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:
Afbeelding

Gebruikersavatar
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 :)

Reageer