jak sprawdzic czy linia przecina prostokat

0

witam, mam pytanie do doswiadczonych, jest linia x1y1 x2y2 i prostokat px1py1 px2py2 px3py3 px4py4, jak sprawdzic czy linia przecina prostokat, czy tam czy ktorykolwiek pukty na linii zawiera sie w prostakacie. dzieki za pomoc. rafal.

0

np tak:
na podstawie punktow, zapisujesz rownania badanej prostej oraz 4 prostych prostokata. badasz punkty przeciecia i sprawdzasz czy wspolrzedne punktu przeciecia znajduja sie na prostokacie.

0

Można chyba prościej. Zakładając, żę ten prostokąt wygląda tak:

(x1y1)(x2y1)
(x1y2)(x2y2)

a nasza linia prosta to

y = Ax+B

i teraz sprawdzamy, czy:

rozwiązanie równania Y2 = Ax+B zawiera się w przedziale <x1, x2>
rozwiązanie równania Y1 = Ax+B zawiera się w przedziale <x1, x2>

jeżeli któraś z odpowiedzi jest prawdziwa to przecina.

0

hm, a jak wyliczyc linie typu y = ax + b z punktow x1y1 x2y2 ?

0

Pokaże to na przykładzie:

x1y1 = (1,1)
x2y2 = (4,5)

i podstawiamy:

y1 = Ax1+B
y2 = Ax2+B

więc mamy:

1 = A1+B
5 = A
4+B

i rozwiązujemy:

1=A+B
5=4A+B

0

Proste równanko:
(x1-px[i])(y2-py[i])-(y1-py[i])(x2-px[i])
zamiast px[i], py[i] podstawiasz po kolei wszystkie 4 konta prostokąta.
jeżeli gdzieś wyjdzie zero to znaczy że ten konkretny kąt leży na linii.
jeżeli wszystkie będą dodatnie bądź wszystkie będą ujemny to linia nie przechodzi przez prostokąt.
jeżeli np dla trzech kątów wychodzi dodatnia a dla jednego ujemna oznacza to że ten jeden leży po jednej stronie zaś pozostałe trzy po drugiej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1