Jak sprawdzić czy dwa punkty leżą w tej samej odległości od prostej

0

Napisz program w języku C++, który odczyta współrzędne dwóch punktów A i B, a następnie sprawdzi, czy leżą one w równej odległości od prostej o równaniu y = x + 2. Jeśli tak, to program powinien wypisać słowo TAK, inaczej powinien wypisać słowo NIE.

Dane dla TAK: A(2,0), B(2,8)

Dane dla NIE: A(2,0), B(6,3)

Próbowałem rozwiązywać parę razy, niestety za każdym razem nie wychodziło. Proszę bardzo o pomoc, będę dozgonnie wdzięczny

1

Pokaż co już zrobiłeś.

1

Znajdź środek odcinka AB (bardzo łatwe) i sprawdź czy leży na prostej y = x + 2 (równie łatwe).

0

na kole informatycznym w gimnazjum profesor zadał nam takie zadanie, niestety wszystkie moje zapiski zostały w szkole i nie pamiętam jak to zrobić, a muszę to wysłać nauczycielowi dziś do godziny 24. Jeśli ktoś dałby radę zrobić bardzo to docenię.

0

Liczysz 2 punkty, z prostej, dla x = x od A i dla drugiego od x od y A, z tego wychodzi trójkąt i z tego liczysz wysokość trójkąta.

Potem tak samo dla B.

2

Pisane z pamięci:
d = \frac{|A\cdot x + B\cdot y + C|}{\sqrt {A^2 + B^2}}


Wersja bardziej uniwersalna dla dowolnej ilości wymiarów 2, 3, 7 gdzie równanie prostej to: \vec u \times (\vec r - \vec c) = 0 to odległość: d = \frac{|\vec u \times (\vec r - \vec c)|}{|\vec u|}
1

przecież to nie ma NIC wspólnego z programowaniem! To jest czysta matematyka. Równanie prostej, odległość punktu od prostej. Nie wiem w której klasie tego się teraz uczy ale pewnie gdzieś w gimnazjum

0

Problem z programowania polega tu na porównywaniu liczb zmiennoprzecinkowych.
Liczby zmiennoprzecinkowe mają ograniczoną precyzję, więc albo trzeba pisać program by uwzględniał tą precyzję, albo tak, by operacje były wykonywane bez straty precyzji.
Jako, że to gimnazjum to zapewne chodzi o "miękkie" porównywanie.
Czyli abs(d1 - d2) < epsilon zamiast d1 == d2.

0

Można zmniejszyć błędy obliczeń unikając dzielenia i pierwiastkowania.
Prosta l ma równanie mx + ny = r, A= (A_x,A_y), B= (B_x, B_y).
Jeżeli punkty A i B leża po jednej stronie prostej l, to warunek równej odległości <==> środek odcinka AB leży na prostej: m*(A_x + B_x) + n*(A_y + B_y) == 2*r.
Jeżeli leżą z dwóch stron, to leżą na prostej równoległej do l <==> m*A_x + n*A_y == m*B_x + n*B_y.

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