Odległość punktu od środka okręgu

0

Mam takie zadanie, które muszę rozwiązać za pomocą schematu blokowego:

Mając dany punkt P(x , y) i okrąg o środku w punkcie O(x0 , y0)
i promieniu r, powiedzieć czy punkt P leży po wewnętrznej,
zewnętrznej stronie okręgu czy też na okręgu.

i bynajmniej nie chodzi mi o gotowe rozwiązanie, tylko raczej o wskazówki. Co mi jest generalnie potrzebne do rozwiązania tego problemu? Zmienne, dla współrzędnych punktu P(x,y), a także zmienne dla tego punktu O i dla promienia, a także wzór na obliczenie odległości punktu od środka okręgu. Czy coś jeszcze?

1

No i dorzuć wyrażenia warunkowe.

0
Pyxis napisał(a):

No i dorzuć wyrażenia warunkowe.

Dlaczego? No raczej myślałem, że z warunkami?
przepraszam przeczytałem żeby odrzucić warunki. Ok wporządku. Dzięki

2

Sprawdzasz, czy odległość punktu P od punktu O jest mniejsza, równa, większa od promienia.
Obliczenie odległości |OP|:
|OP| = sqrt((P.x - O.x)² + (P.y - O.y)²)

0
Spine napisał(a):

Sprawdzasz, czy odległość punktu P od punktu O jest mniejsza, równa, większa od promienia.
Obliczenie odległości |OP|:
|OP| = sqrt((P.x - O.x)² + (P.y - O.y)²)

Czyli obliczam OP, a potem sprawdzam czy jest mniejsza większa czy równa?

0

Tak. Trzy instrukcje warunkowe, w zależności od których wypisywana jest odpowiednia odpowiedź.

1

(x-a)^2+(y-b)^2=r^2

wlasnie wychodzi sie z rownania okregu

zalozmy ze srodek okregu to (2,2) a promien 5

wtedy rownanie przyjmuje postac

(x-2)^2+(y-2)^2=25

x=6

wtedy zeby punkt lezal na okregu liczymy (y-2)^2=25-16=9 wiec y-2=3 wiec y =5 czyli punkt (6,5) lezy na okregu

0
krzychu82a napisał(a):

(x-a)^2+(y-b)^2=r^2

wlasnie wychodzi sie z rownania okregu

zalozmy ze srodek okregu to (2,2) a promien 5

wtedy rownanie przyjmuje postac

(x-2)^2+(y-2)^2=25

x=6

wtedy zeby punkt lezal na okregu liczymy (y-2)^2=25-16=9 wiec y-2=3 wiec y =5 czyli punkt (6,5) lezy na okregu

A skąd wziąłeś to?

y-2=3

Dobra, już wiem. Dzięki

0

Ok. A jeszcze takie pytanie mam. Czy jeżeli mam warunek, że np:
|OP| = r t
to wtedy wypisuje, że leży na okręgu. A jeżeli |OP| nie jest równe r to daje następny warunek żeby sprawdzić czy powinienem zrobić tak żeby |OP| było równe r?

1

Zapis w schemacie blokowym będzie wyglądać tak:

// d == OP

if (d < r) // pierwszy blok warunkowy TAK
{
  cout << "P w okręgu";
}
else // pierwszy blok warunkowy NIE
{
  if (d == r) // drugi blok warunkowy TAK
  {
    cout << "P na okręgu";
  }
  else // drugi blok warunkowy NIE
  {
    cout << "P poza okręgiem";
  }
}
0

Tak to wygląda?
zad6.jpg

0

zad6.jpg

0

Tak tylko popraw komunikaty i oznaczenia zmiennych.

Np. masz leży poza okręgu, albo wczytujesz x, y, a potem używasz P.x, P.y.

A po drugim obrazku... O.x0 itp. lepiej zrobić jako O.x.

I schemat lepiej wyglądałby z łamanymi liniami.
screenshot-20231007174535.jpg

Najlepiej użyj programu http://www.flowgorithm.org/
Od razu będziesz mógł uruchamiać to co zrobisz.

0

Nie wiem czemu ale dostaje Not a number
op.png

