Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Lävistääkö puolisuora kappaleen?

Oskuz [16.05.2014 19:08:05]

#

Mulla on kappale A ja B joiden sijainti origoon nähden ilmoitetaan vectoreilla OA ja OB.
Nyt kappaleesta A piiretään puoli avoin jana e vectorin d osoittamaan suuntaan, miten voidaan tarkistaa lävistääkö e kappaleen B?

Metabolix [16.05.2014 21:27:58]

#

Kappaleesi oletettavasti muodostuvat kolmioista, kuten 3D-malleissa yleensä. Tarkista törmäys jokaiselle kolmiolle erikseen. Seuraavassa selostuksessa laitoin termit ja symbolit uuteen uskoon.

Olkoon kolmio ABC, suoran eräs piste O ja suuntavektori v. Kolmion kulmista saa laskettua normaalin ristitulolla (1), ja tason yhtälöön sisältyy lisäksi vakio, jonka voi ratkaista normaalin ja yhden tunnetun pisteen avulla (2). Sen jälkeen voi tarkistaa, kulkeeko suora tason suuntaisesti (3).

Jos suora ei julke tason suuntaisesti, tason ja suoran leikkauspiste selviää, kun ratkaistaan piste P, joka kuuluu sekä suoraan että tasoon (4). Kun P on selvillä, pitää vielä tarkistaa, onko se kolmion sisäpuolella, mikä onnistuu tarkistamalla, että kolmioiden PAB, PBC ja PCA normaalit osoittavat samaan suuntaan (5).

Jos suora kulkee tason suuntaisesti, pitää selvittää, onko suora tasolla (6). Jos ei ole, leikkausta ei voi tapahtua. Muuten selvitetään suoran leikkauspiste janojen AB, BC ja CA kanssa, mikä onnistuu esimerkiksi niin, että valitaan tason ulkopuolelta mielivaltainen piste D (esimerkiksi 7) ja lasketaan edellisen kuvauksen mukaisesti suoran leikkauspisteet kolmioiden ABD, BCD ja CAD kanssa. Toisaalta usein tällainen minimaalinen sivuaminen voidaan jättää ohjelmoinnissa pois laskuista, koska liukuluvuilla tulos on joka tapauksessa pyöristyksestä kiinni.

(1) n = AB × BC
(2) n · A + d = 0
(3) v · n = 0
(4) n · P + d = OP · v = 0
(5) sign(n · (PA × PB)) = sign(n · (PB × PC)) = sign(n · (PC × PA))
(6) n · O + d = 0
(7) D = A + n

Vastuuvapauslauseke: keksin kaiken juuri uudestaan, en tarkistanut, tarkista itse.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta