Hej. Låt riktningsvektorerna vara n1 och n2. Hm, några grejer jag inte förstår. Skriv * istället för punkterna om du vill. Det är det som är grejen med vektor- och skalärprodukt. Är litet berusad, så det kan vara fel, men, ja det verkar som en rimligt svar. Men kolla först <b>om</b> de skär, så kan du kolla på var de skär sen. <b>Om du har två vektorer (a1 a2 ... an) och (b1 b2 ... bn), så finns det två olika sätt att definiera en produkt mellan dem, och båda "make sense" liksom. Därför kallar man båda för produkter. Ena sättet ger en vektor som svar. Det andra sättet ger en skalär (ett tal) som svar.</b> Korrekt, korrekt. Jag får skärningspunkten till Okej, Har testat det lite och det verkar fungera perfekt. Kör med den första, testade aldrig den andra. Precis, det är så jag tycker att den borde vara, även om jag fick den till den tidigare. Men som sagt gjorde jag nog ett teckenfel.Linje kollision.
Låt oss säga jag har två godtyckliga räta linjer i ett tre dimensionellt rum. Jag beskriver en linje med en "start" vektor (X,Y,Z) och en normaliserad riktnings vektor.
Hur ska jag nu gå tillväga om jag ska ta reda på om de kolliderar och var?. Jag läser just nu Matte D så jag skulle vara tacksam för ett svar utan för svåra matematiska termer.
Denna posten är en liten uppföljning på "Plan emot plan kollision", Jag har tänkt göra en algoritm som kollar om en triangel och en kub kolliderar (spelprojekt) och det visa sig att jag behövde mer hjälp på traven än bara plan emot plan kollision :-).Sv: Linje kollision.
Bilda vektorn n = n1 × n2,
där vektorprodukten u × v av u = (ux, uy, uz) och v = (vx, vy, vz) defineras genom
u × v = (uy vz - uz vy, uz vx - ux vz, ux vy - uy vx)
Om n = (0, 0, 0) är linjerna parallella och har antingen ingen eller ett oändligt antal gemensamma punkter.
Låt startvektorerna/-punkterna för linjerna vara p1 och p2.
Sätt c1 = p1 . n och c2 = p2 . n,
där skalärprodukten u . v = ux vx + uy vy + uz vz.
Om c1 = c2 skär linjerna varandra, annars inte. (Om jag har tänkt rätt. :-)Sv:Linje kollision.
Vad står punkterna för?, som exempel "c1 = p1 . n och c2 = p2 . n".
Menar du att n ska bli : n = (n1.y n2.z - n1.z n2.y, n1.z n2.x - n1.x n2.z, n1.x n2.y - n1.y n2.x)?
Och vad menas med skalärprodukten?Sv: Linje kollision.
Om du har två vektorer (a1 a2 ... an) och (b1 b2 ... bn), så finns det två olika sätt att definiera en produkt mellan dem, och båda "make sense" liksom. Därför kallar man båda för produkter. Ena sättet ger en vektor som svar. Det andra sättet ger en skalär (ett tal) som svar.
Vektorprodukten skriver man med ett kryss; u x v
Skalärprodukten skriver man med en punkt (egentligen ska den sitta i samma höjd som ett vanligt tecken, typ "-"); u . v
u x v = w , där w är en vektor av samma typ som u och v.
u . v = a, där a är ett tal.
Per har gett dig definitionerna på u x v och u . v.Sv: Linje kollision.
Sv:Linje kollision.
Du har givit vektorerna godtyckliga dimensioner. Det är okej för skalärprodukten; den funkar bra i alla dimensioner. Vektorprodukten (av två vektorer) funkar däremot bara i 3 dimensioner. I n dimensioner behöver man ha n-1 vektorer i produkten för att få en ny vektor.Sv: Linje kollision.
Jag var visst mer berusad, tidigare än jag trodde. Klart jag vet att vektorprodukten bara finns i 3. Sv: Linje kollision.
p1 - (((p2 - p1) × n) . n2) / |n|²) n1
alt
p2 - (((p2 - p1) × n) . n1) / |n|²) n2
med beteckningar som ovan och |n|² = n . n
Det är inte osannolikt att det har blivit teckenfel på den ena. Pröva.Sv:Linje kollision.
Tack för hjälpen!Sv:Linje kollision.
Btw, p2 - (((p1 - p2) × n) . n1) / |n|²) n2, Så borde den andra vara väl?Sv: Linje kollision.