Mam system, w którym możesz kliknąć raz, aby umieścić węzeł w scenie. Po umieszczeniu 3 węzłów tworzy trójkąt. Po umieszczeniu jakichkolwiek przyszłych węzłów tworzy nowy trójkąt, łącząc ten węzeł z 2 najbliższymi istniejącymi węzłami.
Działa to dobrze przez większość czasu, ale jest wadliwe, gdy jest używane w pobliżu trójkątów o bardzo ostrych kątach, ponieważ jeden z 2 najbliższych węzłów często nie jest tym, który powinien zostać użyty.
Na przykład zobacz obrazek poniżej. Trójkąt magenta jest umieszczony pierwszy. Jeśli następnie kliknę na pozycję oznaczoną X, otrzymam nowy trójkąt, w którym znajduje się niebieska nakładka. Chcę nowego trójkąta z zieloną nakładką. (tj. symetryczny do magenta, w tym przykładzie. Wyjaśnienie: trójkąty zielony i magenta nie nakładają się - zielony rozciąga się pod niebieskim do lewego skrajnego węzła)
Jak mogę określić, które 2 istniejące wierzchołki należy zastosować podczas tworzenia nowych trójkątów, aby trójkąty nie były nakładane w ten sposób?
EDYCJA : Wyszukiwanie najbliższej krawędzi daje lepsze wyniki, ale nie doskonałe. Rozważ tę sytuację:
Test „najbliższej krawędzi” jest niejednoznaczny i może zwrócić AB lub AC (ponieważ najbliższy punkt do X dla obu jest w A). Pożądanym wynikiem byłoby AC, aby utworzyć trójkąt ACX bez nakładających się krawędzi. Jak mogę zapewnić ten wynik? (Wolałbym nie przeprowadzać testów nakładania się pojedynczych krawędzi, jeśli to możliwe, ponieważ obawiam się, że najbliższy test krawędzi niekoniecznie wykryje 2 są dokładnie w jednakowej odległości, biorąc pod uwagę problemy z precyzją zmiennoprzecinkową.)