Cleanup in scene

This commit is contained in:
neauoire 2020-05-15 20:28:41 +09:00
parent 75d3045f31
commit 37feadd9dc

View File

@ -12,7 +12,7 @@ interface
type
Point3DPtr = ^Point3D;
Link3D = record
Edge3D = record
a: Point3DPtr;
b: Point3DPtr;
end;
@ -25,9 +25,11 @@ interface
Shape3D = record
origin: Point3D;
verticesLength, edgesLength, facesLength: Integer;
verticesLength:Integer;
edgesLength:Integer;
facesLength: Integer;
vertices: array[1..LIMIT_VERTICES] of Point3D;
edges: array[1..LIMIT_EDGES] of Link3D;
edges: array[1..LIMIT_EDGES] of Edge3D;
faces: array[1..LIMIT_FACES] of Face3D;
end;
@ -54,24 +56,24 @@ interface
procedure InitWindow;
{scene}
procedure AddShape3D (var scene: scene3D; shape: Shape3DPtr);
procedure SetScene3D (var scene: Scene3D);
procedure SetLk3D (var lk3D: Link3D; a, b: Point3DPtr);
procedure SetFc3D (var fc3D: Face3D; a, b, c: Point3DPtr);
procedure SetEdge3D (var edge: Edge3D; a, b: Point3DPtr);
procedure SetFace3D (var face: Face3D; a, b, c: Point3DPtr);
{ basics }
procedure AddVertice3D (var shape: Shape3D; x, y, z: Fixed);
procedure AddEdge3D (var shape: Shape3D; a, b: Integer);
procedure AddFace3D (var shape: Shape3D; a, b, c: Integer);
{ transforms }
procedure AddShape3D (var scene: scene3D; shape: Shape3DPtr);
procedure MoveShape3D (shape: Shape3DPtr; x, y, z: Fixed);
procedure ScaleShape3D (shape: Shape3DPtr; x, y, z: LongInt);
procedure TurnXShape3D (shape: Shape3DPtr);
procedure TurnYShape3D (shape: Shape3DPtr);
procedure TurnZShape3D (shape: Shape3DPtr);
{ draw }
procedure DrawLink3D (link: Link3D);
procedure DrawEdge3D (edge: Edge3D);
procedure DrawShape3D (shape: Shape3DPtr);
procedure DrawScene3D (scene: Scene3D);
{ basics }
procedure AddVertice3D (var shape: Shape3D; x, y, z: Fixed);
procedure AddEdge3D (var shape: Shape3D; a, b: Integer);
procedure AddFace3D (var shape: Shape3D; a, b, c: Integer);
implementation
@ -132,17 +134,17 @@ implementation
SetPt3D(shape^.vertices[i], shape^.vertices[i].y, shape^.vertices[i].x, shape^.vertices[i].z);
end;
procedure SetLk3D (var lk3D: Link3D; a, b: Point3DPtr);
procedure SetEdge3D (var edge: Edge3D; a, b: Point3DPtr);
begin
lk3D.a := a;
lk3D.b := b;
edge.a := a;
edge.b := b;
end;
procedure SetFc3D (var fc3D: Face3D; a, b, c: Point3DPtr);
procedure SetFc3D (var face: Face3D; a, b, c: Point3DPtr);
begin
fc3D.a := a;
fc3D.b := b;
fc3D.c := c;
face.a := a;
face.b := b;
face.c := c;
end;
procedure SetScene3D (var scene: Scene3D);
@ -163,7 +165,7 @@ implementation
if shape.EdgesLength > LIMIT_EDGES - 1 then
SceneError('Edges limit reached');
shape.EdgesLength := shape.EdgesLength + 1;
SetLk3D(shape.edges[shape.EdgesLength], @shape.vertices[a], @shape.vertices[b]);
SetEdge3D(shape.edges[shape.EdgesLength], @shape.vertices[a], @shape.vertices[b]);
end;
procedure AddFace3D (var shape: Shape3D; a, b, c: Integer);
@ -174,10 +176,10 @@ implementation
SetFc3D(shape.faces[shape.facesLength], @shape.vertices[a], @shape.vertices[b], @shape.vertices[c]);
end;
procedure DrawLink3D (link: Link3D);
procedure DrawEdge3D (edge: Edge3D);
begin
MoveTo3D(link.a^.x, link.a^.y, link.a^.z);
LineTo3D(link.b^.x, link.b^.y, link.b^.z);
MoveTo3D(edge.a^.x, edge.a^.y, edge.a^.z);
LineTo3D(edge.b^.x, edge.b^.y, edge.b^.z);
end;
procedure DrawFace3D (face: Face3D);
@ -202,7 +204,7 @@ implementation
for i := 1 to shape^.facesLength do
DrawFace3D(shape^.faces[i]);
for i := 1 to shape^.EdgesLength do
DrawLink3D(shape^.edges[i]);
DrawEdge3D(shape^.edges[i]);
end;
procedure DrawWidget (size: Integer);