Wprowadzam algorytm losowy Fortune do obliczania diagramów Voronoi. Moje główne odniesienie to "Geometria obliczeniowa: algorytmy i zastosowania" de Berg et al., I chociaż ich omówienie tematu jest bardzo jasne, przekazują one kilka małych, ale ważnych szczegółów, z którymi miałem problemy z samodzielnym wykonywaniem pracy. Szukałem pomocy w Internecie, ale inne strony internetowe dają nawet wyższy przegląd niż podręcznik lub podają dokładnie ten sam pseudokod od książki.Konwergencja punktu łamania w algorytmie losu
Potrzebuję sposobu, aby ustalić, czy para punktów przerwania określona przez potrójne łuki na linii plaży zbiega się lub rozchodzi, w celu wykrycia nadchodzących zdarzeń koła. Wydaje się, że aby podjąć decyzję, potrzebowałabym wiedzy na temat kształtu krawędzi komórek Voronoi, które wyznaczają punkty przerwania w miarę postępu algorytmu Fortune. Na przykład, gdybym mógł znaleźć nachylenie krawędzi wyznaczonej przez punkt przerwania, mógłbym obliczyć, gdzie przecinają się dwie linie utworzone przez punkty przerwania i ich odpowiednie nachylenia, i zdecydować, czy zbiegają się w oparciu o ten wynik. Jednak nie mam pojęcia, jak uzyskać informacje o stokach, tylko aktualna pozycja punktów przerwania.
Jedyną informacją, z którą muszę pracować, jest lokalizacja x, y trzech miejsc i bieżąca współrzędna y linii odlewniczej (używam poziomej linii konturu).
Właściwie, mam jeden pomysł na określenie zbieżności. Biorąc pod uwagę dwie lokalizacje, punkt przerwania między dwiema częściami zdefiniowanej przez nich linii brzegowej jest regulowany tylko przez bieżące położenie linii przeciągnięcia. Zastanawiałem się nad nagrywaniem pozycji dwóch punktów przerwania, chwilowo przesuwając linię wyciągnięcia o niewielką ilość i rejestrując ich nowe pozycje. Ponieważ krawędzie w normalnym diagramie Voronoi nie wyginają się, jeśli odległość między nową parą punktów przerwania jest mniejsza niż odległość między starą parą, to punkty przerwania zbiegają się; w przeciwnym razie się rozchodzą. Ale wydaje się to zarówno niebezpieczne (nie mam pojęcia, czy to zawsze działa), jak i brzydkie. Z pewnością musi istnieć lepszy sposób.
Wszelkie pomysły zostałyby docenione, a pseudokod (w C# -like składni, jeśli to możliwe), szczególnie tak. Mam również świadomość, że istnieją biblioteki geometrii obliczeniowej, których mogę użyć do uzyskania diagramów Voronoi, ale jest to ćwiczenie osobiste, dlatego chcę samodzielnie wdrożyć wszystkie części algorytmu.
Czy rozwiązać triangulacji delauny? – Bytemain
Nie, to moja pierwsza próba geometrii obliczeniowej. Wiem, że są sobie nawzajem dwoje, ale najpierw chciałbym wdrożyć prosty algorytm Fortune. – Drake