Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Соединить две точки цилиндром


Автор: Steel 20.3.2016, 23:18
Нужно соединить две точки 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;



Автор: Steel 26.3.2016, 20:56
Тут решение проблемы:

http://www.babylonjs-playground.com/#1RWE59#31



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)