Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как нарисовать спираль Fermat с отрисовкой в писелах? [D7, WinXP]


Страницы:   1 2

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;


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо