[Grafika2D][Geometria analityczna]Rysowanie okręgu

0

Witam.

Dane mam:

  • Współrzędne punktu, stanowiącego środek okręgu
  • Promień okręgu r
  • Kąt początkowy w
  • Kąt końcowy v

user image

  • Funkcję, przesuwającą pisak do punktu o podanych współrzędnych (w stylu: goto(x,y) ).

Chciałbym, mając to do dyspozycji, narysować łuk (a właściwie, to jego przybliżenie - to, co na rysunku jest narysowane czerwoną kreską).

W tym celu muszę wygenerować "ścieżkę", po której będzie się przesuwał pisak - współrzędne kolejnych punktów leżących na okręgu, do których mamy się przesunąć. I tu pojawia się problem:

JAK wygenerować współrzędne kolejnych punktów, leżących na łuku o zadanych parametrach?

Będę wdzięczny za jakąś pomoc - podrzucenie jakiegoś linka, artykułu, whatevera.

0
//(X,Y,r) - współrzędne okręgu
//W, V - kąty początkowy i końcowy [rad]
//t - krok danego punktu <0..1> (0 oznacza kąt W, 1 kąt V, 0.5 kąt w połowie między W a V)

function GetPointOnCircle(X, Y, R:integer; W, V, t:double):TPoint;
begin
result:=Point(
  {X} Round(X+R*cos(W*(1-t)+V*t)),
  {Y} Round(Y-R*sin(W*(1-t)+V*t))
  );
end;

Przykład użycia:

const LIMIT=100;
var i:integer;
    Pts:array[0..LIMIT] of TPoint;
begin
for i:=0 to LIMIT do
  Pts[i]:=GetPointOnCircle(100, 100, 75, 0, PI*7/4, i/LIMIT);

//Znasz już każdy z punktów, więc możesz rysować
Canvas.Polyline(Pts);
end;
0

Dziękuję!

Będę miał jeszcze kilka problemów tego typu - będę wdzięczny jeszcze za podrzucenie jakiejś literatury na ten temat.

0

Literatury? Podręcznik do matematyki.. ?

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