considerare:Verificare se il punto è all'interno di un cono nello spazio 3D
X(x1,y1,z1)
punto ho bisogno di verificare se è all'interno di un cono.M(x2,y2,z2)
il vertice del cono. (il punto più alto del cono)N(x3,y3,z3)
il punto nel mezzo della base del cono.
ho scoperto che se un punto X è sul cono, è necessario verificare questa equazione:
cos(alfa) * ||X-M|| * ||N|| = dot(X-M,N)
Dove punto è il prodotto scalare dei 2 vettori, e alfa è l'angolo tra queste 2 vettori.
sulla base della formula, ho calcolato che:
X-M = (x1-x2,y1-y2,z1-z2)
Quindi,
cos(alfa)
* Math.sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2)
* Math.sqrt(x3^2 + y3^2+z3^2)
= x3(x1-x2) + y3(y1-y2) + z3(z1-z2)
Purtroppo i calcoli di cui sopra sembrano darmi risultati errati. Che cosa sto facendo di sbagliato?
Inoltre sospetto che per controllare se X
è all'interno del cono, devo mettere <=
anziché =
nella formula. È corretto?
L'utilizzo di questo è: sviluppo un gioco in cui una mitragliatrice deve iniziare a sparare quando un oggetto è nella sua "vista". Questa vista sarà un cono. Il vertice del cono si troverebbe nella mitragliatrice, la base del cono si troverà ad una certa distanza nota. Qualsiasi oggetto che entra in questo cono, la mitragliatrice gli sparerà.
Questa è un'ottima risposta, e molto più vicina a ciò che mi aspetterei che una soluzione di produzione assomigli! – Tim
Grazie furikuretsu! Funziona come un fascino. –
Molto contento che ti piaccia, ragazzi! – fyodorananiev