Próbuję wziąć tablicę punktów 3D i płaszczyzny i dzielą się na 2 punkty tablic na podstawie której stronie płaszczyzny są one na. Zanim przystąpię do debugowania, chciałem opublikować to, co zamierzam zrobić, aby upewnić się, że moje zrozumienie tego sposobu zadziała.sprawdzić, które z boku z punktów płaszczyzny są na
Zasadniczo mają powierzchnię z 3 punktów i przez stosowanie (pseudo-kod):
var v1 = new vector(plane.b.x-plane.a.x, plane.b.y-plane.a.y, plane.b.z-plane.a.z);
var v2 = new vector(plane.c.x-plane.a.x, plane.c.y-plane.a.y, plane.c.z-plane.a.z);
Biorę iloczyn z tych dwóch wektorów, aby otrzymać wektor normalny.
Następnie pętli moim tablicy punktów, a włączyć je do wektorów i obliczanie iloczynu skalarnego wobec normalnej.
potem użyć iloczynu skalarnego określić stronę, że punkt jest na.
Czy to brzmi, jakby to działało?
To brzmi, jakby to działało. Zaznaczę jednak, że można "wektoryzować" z wewnętrznej pętli przez pomnożenie punktu 'plane.a' przez normalny wektor, aby uzyskać stałe przesunięcie. To eliminuje 2 subtrakcje i jest w zasadzie takie samo jak rozwiązanie @ Ali: jego 'd' to' - dot (plane_normal, plane.a) ' – comingstorm