Rysowanie prostych przechodzących przez punkt – moduł Graph w Pascalu

Odpowiedz Nowy wątek
2018-12-31 23:01
0

Cześć, przepraszam, jeżeli obraziłem was tego typu postem, ale próbowałem cały dzień i nie mam pomysłu jak zrobić coś takiego jak na załączonej grafice.
Próbowałem w jakikolwiek sposób użyć komend typu line, ale w line podajemy współrzędne końca i początku linii, a tutaj potrzebujemy żeby były to średnice okręgu. Głowię się, a nie jestem w tym fachowcem, mam to na studiach jako poboczny przedmiot od trzech miesięcy a w internecie naprawdę bardzo ciężko jest znaleźć przykłady prostych grafik tego typu (wbrew pozorom). Proszę o jakąś pomoc, do tej pory kombinowałem coś w ten deseń:

Program grafika;
Uses graph;
var sterownik, tryb, k:integer;

Procedure liniepionowe(n:integer);
var i,z:integer;
begin
   begin
   i:=9;
   setcolor(i);
   for z:=0 to n do
    begin
    line(i+100*z,i-100*z,i-100*z,i+100*z);
    end;
   end;
end;

begin
   writeln('k='); readln(k);
   detectgraph(sterownik,tryb);
   initgraph(sterownik,tryb,'');
   setlinestyle(15,13,0);
   liniepionowe(k);
   readln;
   closegraph;
end.

Ale to raczej kompletnie nie w tym kierunku powinno iść.

edytowany 2x, ostatnio: furious programming, 2019-01-01 23:23

Pozostało 580 znaków

2019-01-01 13:13
1

w line podajemy współrzędne końca i początku linii, a tutaj potrzebujemy żeby były to średnice okręgu

Wydaje mi się, że promienie okręgu są mimo wszystko odcinkami ;-)
A skoro są, to można je narysować za pomocą procedury line.

Tak czy siak: jest to zadanie bardziej matematyczne niż programistyczne - poczytaj o równaniu parametrycznym okręgu.


edytowany 3x, ostatnio: Patryk27, 2019-01-01 13:20

Pozostało 580 znaków

2019-01-02 19:07
Tig
0

Na załączonym obrazku nie ma "średnic", są za to linie proste wychodzące z ustalonego punktu (środka okręgu) i biegnące do punktu położonego na okręgu.
Czyli musisz narysować linię z ustalonego punktu do punktu obliczonego (dla różnych kątów).
Obliczenie wiąże się z trygonometrią, a o ile pamiętam, to sinus i cosinus pozwalają to wyliczyć, np. sinus 30 stopni daje położenie w pionie w połowie wysokości promienia, a cosinus 30 stopni daje położenie w poziomie w ~86.6% długości promienia.

Pozostało 580 znaków

2019-01-02 22:17
2

Do namalowania linii ze środka okręgu pod zadanym kątem i o określonej długości służą proste obliczenia:

X := OriginX + Cos(Angle) * Radius;
Y := OriginY + Sin(Angle) * Radius;

Więcej informacji i obrazki znajdziesz tutaj: https://gamedev.stackexchange.com/a/9610

Obliczenia te z powodzeniem wykorzystałem w projekcie swojego platformera, w którym to świetliki poruszają się właśnie po okręgu, zgodnie z ruchem wskazówek zegara lub odwrotnie. To w którym miejscu na okręgu znajduje się świetlik obliczane jest na podstawie jego sztywnej lokalizacji (środek okręgu), wielkości zataczanego okręgu (rozmiar promienia) oraz numerowi klatki ruchu (wartość kąta).

Nie zapomnij tylko o odpowiedniej konwersji wartości kątów pomiędzy stopniami a radianami, bo funkcje Sin i Cos operują na kątach właśnie wyrażonych w radianach.


edytowany 1x, ostatnio: furious programming, 2019-01-02 22:18

Pozostało 580 znaków

2019-01-03 22:10
0

@Patryk27, @Tig - ale w sumie to co za różnica, czy będzie miał serię promieni rysowanych ze środka okręgu do punktu biegającego sobie po obwodzie, czy będzie łączył sobie dwa punkty goniące się po obwodzie i przesunięte względem siebie o 180 stopni? Moim zdaniem wychodzi na to samo.


That game of life is hard to play
I'm gonna lose it anyway
The losing card I'll someday lay
So this is all I have to say
edytowany 1x, ostatnio: cerrato, 2019-01-03 22:11
Przyjrzyj się grafice - tam ma promienie, nie średnice, których nie narysujesz łącząc punkty okręgu. - Patryk27 2019-01-04 07:55
No ale nie traktuję załączonego pliku jako wzoru do idealnej reprodukcji, tylko raczej jako schemat poglądowy, więc tym bym się nie przejmował. Chodziło mi raczej o to, czy widzicie jakieś przeciwwskazania przed rysowaniem średnic/czy z jakiegoś powodu Waszym zdaniem promienie są lepsze. Pytam, bo może się czegoś nowego nauczę przy okazji :) - cerrato 2019-01-04 09:39
IMO bez większej różnicy - oprócz tego właśnie, że promienie dają nieco więcej wolności pod względem dobierania kątów. - Patryk27 2019-01-04 09:42
OK, dzięki. Dla mnie w takim razie EOT. - cerrato 2019-01-04 09:43

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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