Plücker-koordinater

Från testwiki
Hoppa till navigering Hoppa till sök

Plücker-koordinater[1] är en typ av homogena[2] tredimensionella linjekoordinater som används inom analytisk och projektiv geometri. De är uppkallade efter Julius Plücker som införde dem i Neue Geometrie des Raumes gegründet auf die Betrachtung der geraden Linie als Raumelement 1868.[3]. De är en föregångare till, och ett specialfall av, Grassmann-koordinater. Praktisk användning har de idag inom datorgrafik och robotik.

Till antalet är koordinaterna sex stycken: de tre första definierar en riktningsvektor för linjen och de tre avslutande definierar origos fotpunkt på linjen med hjälp av riktningsvektorns moment i origo.

Bakgrund och definition

Figur 1.
𝐦=𝐫×𝐝.

En rät linje i ett tredimensionellt rum kan entydigt beskrivas med hjälp av en riktningsvektor, 𝐝 i figur 1, och en punkt, exempelvis X, på linjen. Detta kräver sex koordinater, tre för riktningsvektorn och tre för punkten.[4] Linjen förändras inte av riktningsvektorns längd (det påverkar bara skalan) och om man multiplicerar koordinaterna för vektorn med samma tal (skilt från noll) så förändras bara vektorns längd, men inte dess riktning. Multiplicerar man däremot alla koordinaterna för den valda punkten på linjen med ett tal (skilt från ett) så flyttas punkten bort från linjen (med mindre än att linjen går genom origo). För att råda bot på detta valde Plücker att i stället använda kryssprodukten (vektorprodukten) 𝐦 mellan 𝐫, ortsvektorn från origo O till dess fotpunkt P på linjen, och 𝐝, riktningsvektorn, vilket ger det moment som riktningsvektorn utövar på origo. Men om man multiplicerar alla koordinaterna i denna vektor med samma tal påverkas endast dess längd och koordinaterna för momentvektorn är således homogena - och tillika homogena med linjens riktningsvektor om denna multipliceras med samma tal. På detta sätt har vi fått sex koordinater som är homogena och inte ändrar linjens läge eller riktning om man multiplicerar alla sex med samma tal (skilt från noll).

De sex Plücker-kordinaterna för linjen genom punkterna X och Y:

(p01:p02:p03:p23:p31:p12) där
𝐝=(p01:p02:p03) och 𝐦=(p23:p31:p12)

erhålles genom:

pjk=|xjyjxkyk|=xjykxkyj

där x0 och y0 är skalningsfaktorn för respektive punkt, Om x0=y0=1 har vi:

𝐋=(𝐝:𝐦)=(y1x1:y2x2:y3x3:x2y3x3y2:x3y1x1y3:x1y2x2y1)[5]

Om 𝐦=𝟎 och 𝐝𝟎 så betecknar koordinaterna en linje som går genom origo, ty 𝐦=𝐝×𝐫=𝟎 innebär att 𝐫=𝟎.

Om 𝐝=𝟎 och 𝐦𝟎 så betecknar koordinaterna linjen i oändligeten för alla de linjer som ligger i det plan som är normalplan till 𝐦 och går genom origo, ty:

limt(𝐝t,𝐦)=(𝟎,𝐦).

Om 𝐝=𝟎 och 𝐦=𝟎 så betecknar koordinaterna ingen linje alls och (0:0:0:0:0:0) är nonsens.

"Robotik"

Plücker-koordinater kan också ses som en axel genom origo vars riktning är definierad av 𝐦. Kring axeln och i axelns normalplan genom origo roterar en punkt P på avståndet 𝐫, vilket bestäms av kvoten mellan ||𝐦|| och ||𝐝|| (se nedan). Riktningen som anges av 𝐝 är lika med tangentens till cirkeln med radien 𝐫 kring origo i punkten P, det vill säga momentanrörelsen i P.

Den här typen av rörelser är nära besläktade med hur en arm på en människa eller industrirobot fungerar. Axelleden motsvarar origo och handen motsvarar P. Genom att böja armen i armbågsleden kan 𝐫 varieras och med axelleden kan riktningen på 𝐦 varieras. Genom rotation i axeln kan handen P fås att beskriva en cirkel i normalplanet till 𝐦 med radien 𝐫 kring origo/axeln. Handens momentana rörelseriktning ges av 𝐝.[6]

Eftersom 𝐝𝐦 så är skalärprodukten 𝐝𝐦=0, vilket innebär att:

p01p23+p02p31+p03p12=0.

Detta är det så kallade "Plücker-förhållandet".

Eftersom koordinaterna dessutom är homogena, det vill säga s(𝐝:𝐦)=(s𝐝:s𝐦)=(𝐝:𝐦), där s0 är ett godtyckligt reellt tal, så kan två av koordinaterna skrivas som en linjärkombination av de fyra övriga.

Diverse

Eftersom OZ=OP+PZ=𝐫+λ𝐝 där Z är en godtycklig punkt på linjen, och OZ×𝐝=(𝐫+λ𝐝)×𝐝=𝐫×𝐝+0=𝐦 får vi att en punkt Z ligger på linjen 𝐋 om och endast om OZ×𝐝=𝐦.

Kvoten mellan momentvektorns norm och riktningsvektorns norm ger ||𝐫||=||𝐦||||𝐝|| eftersom ||𝐦||=||𝐫×𝐝||=||𝐫||||𝐝||sin90o=||𝐫||||𝐝||1, det vill säga avståndet från origo till den närmaste punkten på linjen. Om man vill beräkna det närmaste avståndet från linjen till en godtycklig punkt O kan man göra den till "origo" i ett "nytt" koordinatsystem med samma axelriktningar och beräkna linjens momentvektor med avseende på O i stället, genom att använda OX=OXOO och OY=OYOO för (p'23:p'31:p'12) vilket ger ||𝐫𝐎||=||𝐦𝐎||||𝐝𝐎||=||𝐦𝐎||||𝐝||.

Men en enklare beräkning utam basbyte kan göras eftersom momentet i O är lika med:

𝐦𝐎=(𝐫OO)×𝐝=𝐫×𝐝OO×𝐝=𝐦OO×𝐝

vilket ger att avståndet från O till 𝐋 är ||𝐫𝐎||=||𝐦OO×𝐝||||𝐝||.

Låt P vara fotpunkten till O𝐋 och 𝐝𝐞=𝐝||𝐝||, det vill säga en enhetsvektor. Då är OPOO ortogonal mot 𝐝. Sålunda har vi (med 𝐦𝐎𝐞 som momentvektor för 𝐝𝐞O):

𝐝𝐞×𝐦𝐎𝐞=𝐝𝐞×((OPOO)×𝐝𝐞)=OPOO[7]
OP=OO+𝐝𝐞×𝐦𝐎𝐞, vilket ger oss koordinaterna för P.

Två linjer

Reciprok produkt

Om vi har två linjer 𝐋=(𝐝𝐞:𝐦𝐞) och 𝐋=(𝐝'𝐞:𝐦'𝐞) så gäller enligt ovan att momentvektorn för linjen 𝐋 i en punkt Q𝐋 ges av 𝐦𝐐𝐞=𝐦𝐞OQ×𝐝𝐞. Denna momentvektors projektion på linjen 𝐋 ges av:[8]

𝐝'𝐞𝐦𝐐𝐞=𝐝'𝐞(𝐦𝐞OQ×𝐝𝐞)=𝐝'𝐞𝐦𝐞𝐝'𝐞(OQ×𝐝𝐞)=𝐝'𝐞𝐦𝐞(𝐝'𝐞×OQ)𝐝𝐞=𝐝'𝐞𝐦𝐞+(OQ×𝐝'𝐞)𝐝𝐞=𝐝'𝐞𝐦𝐞+𝐝𝐞(OQ×𝐝'𝐞)=𝐝'𝐞𝐦𝐞+𝐝𝐞𝐦'𝐞

Det torde vara uppenbart att detsamma gäller för projektionen av 𝐦'𝐐𝐞 på linjen 𝐋 och således har vi:

