Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2013, 16:53   #1
Ильгизуля
Пользователь
 
Регистрация: 11.04.2013
Сообщений: 15
По умолчанию Делфи,полярная роза

Здравствуйте!
Помогите,пожалуйста разобраться: необходимо вывести на поверхность граф.объекта полярные розы.
написала программу(не совсем корректно),но в ней полярные розы выводятся лишь при нажатии на кнопочку, а необходимо, чтобы они выводились при "ПУСК" и завершались при "СТОП".
Благодарю заранее!!

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  i,m,k,x1,y1,gm,cd,l,c,x0,y0,ll:integer;
  h,x,y,a,b,z,f:real;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 randomize;
 m:=10;
  a:=0;
  b:=2*pi;
for i:=1 to 10 do
  l:=random(5)+1;
  ll:=random(3)+10;
  x0:=random(Width+10);
  y0:=random(Height+30);
  c:=rgb(random(255),random(255),random(255));
  h:=(b-a)/1000;
  for i:=1 to 1000 do
  begin
  f:=a+(i*h);
  z:=ll*(sin(l*f)*cos(l*f));
  x:=z*cos(f);
  y:=z*sin(f);
  x1:=trunc(x0+x*m);
  y1:=trunc(y0-y*m);
  form1.Canvas.Pen.Color:=c;
  form1.Canvas.Ellipse(x1+10,y1,x1,y1+10)
end;
end;

end.



________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 27.04.2013 в 06:28.
Ильгизуля вне форума Ответить с цитированием
Старый 26.04.2013, 17:34   #2
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Код оформил!
hon вне форума Ответить с цитированием
Старый 26.04.2013, 21:22   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Start1: TButton;
    Stop1: TButton;
    Timer1: TTimer;
    procedure StartClick(Sender: TObject);
    procedure StopClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.StartClick(Sender: TObject);
begin
  Timer1.Enabled := true;
end;

procedure TForm1.StopClick(Sender: TObject);
begin
  Timer1.Enabled := false;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Enabled := false;
  Timer1.Interval := 100;
  randomize;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  i, k, x1, y1, gm, cd, l, c, x0, y0, ll: integer;
  h, x, y, z, f: real;
const
  m = 10;
  a = 0;
  b = 2 * pi;
begin
  for i := 1 to 10 do
    l := random(5) + 1;
  ll := random(3) + 10;
  x0 := random(Width + 10);
  y0 := random(Height + 30);
  c := rgb(random(255), random(255), random(255));
  h := (b - a) / 1000;
  for i := 1 to 1000 do
  begin
    f := a + (i * h);
    z := ll * (sin(l * f) * cos(l * f));
    x := z * cos(f);
    y := z * sin(f);
    x1 := trunc(x0 + x * m);
    y1 := trunc(y0 - y * m);
    Form1.canvas.Pen.Color := c;
    Form1.canvas.Ellipse(x1 + 10, y1, x1, y1 + 10)
  end;
end;

end.
На форму киньте 2 кнопки и таймер. Все события присоедините к нужным кнопкам/таймеру/форме.

UPD
Пожалуйста
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 27.04.2013 в 16:51.
BDA вне форума Ответить с цитированием
Старый 27.04.2013, 16:35   #4
Ильгизуля
Пользователь
 
Регистрация: 11.04.2013
Сообщений: 15
По умолчанию

Спасибо большое!!!
Ильгизуля вне форума Ответить с цитированием
Старый 27.04.2013, 21:00   #5
Ильгизуля
Пользователь
 
Регистрация: 11.04.2013
Сообщений: 15
По умолчанию

а как можно сделать так, чтобы розочки выводились по спирали?
Ильгизуля вне форума Ответить с цитированием
Старый 27.04.2013, 21:52   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Добавить уравнение спирали:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  t: real;

const
  x00 = 200;
  y00 = 200;
  a1: real = 30;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Enabled := true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Timer1.Enabled := false;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Enabled := false;
  Timer1.Interval := 100;
  t := 0;
  randomize;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  i, x1, y1, l, c, ll: integer;
  h, x, y, z, f: real;
const
  m = 10;
  a = 0;
  b = 2 * pi;
begin
  t := t + pi / 18; // 10 градусов
  l := random(5) + 1;
  ll := random(3) + 10;
  c := rgb(random(255), random(255), random(255));
  h := (b - a) / 1000;
  for i := 1 to 1000 do
  begin
    f := a + (i * h);
    z := ll * (sin(l * f) * cos(l * f));
    x := z * cos(f);
    y := z * sin(f);
    x1 := x00 + trunc(x * m + a1 * t * cos(t));
    // включает уравнение архимедовой спирали
    y1 := y00 + trunc(-y * m + a1 * t * sin(t));
    Form1.canvas.Pen.Color := c;
    Form1.canvas.Ellipse(x1 + 10, y1, x1, y1 + 10)
  end;
end;

end.
UPD
Пожалуйста
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 28.04.2013 в 11:25.
BDA вне форума Ответить с цитированием
Старый 28.04.2013, 07:54   #7
Ильгизуля
Пользователь
 
Регистрация: 11.04.2013
Сообщений: 15
По умолчанию

Как красиво!!!Спасибо, большое!!!!
Ильгизуля вне форума Ответить с цитированием
Старый 06.05.2013, 05:59   #8
Ильгизуля
Пользователь
 
Регистрация: 11.04.2013
Сообщений: 15
По умолчанию

Здравствуйте!! Еще один вопрос насчет этой программы: как можно сделать так , чтобы розочки рисовались точками. Применила Pixels, но вроде ничего не получается((((
Ильгизуля вне форума Ответить с цитированием
Старый 06.05.2013, 07:39   #9
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

А что значит "рисовались точками"?
На растровом устройстве любое изображение состоит из пикселей, т.е. точек.
А на векторном сама по себе точка никак не отображается.
s-andriano вне форума Ответить с цитированием
Старый 06.05.2013, 08:04   #10
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Возможно ТС имеет ввиду, что они выводятся слишком быстро. В смысле не виден сам момент рисования.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Роза в делфи Andrey770 Помощь студентам 1 02.03.2012 21:39
полярная ск в делфи Seran4ek Общие вопросы Delphi 4 15.03.2011 14:41
Роза ветров 1OffSide Общие вопросы C/C++ 3 21.12.2010 14:21
Ассемблер(tasm) 8086 Построить кривую роза с параметрами, изменяемыми пользователем karina74 Фриланс 6 30.11.2010 09:02
Построить кривую роза с параметрами, изменяемыми пользователем (assembler) karina74 Фриланс 0 29.11.2010 20:10