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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2011, 22:29   #1
foxy342
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 18
По умолчанию Фрактал Коха в Delphi 7

задача.
нарисовать кривую коха так, что бы можно было менять порядок кривой,
т.е. допустим на первом шаге - ___ , на втором - _/\_, на третьем - каждая часть полученной кривой разбивается еще на 4 отрезка.
з.ы. программу примерно написала, но ошибки разобрать не могу(((

Код HTML:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    BitBtn1: TBitBtn;
    Label1: TLabel;
    Label2: TLabel;
    Edit3: TEdit;
    Label3: TLabel;
    Edit4: TEdit;
    Label4: TLabel;
    Label5: TLabel;
    Edit5: TEdit;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  level:integer;
  L,h,a,x1,x2,x3,y1,y2,y3,alfa,beta,startx,starty,endx,endy:real;
  Procedure Kox(startx:real;endx:real; starty:real; endy:real;level:integer);
  //Kox(startx,endx,starty,endy,level:integer);
implementation

{$R *.dfm}
procedure Kox(startx:real;endx:real; starty:real; endy:real;level:integer);
 begin if (level=1) then begin Form1.Image1.Canvas.MoveTo(trunc(startx),trunc(starty));
                               Form1.Image1.Canvas.LineTo(trunc(endx),trunc(endy));
                         end
 else
  begin
      L:= sqrt((endx-startx)*(endx-startx)+(endy-starty)*(endy-starty));
	    h:= L/(2*sqrt(3));
      alfa:=sin(a);
	    alfa:=(endy-starty)/L;
      beta:=cos(a);
	    beta:=(endx-startx)/L;
	    x1:=startx +(endx-startx)/3;
	    x2:=(endx + startx)/2+h * alfa;
	    x3:=startx+2*(endx-startx)/3;
	    y1:=starty+(endy-starty)/3;
	    y2:=(endy + starty)/2-h*beta;
	    y3:=starty+2*(endy-starty)/3;
      Kox(startx,x1,starty,y1,level-1);
      Kox(x1,x2,y1,y2,level-1);
	    Kox(x2,x3,y2,y3,level-1);
	    Kox(x3,endx,y3,endy,level-1);
  end;
 end;
procedure TForm1.Button1Click(Sender: TObject);
var a:integer;
begin
a:=StrToInt(Edit5.Text);
startx:=Strtoint(Edit1.Text);
starty:=Strtoint(Edit2.Text);
endx:=Strtoint(Edit3.Text);
endy:=Strtoint(Edit4.Text);
x1:=0;
x2:=500;
y1:=500;
y2:=y1;
Kox(x1,x2,y1,y2,a);
end;

end.

Последний раз редактировалось foxy342; 25.04.2011 в 00:00.
foxy342 вне форума Ответить с цитированием
Старый 25.04.2011, 14:46   #2
Азамат Казанчев
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 110
По умолчанию

скажи хотябы на что компелятор ругается, а лчше рисунок вставь
Азамат Казанчев вне форума Ответить с цитированием
Старый 25.04.2011, 18:34   #3
foxy342
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 18
По умолчанию

извиняюсь
в общем вот такая картинка
Безымянный.jpg
foxy342 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
снежинка Коха в TurboPascal Karina89 Помощь студентам 1 26.03.2011 21:49
Алгоритм Коха ksandrj Visual C++ 1 21.10.2010 21:50
Фрактал на PHP Alter PHP 5 29.10.2008 15:24
Фрактал Дерево Пифагора Delphi yulia Помощь студентам 2 25.09.2008 08:27