Sprawdź, czy punkt znajduje się w stożku w przestrzeni 3D
Rozważać:
X(x1,y1,z1)
punkt, który muszę sprawdzić, czy jest w stożku.M(x2,y2,z2)
wierzchołek stożka. (górny punkt stożka)N(x3,y3,z3)
punkt pośrodku podstawy stożka.Dowiedziałem się, że jeśli punkt X znajduje się na stożku, musi zweryfikować to równanie:
cos(alfa) * ||X-M|| * ||N|| = dot(X-M,N)
Gdzie kropka jest iloczynem skalarnym 2 wektorów, a alfa jest kątem między tymi dwoma wektorami.
Na podstawie wzoru obliczyłem, że:
X-M = (x1-x2,y1-y2,z1-z2)
Więc,
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)
Niestety powyższe obliczenia wydają mi się błędne. Co ja robię źle?
Podejrzewam też, że sprawdzę, czyX
jest w stożku, muszę to ułożyć<=
zamiast=
w formule. Czy to jest poprawne?
Wykorzystanie tego jest następujące: opracowuję grę, w której karabin maszynowy musi zacząć strzelać, gdy przedmiot znajduje się w „widoku”. Ten widok będzie stożkiem. Wierzchołek stożka znajdowałby się w karabinie maszynowym, podstawa stożka znajdowała się w pewnej znanej odległości przed sobą. Każdy obiekt wchodzący w ten stożek, karabin maszynowy go zastrzeli.