[pascal] Aktualna pozycja przy okręgu

0

Mam do zrobienia zadanie, dość banalne, w każdym razie teoretycznie: narysować w Turbo Pascalu flagę Unii Europejskiej. Niby pikuś.
Wizję mam taką:

  1. rysuję tło,
  2. w kolorze tła rysuję w pętli okrąg, a właściwie jego łuk na 30 stopni i wtedy w miejscu zakończenia łuku rysuję gwiazdkę (flaga ma 12 gwiazdek, 360/12=30).

Problem polega na tym, że nie wiem w jaki sposób mam pobrać aktualną pozycję końca łuku (getx, gety pobiera środek okręgu).

Oto, co naskrobałem:

{w deklaracji}
const
g1: array[1..11] of integer=(0,6,15,-11,5,-15,-15,4,-13,17,7);
g2: array[1..11] of integer=(-20,13,0,10,15,-9,9,-14,-11,0,-13);

{w programie głównym}
setfillstyle(blue,blue);
bar(49,59,590,420);
kat:=0;
moveto(320,240);
for j:=1 to 12 do
begin
setcolor(white);
ellipse(320,240,kat,kat+30,150,150);
x:=getx;
y:=gety;
delay(200);
kat:=kat+30;
moveto(x,y);
for i:=1 to 11 do
begin
if i>1 then
setcolor(yellow);
linerel(g1[i],g2[i]);
end;
delay(200);
end;

0

Tak rysujemy gwiazdkę:

procedure Gwiazdka(n, p, q: integer; r, r1: real);
var
  k: integer;
  alfa, alfa2, fi, psi: real;
begin
  alfa2 := Pi/n;
  alfa := 2*alfa2;
  MoveTo(Round(r)+p, q);
  for k:=1 to n do
  begin
    fi := k*alfa;
    psi := fi-alfa2;
    LineTo(Round(r1*cos(psi))+p, q-Round(r1*sin(psi)));
    LineTo(Round(r*cos(fi))+p, q-Round(r*sin(fi)));
  end;
  FloodFill(p, q, GetColor);
end;
{ Gwiazdka(ilosc_ramion, x, y, promien_duzy, promien_maly) }

Tak dzielimy okrąg na segmenty:

  StepAngle := round(360 / MaxPoints);

   FOR I := 0 TO MaxPoints - 1 DO
    BEGIN
     Radians := (StepAngle * I) * PI / 180;
     Points[i].x := Cos(Radians)*Radius;
     Points[i].y := Sin(Radians)*Radius;
    END;

A to odpowiedź na pytanie: GetArcCoords

0

Wielkie dzięki za gwiazdkę. Tylko czy można by było zrobić tak, aby wierzchołek był u samej góry na środku?

Odnośnie tego podziału koła to niezbyt czaję jak to zrobić ;/ Prosiłbym o jakieś wytłumaczenie, z góry dzięki.

0

user image

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