/ / Znajdź obszar wieloboku 2d utworzonego przez rect i line - algorytm, geometria, 2d, obszar, prostokąty

Znajdź obszar wieloboku 2d utworzonego przez rect i line - algorytm, geometria, 2d, obszar, prostokąty

Gram w Jedność, tam prostokąty przecina linia prosta. Muszę dowiedzieć się, która część rect jest większa i jak dużo. Czy ktoś zna algorytm, jak to zrobić? Przykład

Prostokąt i linie są ustawione punktami (4 dla prostokąta i 2 dla linii)

Odpowiedzi:

3 dla odpowiedzi № 1

Niejawne równanie linii jest

S(x,y) = (x - x0) (y1 - y0) - (y - y0) (x1 - x0) = 0

Po podłączeniu współrzędnych rogu, znak S(x, y) mówi, po której stronie linii jesteś. I lepiej, jeśli oceniasz Sa i Sb na dwóch rogach i mają różne znaki, przecięcie jest ułamkiem Sa / (Sa - Sb) wzdłuż boku ab.

Przetwórz teraz wszystkie cztery krawędzie zgodnie z ruchem wskazówek zegarazamówienie. Dla każdej krawędzi zachowaj początkowy róg, jeśli jest dodatni, i zachowaj punkt przecięcia, jeśli taki istnieje. Na końcu otrzymasz od 0 do 5 punktów definiujących wypukły wielokąt, który jest w domenie dodatniej.

wprowadź opis obrazu tutaj

Teren znajduje się przy ul sznurowadło formuła.


0 dla odpowiedzi nr 2

Ustal, czy zacieniony obszar jest wyłącznie trójkątem, a jeśli tak, oblicz obszar tego trójkąta (a * b) / 2, to rozwiąże diagram prawej ręki.

Dla schematu po lewej stronie traktuj obszar jako trójkąt i prostokąt. Oblicz zacieniony obszar, dodając razem obszar trójkątów i obszar prostokątów.

HTH