Teen tässä aikani kuluksi peliä ja olisi sellainen ongelma, että pitäisi tehdä "collision detection".
Eli laskea osuuko piste kolmioon, jonka nurkkapisteet tiedetään ja ovat 3 ulotteisina vektoreina, kuten myös itse pisteen sijainti.
Sen ei saa olla ihan tarkka (koska piste liikkuu hyppäyksittäin kun aikaa porrastetaan eteenpäin, jolloin se tuskin osuu koskaan ihan juuri kohdalle), vaan riittää kun tietää, jos piste tulee tietylle etäisyydelle kolmion pinnasta.
Osuuko piste kolmioon.
8
<50
Vastaukset
- näintekisin
Tarkista ensiksi, onko piste samassa tasossa kuin kolmio. https://www.quora.com/What-is-the-simplest-way-to-determine-if-4-points-lie-on-the-same-plane Tarkista sitten, onko piste kolmion sisällä vai ulkona. http://stackoverflow.com/questions/2049582/how-to-determine-if-a-point-is-in-a-2d-triangle
- kkkkrrrrrr
Milloin piste (a,b) on monikulmion sisällä? Määrätään niiden monikulmion sivujen lukumäärä, jotka leikkaavat puolisuoraa x = a, y > b Jos se on pariton luku, niin piste on monikulmion sisällä. Ongelmana on vielä tapaus, missä puolisuora kulkee jonkin kulmapisteen kautta (tai on hyvin lähellä sitä). Silloin voisi käyttää suuntaan kulkevaa puolisuoraa.
- kukkuuluuuruuu
Kertoisitko mikä on ongelmasi? Oletatko, että täällä joku avulias Aatu tekee pelin puolestasi ajankulukseen?
- aloittelijaaa
Oletan, että joku joka on kiinnostunut tällaisista ongelmista, tietää tähän fiksun ratkaisun. Yleensä ihmiset, jotka ovat kiinnostuneet jostakin asiasta, jakavat tietoansa mielellään. Niin minä ainakin teen, ihan vahingossakin.
Kysy minulta mitä vaan vaikka pelistäni, jaan kyllä mielelläni mitä olen tehnyt ja miten, jos haluat tehdä perässä . . .
- Näin_sen_tekisin
Nopein ja yksinkertaisin lienee laatikkotarkastelu. Siinä ensin määrität kolmiolle koordinaattiakseleiden suuntaisen minimilaatikon, mikä onnistuu helposti min-max-testeillä. Sen jälkeen tutkit, onko tarkasteleva piste laatikon sisällä. Kaikkeen tähän tarvitaan pelkkiä vertailuja, laskea ei tarvitse mitään.
Algoritmin ongelmana on se, että sen hyväksymisetäisyys vaihtelee kolmion koon ja aseman mukaisesti, mutta olet etsimässäkin likimenetelmää. - Ruudinsekoittaja
Jotta ei keksittäisi turhaan lisää ruutia, kannattaa katsella ajatuksella esimerkiksi seuraavat:
https://en.wikipedia.org/wiki/Möller–Trumbore_intersection_algorithm
http://cg-dev.ltas.ulg.ac.be/inf/Fast MinimumStorage RayTriangle Intersection.pdf - Ohman
Kolmion nurkkapisteiden paikkavektorit olkoot R1,R2 ja R3.Näiden kautta kulkeva taso olkoon
(1) ax by c z = d eli (A.R) = d (= (A,R1) = (A,R2) = (A,R3))
Jotta tuo liikkuva piste P sijaitsisi haluamallasi tavalla, sen tulee olla sellaisen kolmikulmaisen laatikon sisällä jonka laatikon pohja ja katto ovat tason 1 suuntaiset ja näiden muodostamat tasot ovat etäisyyksillä e1 ja e2 tasosta (1). Lienee tarkoitus valita e1 = e2 = e.
Nämä tasot ovat
(2) ax by cz = d f ja (3) ax by cz = d - f (f > 0).
Tasojen (2) ja (3) etäisyys tasosta (1) on e =f /sqrt(a^2 b^2 c^2).Pisteen P pitää olla korkeintaan etäisyydellä e tasosta (1). Pelissä määritellään kuinka suuri e saa korkeintaan olla. Ensin siis tarkastetaan, että liikkuva piste P toteuttaa tämän ehdon.
Tason (1) yhtälö saadaan siitä, että sen(eräs) normaali on vektori A = ai b j c k.
Toisaalta normaali on (R2 - R1) x (R3 - R1) joten a,b ja c ovat laskettavissa.
Toinen yksikkönormaali on N = 1/ sqrt(a^2 b^2 c^2) (a i b j c k) ja sekä N että -N ovat yksikkönormaaleja.Ja d = (A,R1) = (A,R2) = (A,R3)
Pisteen P paikkavektori olkoon R(P). Pisteen P kautta kulkeva tason (1) suuntainen taso on
(4) (A,R) = (A,R(P))
joten P:n etäisyys tasosta (1) on g = l d - (A,R(P)) l / sqrt/(a^2 b^2 c^2). Osuma tulee kun
(5) g <= e.
Mutta osumaan tarvitaan myös että P on tuon laatikon sisällä myös pohjan (ja kannen) suunnassa.Jos nyt g toteuttaa ehdon (5) niin pisteen R(P) /- g N, joka on siis P:n projektio tasolle (1), ja jossa tai - merkki valitaan niin että normaali osoittaa tason (1) suuntaan pisteestä P, on oltava alkuperäisen kolmion sisällä.
Kolmion kärjet olivat R1,R2 ja R3, joten täytyy olla
(6) R(P) / - g N = t1 R1 t2 R2 t3 R3
missä barysentriset koordinaatit t(i) ovat ei-negatiiviset ja t(1) t(2) t(3) = 1.
Jos P toteuttaa ehdot (5) ja (6) niin osuma tuli.
Ohman- martta00
näinhän se suunnilleen menee..
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Heikki Silvennoinen petti vaimoaan vuosien ajan
Viiden lapsen isä Heikki kehuu kirjassaan kuinka paljon on pettänyt vaimoaan vuosien varrella.1502387- 271958
Miksi ihmeessä nainen seurustelit kanssani joskus
Olin ruma silloin ja nykyisin vielä rumempi En voi kuin miettiä että miksi Olitko vain rikki edellisestä suhteesta ja ha231938Persut nimittivät kummeli-hahmon valtiosihteeriksi!
Persujen riveistä löytyi taas uusi törkyturpa valtiosihteeriksi! Jutun perusteella järjenjuoksu on kuin sketsihahmolla.851730Onko ministeri Juuso epäkelpo ministerin tehtäviensä hoitamiseen?
Eikö hänellä ole kompetenttia hoitaa sosiaali- ja terveysministetin toimialalle kuuluvia ministerin tehtäviä?671520Sakarjan kirjan 6. luku
Jolla korva on, se kuulkoon. Sain profetian 22.4.2023. Sen sisältö oli seuraava: Suomeen tulee nälänhätä niin, että se201296Avaa sydämesi mulle
❤ ❤❤ Tahdon pelkkää hyvää sulle Sillä ilmeisesti puhumalla Avoimesti välillämme Kaikki taas selviää Kerro kaikki, tahdo381190- 111188
Elia tulee vielä
Johannes Kastaja oli Elia, mutta Jeesus sanoi, että Elia tulee vielä. Malakian kirjan profetia Eliasta toteutuu kokonaan371183Nellietä Emmaa ja Amandaa stressaa
Ukkii minnuu Emmaa ja Amandaa stressaa ihan sikana joten voidaanko me koko kolmikko hypätä ukin kainaloon ja syleilyyn k101167