Data update
This commit is contained in:
parent
8e4e15fa56
commit
72eb4943cb
1853 changed files with 35514 additions and 9441 deletions
53
Task/Fractal-tree/Free-Pascal-Lazarus/fractal-tree.pas
Normal file
53
Task/Fractal-tree/Free-Pascal-Lazarus/fractal-tree.pas
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
program FractalTree;
|
||||
|
||||
uses
|
||||
cthreads, // Required for multithreading on supported platforms
|
||||
Math, PtcCrt, PtcGraph, SysUtils;
|
||||
|
||||
const
|
||||
TreeDepth = 17; // Maximum depth of the tree
|
||||
|
||||
procedure DrawTree(X1, Y1: Integer; Angle: Double; Depth: Integer);
|
||||
var
|
||||
X2, Y2, Thickness: Integer;
|
||||
begin
|
||||
if Depth = 0 then
|
||||
Exit;
|
||||
|
||||
// Calculate the next point
|
||||
X2 := Trunc(X1 + Cos(DegToRad(Angle)) * Depth * 6);
|
||||
Y2 := Trunc(Y1 + Sin(DegToRad(Angle)) * Depth * 6);
|
||||
|
||||
// Set the color based on depth
|
||||
SetColor(986895 * Depth);
|
||||
|
||||
// Dynamically calculate thickness (thicker at smaller depths)
|
||||
Thickness := Max(1, Depth div 5); // Ensure thickness is at least 1
|
||||
SetLineStyle(0, 0, Thickness);
|
||||
|
||||
// Draw the branch
|
||||
Line(X1, Y1, X2, Y2);
|
||||
|
||||
// Recursively draw the left and right branches
|
||||
DrawTree(X2, Y2, Angle - 15, Depth - 1);
|
||||
DrawTree(X2, Y2, Angle + 15, Depth - 1);
|
||||
end;
|
||||
|
||||
var
|
||||
ModeInfo: PModeInfo;
|
||||
begin
|
||||
// Query and set the graphics mode for 1600x900 resolution with 24-bit color
|
||||
ModeInfo := QueryAdapterInfo;
|
||||
repeat
|
||||
ModeInfo := ModeInfo^.Next;
|
||||
until (ModeInfo^.MaxX = 1599) and (ModeInfo^.MaxY = 899) and (ModeInfo^.MaxColor = 16777216);
|
||||
|
||||
InitGraph(ModeInfo^.DriverNumber, ModeInfo^.ModeNumber, '');
|
||||
|
||||
// Draw the fractal tree
|
||||
DrawTree(ModeInfo^.MaxX div 2, ModeInfo^.MaxY, -90, TreeDepth);
|
||||
|
||||
// Wait for user input before closing
|
||||
ReadKey;
|
||||
CloseGraph;
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue