Jag räknade ut det på följande sätt:
Bakgrund: beräkningarna utnyttjar ett intuitivt antagande
begrepp:
- vid kortaste avståndet mellan två linjer i rummet, mäts avståndet mellan en punkt p1 på första linjen L1 och en punkt p2 på andra linjen L2
- streckan mellan p1 och p2 definierar ett linjesegment LS
intuitivt antagande
min intuition säger mig att, om L1 och L2 är icke-parallella och | LS | är kortaste avståndet mellan L1 och L2, så är
- LS vinkelrät mot både L1 och L2
- inga andra linjesegment mellan godtyckliga punkter på L1 och L2 vinkelräta mot båda linjerna
Argument för att min intuition har logiskt stöd.
Om LS ej vore vinkelrät, så skulle LS's ena ändpunkt kunna förflyttas, medan den andra ändpunkten är fix, på ett sådant sätt att LS vinkel närmar sig 90 grader.
Men en sådan förflyttning, innebär att avståndet (LS längd) minskar, vilket motsägs av att p1 och p2 är de närmaste punkterna. Alltså är antagandet att LS kan löpa längs ena linjen så att vinkeln närmar sig 90 grader falskt, alltså måste LS vara 90 grader i p1-p2
beräkning:
strategi:
- hitta en vektor Vn som är vinkelrät mot L1 och L2
- bestäm en vektorekvation för linjesegmentet LS
- hitta det unika punktparet P1 och P2, så att linjesegmenet blir parallellt med Vn
- bestäm avståndet mellan P1 och P2, dvs linjesegmentets längd. Med stöd av intuition är detta avstånd då det minimala mellan linjerna L1 och L2
algoritm:
steg 1: Hitta en vektor Vn som är vinkelrät mot L1 och L2
linjen L1 är parallell med vektorn V1 = (1,1,1)
linjen L2 är parallell med vektorn V2 = (2,-1,0)
(normal)vektorn Vn är vinkelrät mot både V1 och V2
Vn kan härledas med vektorprodukt
v1 = (a,b,c)
v2 = (A,B,C)
normal
= v1 x v2
= (a,b,c) x (A,B,C)
= (bC-cB, cA-aC, aB-bA)
med de aktuella värdena insatta fås
V1 = (1,1,1)
V2 = (2,-1,0)
Vn
= V1 x V2
= (1,1,1) x (2,-1,0)
= (1*0-1*(-1), 1*2-1*0, 1*(-1)-1*2)
= (1,2,-3)
Vn = (1,2,-3)
steg 2: Bestäm en vektorekvation för linjesegmentet LS
punkt P1 på L1: (1,2,3) + a(1,1,1)
punkt P2 på L2: (1,0,1) + b(2,-1,0)
Har man en sådan funktion behöver man ju inte göra mer än sätta in värden för att ta reda på avståndet mellan två linjer.
Men om man nu har en funktion som beskriver avståndet som en funktion av en (två?) variabler/parametrar så blir det väl ett minimiseringsproblem som enklast löses genom att hitta extrempunkter (⇒derivering)?
Men om man nu har en funktion som beskriver avståndet som en funktion av en (två?) variabler/parametrar så blir det väl ett minimiseringsproblem som enklast löses genom att hitta extrempunkter (⇒derivering)?
En annan metod är att inse att de två linjerna kan bäddas in i två parallella plan och att avståndet mellan linjerna blir samma som avståndet mellan planen.
Den gemensamma normalen till de två planen är vinkelrät mot båda linjerna. För att få fram normalen beräknar vi således kryssprodukten (här betecknad med #) av riktningsvektorerna för de två linjerna:
(1, 1, 1) # (2, -1, 0) = (1*(-1)-1*0, 1*2-1*0, 1*(-1)-1*2) = (-1, 2, -3)
En enhetsnormal till planen ges av
n = (-1, 2, -3) / |(-1, 2, -3)| = (-1, 2, -3) / √14
Planen har ekvationerna (* står för skalärprodukt/inre produkt)
P1: n * (x, y, z) = C1
P2: n * (x, y, z) = C2
där C1 och C2 är konstanter som skall bestämmas:
Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!