This repository has been archived on 2024-12-25. You can view files and clone it, but cannot push or open issues or pull requests.
2024-03-10 20:32:51 +03:00

26 lines
736 B
ObjectPascal

uses Graph3D;
function ParametricTrajectory(a,b: real; fun: real->Point3D; N: integer) := PartitionPoints(a,b,N).Select(fun);
function ParametricCirve3D(a,b: real; fun: real->Point3D; N: integer := 200): SegmentsT;
begin
var tr := ParametricTrajectory(a,b,fun,N);
Result := Polyline3D(tr);
end;
procedure DuplicateByTrajectory(c: Object3D; a,b: real; fun: real->Point3D; N: integer);
begin
c.MoveTo(fun(a));
foreach var p in PartitionPoints(a,b,N).Skip(1).Select(fun) do
begin
var c1 := c.Clone.MoveTo(p);
c1.Rotate(OrtZ,3);
(c1 as CubeT).Color := RandomColor;
c := c1;
end;
end;
begin
var c := Cube(0,0,0,0.7,Colors.Green);
DuplicateByTrajectory(c,0,4*Pi,t->P3D(4*cos(t),4*sin(t),0.5*t),40);
end.