𝐝'𝐞𝐦𝐐𝐞=𝐝𝐞𝐦'𝐐𝐞=𝐝'𝐞𝐦𝐞+𝐝𝐞𝐦'𝐞

Detta förhållande kallas linjernas Plücker-koordinaters reciproka produkt och betecknas med en asterisk som exempelvis 𝐋*𝐋 eller (𝐝:𝐦)*(𝐝:𝐦).

Parallella linjer

Om och endast om två linjer är parallella är kryssprodukten av deras riktningsvektorer lika med nollvektorn:

𝐝×𝐝=𝟎

Om 𝐋 och 𝐋 är parallella är varje normalplan till den ena linjen också normalplan till den andra. Betrakta det normalplan till linjerna som går genom origo. Fotpunkterna till origo på linjerna är lika med linjernas skärningspunkter med planet och således ligger både 𝐦 och 𝐦 i detta plan ftersom det är normalplan till 𝐝 och 𝐝. Om 𝐝𝐞 och 𝐝'𝐞 är enhetsvektorer så att 𝐝𝐞=𝐝'𝐞=𝐝||𝐝||=𝐝||𝐝||=𝐝s||𝐝|| har vi att 𝐦𝐞=𝐦||𝐝|| och 𝐦'𝐞=𝐦||𝐝||=𝐦s||𝐝||. Vi har även att 𝐫=𝐝𝐞×𝐦𝐞 och 𝐫=𝐝'𝐞×𝐦'𝐞. Avståndet mellan linjerna är då:

𝐫𝐫=𝐝𝐞×𝐦𝐞𝐝'𝐞×𝐦'𝐞=𝐝𝐞×𝐦𝐞𝐝𝐞×𝐦'𝐞=𝐝𝐞×(𝐦𝐞𝐦'𝐞)=
=𝐝||𝐝||×(𝐦||𝐝||𝐦s||𝐝||)=𝐝||𝐝||×(𝐦𝐦/s)||𝐝||
Avståndet mellan två parallella linjer är 𝐫𝐫=𝐝×(𝐦𝐦/s)||𝐝||2, där s=||𝐝||||𝐝||[9].

Den reciproka produkten för parallella linjer är noll eftersom både 𝐝𝐦 (vilket innebär att 𝐝𝐦=0) och 𝐝𝐦 (vilket innebär att 𝐝𝐦=0).

Skeva linjer

Figur 2.

Om linjerna inte är parallella kan de antingen ligga i samma plan, vara koplanära, eller ej. Är de koplanära skär de varandra i en finit punkt, annars är de skeva. Om de är skeva så ligger de i två olika, men inbördes parallella, plan som spänns upp av de båda linjernas riktingsvektorer 𝐝 och 𝐝 samt en valfri punkt på vardera linjen. Om man parallellprojicerar vardera linjen på den andra linjens plan i normalriktningen till de båda planen kommer dessa projicerade linjer att skära de givna linjerna i två punkter, vilka vi i enlighet med figur 2 kallar P och P. Mellan dessa båda skärningspunkter går "den gemensamma normalen" PP till de båda linjerna. Eftersom denna är vinkelrät mot 𝐋 i P och mot 𝐋 i P är avståndet ||PP||=||𝐫𝐫|| lika med det kortaste avståndet mellan linjerna.

Om 𝐝𝐞 är en enhetsvektor har vi om vi betraktar momentet 𝐦𝐏 för en punkt på 𝐋 i förhållande till P att

𝐦𝐏=PP×𝐝𝐞=(𝐫𝐫)×𝐝𝐞=
=𝐫×𝐝𝐞𝐫×𝐝𝐞=𝐦𝐞𝐫×𝐝𝐞

Eftersom 𝐝𝐞 är en enhetsvektor så är ||𝐦𝐏||=||PP||. Om vi kallar vinkeln från 𝐝𝐞 till 𝐝'𝐞 för α och då 𝐝𝐞𝐦𝐏 och då dessutom 𝐝𝐞 och 𝐝'𝐞 inte är parallella (alltså är sinα0) har vi:

