Delphi 获取三维网格上某个位置的坐标

Delphi 获取三维网格上某个位置的坐标,delphi,delphi-xe3,firemonkey-fm2,Delphi,Delphi Xe3,Firemonkey Fm2,我有一个Firemonkey表单,表单上的3dgrid组件设置为(0,0,0)。我想在单击鼠标时获得网格上某个点的坐标。我知道如何获取光标的屏幕位置,但我需要3d网格本身相对于3d网格上鼠标位置的坐标。您可以试试 伊曼纽尔 procedure TFormMain.EveOnMyLayer3D_MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single; RayPos, Ra

我有一个Firemonkey表单,表单上的3dgrid组件设置为(0,0,0)。我想在单击鼠标时获得网格上某个点的坐标。我知道如何获取光标的屏幕位置,但我需要3d网格本身相对于3d网格上鼠标位置的坐标。

您可以试试

伊曼纽尔

procedure TFormMain.EveOnMyLayer3D_MouseUp(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Single; RayPos,
      RayDir: TVector3D);
var
  P3: TVector3D;
  LocalX, LocalY: single;


begin
  if MyLayer3D.RayCastIntersect(rayPos, rayDir, P3) then
  begin
    P3 :=  MyLayer3D.AbsoluteToLocalVector(P3);
    LocalX := P3.X*MyLayer3D.Resolution;
    LocalY := P3.Y*MyLayer3D.Resolution;
    ...

XE2和XE3中的Firemonkey是两个独立的东西,它们都与
对象pascal
无关。它们都是特定于Delphi的,Delphi不是Object Pascal。你需要决定你的问题是关于FM(XE2)还是FM2(XE3)。@Kevin我使用的是Rad Studio XE3的Delphi端,对象不是pascal吗?与C++相反:-)我的名字是肯,但答案是:不,@Ken*这是漫长的一天:)没问题。没有冒犯。你确实看到了笑容,对吗?:-)