0

a jaki kod dokładnie piszesz?

0

to jest ten schemat blokowy wyżej. Nie przepisuje tego na żaden język programowania. Robie schemat blokowy i robie kompilacje programu. Robie to w programie magiczne bloczki.

0

W Flowgorithm to wygląda tak:
screenshot-20231007181407.png
Deklaracja zmiennych typu real.
Pobieranie danych wejściowych.
No i warunki...
Załączam plik projektu: PointInCircle.zip

0

Tak też mam ten program. Problem polega na tym, że robie to na studia i gość polecił te magiczne bloczki za 5 zł.

0

@piotrek1998: Możliwe, że "magiczne bloczki" nie lubią kropek w nazwach zmiennych i formułki korzystające ze zmiennych tak nazwanych psują wynik.

0

No coś w tym jest. Jak napisałem w bloku po starcie P.x, P.y to wypluł mi błąd, że nie obsługuje takiego formatu wejść.

0

Ok. Dzięki wszystkim za pomoc. Jakby coś to tematu jeszcze nie zamykam gdyby podczas analizy wyszło na jaw że czegoś nie rozumiem.

0

To zadanie również rozwiązuje się w analogiczny sposób:

"Mając dany punkt P(x,y) i kwadrat o punkcie przecięcia przekątnych
w O(x0 , y0) i boku długości a, powiedzieć czy punkt P leży wewnątrz, na
zewnątrz czy na brzegu kwadratu. Boki kwadratu są równoległe do osi
x, y."

3

Czyli obliczam OP, a potem sprawdzam czy jest mniejsza większa czy równa?

Dodam jeszcze, że w praktyce prawie nigdy nie będzie równe (ze względu na niedokładność obliczeń), więc zasadniczo zakłada się jakiś margines, tzn. że jak różni się o jakąś małą wartość to tak jakby było równe.

0

Przepraszam, a co do tego zadania

"Mając dany punkt P(x,y) i kwadrat o punkcie przecięcia przekątnych
w O(x0 , y0) i boku długości a, powiedzieć czy punkt P leży wewnątrz, na
zewnątrz czy na brzegu kwadratu. Boki kwadratu są równoległe do osi
x, y."

podejście jest analogiczne? Czy możecie pomóc. Potrzebne mi to na jutro. Potrzebny mi wzór, żeby a wyliczyć. Nie wiem czy dobrze znalazłem ale czy w tym zadaniu to o to chodzi:
https://szaloneliczby.pl/w-kwadracie-abcd-w-ktorym-punkt-e-jest-srodkiem-boku-cd-poprowadzono-przekatna/

1

Musisz sprawdzić czy Px mieści się w zakresie od Ox - 0.5a do Ox + 0.5a, analogicznie dla Py i Oy.
Jeśli te dwa warunki są spełnione, to punkt P jest w kwadracie.

0
Spine napisał(a):

Musisz sprawdzić czy Px mieści się w zakresie od Ox - 0.5a do Ox + 0.5a, analogicznie dla Py i Oy.
Jeśli te dwa warunki są spełnione, to punkt P jest w kwadracie.

a muszę przy tym obliczać długość a? Muszę czy nie muszę liczyć tego a? Czy może wystarczy jak podam na wejściu?

0

Przecież w treści zadania masz napisane, że a jest dane.

Poza tym na jakiej podstawie chciałbyś obliczyć a?

0

No właśnie, bo ktoś mi podrzucił właśnie taki pomysł. A co do tego co tu napisałeś Ox - 0.5a do Ox + 0.5a, to powinnem to wyliczyć i zapisać do jakiejś zmiennej czy w if'ie to zawrzeć?

0

Nie mogę tego znaleźć w necie w kwestii tego zakresu.

1

Bo to jest tak idiotycznie proste zadanie, że wystarczy jak sobie to narysujesz.
Punkt w kwadracie w układzie współrzędnych...
Punkt poza kwadratem w układzie współrzędnych...
No i spróbuj rozwiązać postawione zadanie z danymi jakie otrzymałeś.
Dojdziesz do takiego samego wzoru, jaki Ci podałem.

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