𝐝'𝐞𝐦𝐏=1||𝐦𝐏||cos(α90o)=||𝐦𝐏||sinα.
||PP||=||𝐦𝐏||=|𝐝'𝐞𝐦𝐏||sin(α)|=|𝐝'𝐞𝐦𝐏|||𝐝𝐞×𝐝'𝐞||=|𝐝'𝐞(𝐦𝐞𝐫×𝐝𝐞)|||𝐝𝐞×𝐝'𝐞||=
=|𝐝'𝐞𝐦𝐞𝐝'𝐞(𝐫×𝐝𝐞)|||𝐝𝐞×𝐝'𝐞||=|𝐝'𝐞𝐦𝐞(𝐝'𝐞×𝐫)𝐝𝐞|||𝐝𝐞×𝐝'𝐞||=|𝐝'𝐞𝐦𝐞+𝐦'𝐞𝐝𝐞|||𝐝𝐞×𝐝'𝐞||
Avståndet mellan två skeva linjer är ||PP||=|(𝐝:𝐦)*(𝐝:𝐦)|||𝐝𝐞×𝐝'𝐞||=|(𝐝:𝐦)*(𝐝:𝐦)||sinα|, där α är vinkeln mellan linjernas riktningsvektorer.

Detta innebär även att om den reciproka produkten är lika med noll för två icke-parallella linjer så är avståndet mellan linjerna lika med noll och de ligger således i samma plan och skär varandra i P=P. Då även parallella linjer har en reciprok produkt som är lika med noll, ger detta:

Om och endast om två linjer ligger i samma plan, är koplanära, är deras reciproka produkt noll:

𝐋*𝐋=𝐝'𝐞𝐦𝐞+𝐝𝐞𝐦'𝐞=0

Enligt ovan är 𝐦𝐏=𝐦𝐞𝐫×𝐝𝐞 och ||𝐦𝐏||sinα=𝐦𝐏𝐝'𝐞, vilket innebär att

||𝐦𝐏||sinα=𝐦𝐏𝐝'𝐞=𝐦𝐞𝐝'𝐞(𝐫×𝐝𝐞)𝐝'𝐞=𝐝'𝐞𝐦𝐞+(𝐝𝐞×𝐫)𝐝'𝐞=
=𝐝'𝐞𝐦𝐞+𝐝𝐞(𝐫×𝐝'𝐞)=𝐝'𝐞𝐦𝐞+𝐝𝐞𝐦𝐞=(𝐝𝐞:𝐦𝐞)*(𝐝'𝐞:𝐦'𝐞)

Detta innebär i sin tur att om den recipoka produkten är negativ så är 180o<α<0o och om den är positiv så är 180o>α>0o. Således har vektorn 𝐝𝐞×𝐝'𝐞=||𝐝𝐞||||𝐝'𝐞||sinα samma riktning som PP=𝐫𝐫 om den reciproka produkten är positiv, medan de båda vektorerna har motsatt riktning om den är negativ.

Enhetsvektorn för den gemensamma normalen i riktningen PP, här kallad 𝐝𝐧𝐞, är således:

𝐝𝐧𝐞=𝐝𝐞×𝐝'𝐞||𝐝𝐞×𝐝'𝐞||

