Określenie czy punkt znajduje się w prostokącie w kartezjańskim układzie współrzędnych

0

Cześć, uczę się z książki(wprowadzenie do javy Daniel Liang) i ogólnie pozycja jest bardzo dobra dla kogoś początkującego. Niestety wydanie jest polskie tym samym coś oczywiście musiało zostać zrobione delikatnie mówiąc na odwal się. W miejscu gdzie jest wytłumaczone pierwsze zadanie tego typu(o który mi chodzi) i potem bazuje na tym wiele innych zadań jest odsyłka do filmiku w internecie tłumaczącego zagadnienie. Którego w polskiej wersji oczywiście nie ma natomiast, aby podejrzeć angielksą wersję trzeba wykupić książkę przez stronę wydawcy...
Dlatego zwracam się do was o pomoc:

Mamy prostokąt, którego środek jest w punkcie 00 , osi XY. Szerokość ma 10 wysokość 5.
Mam napisać program, który pobiera współrzędne punktu i następnie wyświetla informację, o tym czy punkt znajduje się w prostokącie czy poza nim.(w sensie jakiegoś punktu jaki sobie ktoś wymyśli , nie punktu 00).
W tym zadaniu powinienem użyć funkcji Math.pow.
Jeśli ktoś byłby na tyle uprzejmy, żeby mi to zagadnienie rozjaśnić i wysłać smsa o treści "pomagam" w moją stronę to będę wdzięczny. Pozdrawiam serdecznie

4

Jak masz środek x = 0 i y = 0, to szerokość będzie (-5, 5) dla x, a wysokość od (-2.5, 2.5) dla y, jeśli x będzie należał do przedziału i y też, to znaczy że punkt jest wewnątrz prostokątu w przeciwnym przypadku jest poza prostokątem.

2

Tak powinno być, pytanie: po co Math.pow?

3

Math.pow nie ma tu żadnego sensu. Na pewno chodzi o prostokąt a nie np o koło? Math.pow rzeczywiście można za to wykorzystać do wyznaczenia odległości punktu na osi XY tak jak napisałeś w tytule i wtedy może się przydać do określenia czy punkt leży wewnątrz okręgu

Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2))

Skąd wziąłeś pomysł żeby to napisać w tytule posta? Mozesz wkleić zdjęcie zadania? Może błąd w tłumaczeniu

2

@Hasztag T: po pierwsze musisz policzyć, jakie są wartości osi dla poszczególnych boków prostokąta. Jeżeli środek jest w punkcie (0,0) i boki mają odpowiednio 10 i 5, to oznacza, że

  • lewy bok będzie na osi x = -5
  • prawy bok na osi x = 5
  • górny na osi y = 2,5
  • dolny na osi y = -2,5

Teraz masz położenia danego punktu (m,n) i musisz sprawdzić, czy

  • -5 ≤ m ≤ 5
  • -2,5 ≤ n ≤ 2,5

Użycie Math.pow może sugerować, że masz podaną długość jednego boku i przekątną. Wtedy trzeba wyznaczyć długość drugiego boku z Twierdzenia Pitagorasa, ale chyba ni o to tu chodzi.

3

Nauka programowania przez matematykę jest równie trafiona jak zachęcanie do nauki programowania przez pisanie w c/c++ xD

2
RequiredNickname napisał(a):

Nauka programowania przez matematykę jest równie trafiona jak zachęcanie do nauki programowania przez pisanie w c/c++ xD

Historycznie było inaczej, do programowania trafili (w miarę przefiltrowani) z fundamentem matematyki, na poziomie jak nie uniwersyteckim, przynajmniej dobry mat-fiz. Nie było to "z łapanki".

Posty kol @Hasztag T wskazują na elementarne braki w zakresie matematyki z podstawówki.

3

Czy gdzieś było opisane, że ten prostokąt leży "prosto" ? Może chodzi o takie coś :) wtedy promień i pow jakoś mogyłyby mieć sens (rysunek robiony przez 20 sekund w paincie online, sorry za jakosc)

screenshot-20230823135816.png

1

@axelbest: mam treść oryginalną Zrzut ekranu z 2023-08-23 15-19-11.png

0

Tak to jest to zadanie , pierwsze zrobiłem przy użyciu funkcji MAth.pow i założyłem, że drugie robi się też przy pomocy tej funkcji.

1

jeśli kwadrat (prostokąt) leży równolegle/prostopadle do osi x to punkt jest wewnątrz gdy x1 <= px <= x2 i y1 <= py < y2, gdzie lewy dolny róg prostokąta to (x1, y1) a prawy górny to (x2, y2). Musisz tylko policzyć x1, x2 i y1, y2 jak koledzy wyżej podali

0

Dobra, dzięki wszystkim za pomoc :)

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