Mam listę punktów 3D. Wiem, że wszystkie są koplanarne. Mam centrum, które chcę uporządkować i normalne do płaszczyzny, na której leżą punkty i centrum. Jak mogę sprawdzić, czy jeden punkt jest właściwy (lub pozostawiony) innego punktu?Sortowanie listy 3d współpłaszczyznowych punktów zgodnie z ruchem wskazówek zegara lub przeciwnie do ruchu wskazówek zegara
Rozumiem, jak to zrobić w 2D. Sort points in clockwise order? wyjaśnia, jak porównać punkty 2d. Więc myślę, że muszę jakoś zakodować wszystkie punkty i centrum na lokalne współrzędne 2d. Jak mogę to zrobić? Czy jest to najbardziej efektywny sposób rozwiązania tego problemu?
//from link:
// a and b are points
//center is the center around which to determine order
//int num = (a.x-center.x) * (b.y-center.y) - (b.x - center.x) * (a.y - center.y);
//if num=0 then they're on the same line
//if num <0 or num>0 then a is to the left or right of b
Jak to zaadaptować, aby obsługiwać punkty coplanar 3D?
"Zgodnie z ruchem wskazówek zegara" nie ma znaczenia w 3-d, ponieważ zależy od tego, w jaki sposób patrzysz na płaszczyznę. Odwróć płaszczyznę i nagle zgodnie z ruchem wskazówek zegara przeciwnie do ruchu wskazówek zegara. –
@woodchips Problem nie jest unikalny dla 3-d. Nie wszystkie układy współrzędnych 2-d są zdefiniowane w ten sam sposób. W obu przypadkach wystarczy określić, co rozumie się przez "prawo". – DuckMaestro
Widzę, co mówisz, że to dobrze wiedzieć. Czy sądzisz, że określenie normalnego kierunku płaszczyzny oczyściłoby to? Zgodnie z ruchem wskazówek zegara nie oznacza to teraz zbyt wiele dla mnie, ale nadal muszę zamówić punkty w pewnym spójnym kierunku. – AAB