![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как нарисовать спираль Fermat с отрисовкой в писелах? [D7, WinXP]
Dr. Andrew © (2007-08-26 15:02:00)Добрый день! Мастера подскажите как нарисовать спираль Fermat с отрисовкой в писелах? Что-то вроде этого:
procedure CreateSpiral(FWidth, FHeight : Integer; Rotangle : Double);
var X, Y, Ox, Oy : Integer;
Theta, Dist : Double;
clr : Byte;
temp : Double;
begin
// here there will be a centre!
Ox := MulDiv(FWidth, 1, 2);
Oy := MulDiv(FHeight, 1, 2);
Theta := 0;
for Y := 0 to Pred(FHeight) do
begin
for X := 0 to Pred(FWidth) do
begin
Dist := Sqrt(Sqr(X - Ox) + Sqr(Y - Oy));
Theta := -ArcTan2(y - Oy, x - Ox) + Rotangle;
temp := Theta + Dist;
clr := 255*Sign(Sin(temp));
if clr <> 255 then
если не равно белому цвету, то заполнять пикселами переднего плана (например, clBlue);
end;
end;
end;
MBo (2007-08-26 15:33:00) [21]
procedure TForm1.Button2Click(Sender: TObject);
var
i, x, y, cx, cy, MaxR: Integer;
a, theta, R: Double;
begin
a := 20;
cx := 200;
cy := 200;
maxR := 200;
i := 0;
repeat
theta := i * 0.2 /(2 * pi);
R := a * Sqrt(theta);
if R > MaxR then
Break;
x := cx + Round(R * Cos(theta));
y := cy + Round(R * Sin(theta));
Canvas.Pixels[x, y] := clBlack;
Inc(i);
until False;
end;