Samples 3D

This commit is contained in:
miks1965 2017-08-22 22:53:41 +03:00
parent d0326b5a22
commit 88563f5fa7
7 changed files with 167 additions and 0 deletions

View file

@ -0,0 +1,54 @@
uses Graph3D;
begin
Window.Title := '3D-ďđčěčňčâű';
//var a := Any(0,0,0,Colors.Red);
//a.MoveOn(-5,2,0);
var rr := Rectangle3D(-3.5,-2,0,3,2,Colors.MediumPurple);
rr.Rotate(v3d(0,1,0),30);
var ńňđĺëęč := CoordinateSystem(2);
var Ar := Arrow(3,0,0,0,0,2,Colors.Tan);
var p := P3D(5,-5,0);
var t := TruncatedCone(p,2,0.9,0.7,False,Colors.Red);
p := p.MoveX(-2);
TruncatedCone(p,2,0.9,0.7,Colors.BlueViolet);
p := p.MoveX(-2);
Cylinder(p,2,0.9,False,Colors.Crimson);
p := p.MoveX(-2);
var cc := Cylinder(p,2,0.9,Colors.Chocolate);
p := p.MoveX(-2);
var ęîíóń := Cone(p,2.5,0.9,Colors.DarkGreen);
p := p.MoveX(-2);
var c := Sphere(p.MoveZ(0.7),1,Colors.Crimson);
Text3D(p.MoveZ(2.3),'Ńôĺđŕ',0.7);
p := P3D(5,-2,0);
var ÷ŕéíčę := Teapot(p.MoveZ(0.9),Colors.ForestGreen);
//÷ŕéíčę.Rotate(V3D(0,1,0),45);
var bb := BillboardText(p.Move(2,0,0.7),'Billboard'+NewLine + '"×ŕéíčę"',12);
p := p.MoveX(-2.75);
var cb := Cube(p.MoveZ(0.75),1.5,Colors.DodgerBlue);
cb.Scale(1.2);
cb.Rotate(V3D(0,0,1),45);
p := p.MoveX(-2.75);
var b := Box(p,Sz3D(2,1,1),Colors.PaleGreen);
b.Rotate(V3D(0,1,0),-30);
p := P3D(5,1,0);
var ýëëčďńîčä := Ellipsoid(p.MoveZ(0.6),1.3,0.8,0.6,Colors.Violet);
p := p.MoveX(-7);
var pp := Tube(p,2,0.7,0.5,Colors.DodgerBlue);
//View3D.Save('a2.jpg');
{while True do
begin
÷ŕéíčę.Rotate(V3D(0,0,1),10.8);
ýëëčďńîčä.Rotate(V3D(0,0,1),-5.8);
ńňđĺëęč.Rotate(V3D(0,0,1),1);
Sleep(50);
end;}
end.

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 KiB

View file

@ -0,0 +1,25 @@
uses Graph3D;
begin
View3D.Title := 'Âðàùåíèå Çåìëè';
View3D.CameraMode := CameraMode.Inspect;
View3D.ShowCoordinateSystem := False;
View3D.ShowGridLines := False;
View3D.ShowViewCube := False;
View3D.ShowCameraInfo := False;
View3D.BackgroundColor := Colors.Black;
var c := Sphere(0,0,0,5,Colors.Wheat);
c.Material := ImageMaterial('Earth.jpg');
var gr := 0;
var dgr := 1;
while True do
begin
c.Rotate(V3D(0,0,1),1);
Sleep(10);
gr += dgr;
if (gr<=0) or (gr>=255) then
dgr := - dgr;
View3D.BackgroundColor := RGB(gr,gr,gr);
end;
end.

View file

@ -0,0 +1,16 @@
uses Graph3D;
begin
View3D.Title := 'Äâèãàéòå ÷àéíèê ïðè ïîìîùè ñòðåëîê';
var t := Teapot(0, 0, 1, Colors.Green);
OnKeyDown := k -> begin
case k of
Key.Left: t.X += 1;
Key.Right: t.X -= 1;
Key.Down: t.Y += 1;
Key.Up: t.Y -= 1;
Key.PageUp: t.Z += 1;
Key.PageDown: t.Z -= 1;
end;
end;
end.

View file

@ -0,0 +1,22 @@
uses Graph3D;
begin
View3D.ShowGridLines := False;
Camera.Position := P3D(12,16,24);
Camera.LookDirection := Camera.Position.Multiply(-1).ToVector3D;
var sz := 12;
var alpha := 100;
var planeXZ := Rectangle3D(0,0,0,sz,sz,V3D(0,1,0),Colors.Green.ChangeAlpha(alpha));
var planeXY := Rectangle3D(0,0,0,sz,sz,V3D(0,0,1),Colors.Blue.ChangeAlpha(alpha));
var planeYZ := Rectangle3D(0,0,0,sz,sz,V3D(1,0,0),V3D(0,1,0),Colors.Red.ChangeAlpha(alpha));
BillboardText(sz/2,sz/2,0,'XY',20);
BillboardText(0,sz/2,sz/2,'YZ',20);
BillboardText(sz/2,0,sz/2,'XZ',20);
var len := 8;
CoordinateSystem(len,0.3);
BillboardText(len+0.5,0,0,'X',20);
BillboardText(0,len+0.5,0,'Y',20);
BillboardText(0,0,len+0.5,'Z',20);
end.

View file

@ -0,0 +1,27 @@
uses Graph3D;
begin
Window.Title := 'Âðàùåíèå êàìåðû';
var tp := Teapot(0,0,2,Colors.Green);
tp.Scale(2);
Camera.Position := P3D(8,16,20);
Camera.LookDirection := Camera.Position.Multiply(-1).ToVector3D;
var d := 26.0;
{loop 200 do
begin
Sleep(20);
Camera.SetDistanse(d);
d -= 0.05;
end;}
var t := 0.0;
while True do
begin
Sleep(10);
Camera.Position := P3D(15*cos(t),15*sin(t),10);
Camera.UpDirection := V3D(0,0,1);
//Camera.LookDirection := Camera.Position.Multiply(-1).ToVector3D;
t += 2*Pi/360/2;
end;
Camera.LookDirection := Camera.Position.Multiply(-1).ToVector3D;
end.

View file

@ -0,0 +1,23 @@
uses Graph3D;
begin
View3D.ShowGridLines := False;
var Öèôåðáëàò := Cylinder(0,0,-0.4,0.2,6,Colors.DeepPink);
var Ñåê := Arrow(0,0,0,0,-5.5,0,0.2,Colors.Yellow);
var Ìèí := Arrow(0,0,0,0,-6.0,0,0.3,Colors.Red);
var a := 0;
var r := 5.8;
loop 60 do
begin
Sphere(r*cos(a*Pi/180),r*sin(a*Pi/180),-0.2,0.1,Colors.White);
a += 6;
end;
while True do
begin
Sleep(10);
Ñåê.Rotate(v3D(0,0,1),-6);
Ìèí.Rotate(v3D(0,0,1),-6/60);
end;
end.