Перевести Код Из Дельфи На С++

02.06.2014
10
0
#1
Если кому то не в лом, посмотрите пожалуста! Задача кажется крайне интересной!

PHP:
unit Unit1;

interface

uses //После этого слова идет перечисление подключенных модулей.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;

//В этих модулях находится описание разных методов и процедур, 

//которые мы можем использовать




type //После этого идет объявление типов
TForm1 = class(TForm) //Начало описания нового объекта TForm1
BitBtn1: TBitBtn; //Эта наша кнопка:
PaintBox1: TPaintBox;
procedure BitBtn1Click(Sender: TObject); //Это событие от кнопки
procedure draw();
private
{ Private declarations }
public
{ Public declarations }
end;

var	//Объявление глобальных переменных
Form1: TForm1; //это описана переменная Form1 типа объекта TForm1

implementation

{$R *.dfm}
{Далее идет процедура, которую создал Delphi для обработки

события OnClick, когда мы дважды щелкнули по событию в 

объектном инспекторе.}

procedure TForm1.BitBtn1Click(Sender: TObject); //Имя процедуры
begin  //Начало процедуры
draw();

end; //Конец процедуры





procedure Tform1.draw(); //Имя процедуры

const
iterations = 50000; //Кол-во итераций

var //Объявление глобальных переменных
t, x, y: real;
p: real;//CЛУЧАЙНАЯ ВЕЛИЧИНА
k: longint;
mid_x, mid_y, radius: integer;

begin  //Начало процедуры
mid_x := paintbox1.width div 2;
mid_y := paintbox1.height -100;
radius := trunc(0.1 * mid_y);
randomize;
x := 1.0;
y := 0.0;
for k := 1 to iterations do
begin
p := random;
t := x;
if p <= 0.85 then //Построение верхней части листа
begin
x := 0.84 * x -0.045 * y;
y := 0.045 * t + 0.86  * y + 1.6;
end
else
if p <= 0.92 then //Построение левого листа
begin	//Начало процедуры
x := 0.25  * x - 0.26 * y;
y := 0.23 * t + 0.25  * y + 1.6;

end				//Построение правого листа
else if p <= 0.99 then
begin										  //Начало процедуры
x := -0.135  * x + 0.28 * y;
y := 0.26 * t + 0.245 * y + 0.44;
end
else
begin			 //Построение ст*цензура*
x := 0.0;
y := 0.16 * y ;
end;
paintbox1.Canvas.Pixels[mid_x+round(radius*x), mid_y-round(radius*y)+35]:=clGreen
end
end.//Конец модуля. После end и точки никакой код больше не воспринимается.
 
02.06.2014
10
0
#3
Смутно помнится, код рисует на канве папоротник. Стебель, листья. Коду уже года два. Он у меня на диске в записках лежал.
 
R

rrrFer

Гость
#4
В С++ нет встроенных функций для рисования вообще. Нужно пользовать сторонние библиотеки. Я могу перевести с использованием Qt, но оно надо?