Нужно соединить две точки Point3D с помощью объекта TCylinder. Пишу в Delphi XE3. Безрезультатно испробовал разные варианты. Последний:
| Код |
TTmp = class(TControl3D); ...
var V1, V2 : TVector3D; XA, ZA : Single; begin V1.X := 0; V1.Y := 0; V1.Z := 0; V2.X := 30; V2.Y := 30; V2.Z := 30; C := TCylinder.Create(Form1); C.Projection := TProjection.pjScreen; C.Parent := Dummy1; C.Width := 10; C.Depth := 10; C.Height := Sqrt(Power(V1.X - V2.X, 2) + Power(V1.Y - V2.Y, 2) + Power(V1.Z - V2.Z, 2)); C.Position.X := (V1.X + V2.X) / 2; C.Position.Y := (V1.Y + V2.Y) / 2; C.Position.Z := (V1.Z + V2.Z) / 2;
ZA := 0; if ((V1.Y - Prof[i].Y) <> 0) then ZA := -(ArcTan((V1.X - V2.X) / (V1.Y - V2.Y))) * 180 / PI;
XA := (ArcCos((V1.Z - V2.Z) / (C.Height))) * 180 / PI;
m := CreateRotationMatrix3D(XA, 0, ZA); TTmp(C).FLocalMatrix := Matrix3DMultiply(m, TTmp(C).FLocalMatrix); end;
|
|