PDA

View Full Version : الگوریتم رسم دایره با شعاع متغیر



MSHService
دوشنبه 11 آبان 1388, 08:22 صبح
سلام

الگوریتم رسم دایره رو می خواستم.

می خوام کدش رو بنویسم.

دوستام تو مسابقه رباتکن و به این کد نیاز دارن.

خیلی فوریه.

با تشکر.

majid_ramak
دوشنبه 11 آبان 1388, 08:57 صبح
سلام دوست عزیز،
یک TImage و یک TButton و یک TEdit روس فرم بذار.

procedure TForm1.DrawEllipseFromCenter(Canvas: TCanvas; CenterOfEllipse: TPoint; RadiusOfCircle: Integer);
var
R: TRect;
begin
with Canvas do
begin
R.Top := CenterOfEllipse.Y - RadiusOfCircle;
R.Left := CenterOfEllipse.X - RadiusOfCircle;
R.Bottom := CenterOfEllipse.Y + RadiusOfCircle;
R.Right := CenterOfEllipse.X + RadiusOfCircle;
Ellipse(R);
MoveTo(CenterOfEllipse.X, CenterOfEllipse.Y);
LineTo(CenterOfEllipse.X, CenterOfEllipse.Y);
end;
end;

تو ButtonClick این کد رو بنویس :

procedure TForm1.Button1Click(Sender: TObject);
var
Center: TPoint;
begin
Center.X := 40;
Center.Y := 40;
DrawEllipseFromCenter(Image1.Canvas, Center, StrToInt(Edit1.Text) { radius of circle });
end;
فکر میکنم مشکلت حل بشه، عددی که در Edit1 وارد میکنید مقدار شعاع دایره هستش.

MSHService
دوشنبه 11 آبان 1388, 10:24 صبح
ممنون از پاسختون.

عذر می خوام مثله اینکه منظورمو درست نگفتم!

ربات با حرکت باید اینو بکشه! نه یک مرتبه همش کشیده بشه!

ربات حرکت میکنه و این خط رو پشته سرش میکشه.

با تشکر.

Felony
دوشنبه 11 آبان 1388, 10:37 صبح
باید طبق فرمول ریاضی مختصات رو به دست بیارید ، کدی که نوشتم رو داخل یه تایمر بزارید و متغیرهای X,Y,Sec رو از نوع صحیح و سراسری تعریف کنید :


Form1.Color:=ClBlack;
inc(Sec);
X:= Round(150 * Cos((Pi / 180) * (6 * Sec - 90)) + 200);
Y:= Round(150 * Sin((Pi / 180) * (6 * Sec - 90)) + 200);
Canvas.Pixels[X,Y]:=clred;
Inc(X);
Inc(Y);

موفق باشید .