Vektorn PP kan alltså erhållas från: PP=sgn(sinα)||PP||𝐝𝐞×𝐝'𝐞||𝐝𝐞×𝐝'𝐞||=(𝐝𝐞:𝐦𝐞)*(𝐝'𝐞:𝐦'𝐞)||𝐝𝐞×𝐝'𝐞||𝐝𝐞×𝐝'𝐞||𝐝𝐞×𝐝'𝐞||=(𝐝𝐞:𝐦𝐞)*(𝐝'𝐞:𝐦'𝐞)||𝐝𝐞×𝐝'𝐞||2(𝐝𝐞×𝐝'𝐞)

Momentvektorn, 𝐦𝐧 för den gemensamma normalen kan fås genom att välja en punkt på denna, vi väljer P, och beräkna den, med hjälp av Lagranges formel och eftersom 𝐝'𝐧𝐞𝐝𝐞(𝐫𝐫)𝐝𝐞=𝐝'𝐧𝐞𝐝𝐞=0, enligt följande, med 𝐝𝐧=𝐝𝐞×𝐝'𝐞 som riktningsvektor för normalen:

𝐦𝐧=𝐫×𝐝𝐧=𝐫×(𝐝𝐞×𝐝'𝐞)=(𝐫𝐝𝐞)𝐝'𝐞(𝐫𝐝'𝐞)𝐝𝐞=
=((𝐫𝐫+𝐫)𝐝𝐞)𝐝'𝐞(𝐫𝐝'𝐞)𝐝𝐞=((𝐫𝐝𝐞)+(𝐫𝐫)𝐝𝐞)𝐝'𝐞(𝐫𝐝'𝐞)𝐝𝐞=
=(𝐫𝐝𝐞)𝐝'𝐞(𝐫𝐝'𝐞)𝐝𝐞=(𝐝'𝐞𝐝𝐞)𝐫𝐝𝐞×(𝐫×𝐝'𝐞)(𝐝'𝐞𝐝𝐞)𝐫+𝐝'𝐞×(𝐫×𝐝𝐞)=
=(𝐝'𝐞𝐝𝐞)𝐫𝐝𝐞×𝐦'𝐞(𝐝'𝐞𝐝𝐞)𝐫+𝐝'𝐞×𝐦𝐞=𝐦'𝐞×𝐝𝐞𝐦𝐞×𝐝'𝐞+(𝐝'𝐞𝐝𝐞)(𝐫𝐫)=
=𝐦'𝐞×𝐝𝐞𝐦𝐞×𝐝'𝐞(𝐝'𝐞𝐝𝐞)(𝐫𝐫))=𝐦'𝐞×𝐝𝐞𝐦𝐞×𝐝'𝐞(𝐝'𝐞𝐝𝐞)(𝐝𝐞:𝐦𝐞)*(𝐝'𝐞:𝐦'𝐞)||𝐝𝐞×𝐝'𝐞||2(𝐝𝐞×𝐝'𝐞)

Referenser och noter

  1. Grassmann-koordinater i Nationalencyklopedin
  2. I den ursprungliga meningen som varande skalbara utan att koordinaterna ändrar betydelse.
  3. Julius Pluecker, 1868, Neue Geometrie des Raumes gegründet auf die Betrachtung der geraden Linie als Raumelement, B.G. Teubner, Leipzig.
  4. Det räcker med fyra koordinater för att beskriva en linje i ett tredimensionellt rum, men Plücker-koordinater handlar inte om effektivitet, utan om användbarhet.
  5. (p23:p31:p12)=𝐦=𝐫×𝐝 fås ur:
    OY×OX=(OP+PY)×(OP+PX)=
    =OP×OP+OP×PX+PY×OP+PY×PX=
    =0+OP×PX+PY×OP+0=
    =OP×(PYPX)=OP×XY=𝐫×𝐝
    medan (p01:p02:p03)=𝐝=OYOX
  6. För denna typ av beräkningar kan såklart även sfäriska koordinater användas. Men Plücker-koordinater erbjuder en möjlighet att slippa en hel del trigonometri. Plücker-koordinater ger också en mer direkt väg att simultant korrigera "armens sträckning" för vinkelförändringen kring en förinställd axel och därmed åstadkomma en mer direkt och rätlinjig rörelse, i ställer för "knyckiga" vrid-höj-sträck-rörelser.
  7. Eftersom 𝐝𝐞 är en enhetsvektor blir resultatet en vektor av samma längd om OPOO vid "kryssmultiplikation", så 𝐝𝐞×((OPOO)×𝐝𝐞) medför bara att OPOO först "vrids" 90° kring 𝐝𝐞 och sedan "vrids" tillbaka.
  8. I andra steget utnyttjas a(b×c)=(a×b)c. Se Trippelprodukt.
  9. ||𝐝||||𝐝|| erhålls enkelt genom att dividera en av koordinaterna som är nollskild i 𝐝 med respektive koordinat i 𝐝 - så man behöver inte räkna ut ||𝐝||, ty s𝐝=(sp01:sp02:sp03).

Mall:Koordinater