Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Törmäilyä

peki [20.03.2004 18:00:21]

#

Tiedossa on kaksi 2D pistettä.
Piste p ilmoittaa nykyisen sijainnin.
Piste v ilmoittaa lisäyksen, joka lisätään sijaintiin.

Lisäksi on tiedossa kaksi 2D pistettä, jotka muodostavat janan.

Ongelmani on siis seuraava:
Kuinka voisin havaita törmäyksen janaan, ja laskea
uuden lisäyksen piste p:lle?

Olen miettinyt itse seuraavaa:

Kimpoaminen:

Jos tiedetään janan muodostavat 2 pistettä.
Voidaan ne ajatella tasoon. Sitten voitaisiin
janan funktion perusteella laskea vastafunktio,
joka olisi alkuperäisen funktion keskinormaali.
Sitten voitaisiin piste p:n ja p+v:n välinen suora peilata
normaalin suhteen. Jolloin saataisiin uusi uusi
suora toiselle puolen. Joka on samalla myös uusi lisäys.

Kuulostaisiko tämä järkevältä?
Miten hoituisi törmäyksen huomaaminen?

Tämän avullahan voitaisiin laskea minkä tahansa minkä
tahansa kappaleen törmäys mihin tahansa objektiin.

P.S. EN missään tapauksessa pyydä valmista koodia millekkään kielelle!

sqwiik [20.03.2004 18:33:49]

#

Vastausta tähän on hankala lähteä selittämään ilman kuvaa, mutta voimme käyttää hyväksemme kaavaa, jolla lasketaan pisteen etäisyys suorasta. Ratkaise ensin jana suoran muotoon ax + by + c = 0 (ts. ratkaise vakiot a, b ja c). Pisteen (x',y') etäisyys suorasta on (ax' + by' + c)/SQR(a² + b²). SQR on siis neliöjuuri. Oikeassa kaavassa on ||-merkit, mutta jos käyttää sulkuja niin tulos on ERIMERKKINEN (+/-) sen mukaan MILLÄ PUOLELLA janaa piste on. Eli laske etäisyys pisteelle p ja pisteelle p + v (p + v on siis piste, johon liikuttaisiin seuraavaksi). Jos etäisyydet ovat erimerkkiset, niin piste ylittää janan jos siihen lisätään piste v. Tulikohan selväksi?
Tällöin sitten vaihdat pisteen suuntaa...

peki [20.03.2004 18:48:36]

#

Kiitti sqwiik! Aika hankala juttu, mutta kyllä mä sen
vielä koodaan. =)

Vastaus

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

Tietoa sivustosta