【问题标题】:Calculating angles between two points in 3d space计算 3d 空间中两点之间的角度
【发布时间】:2015-06-21 14:40:41
【问题描述】:

我在 Unity 中有两个点(立方体游戏对象),P1(x,y,z) 和 P2(x,y,z),我必须设置 MainCamera 沿 P2P1 之间的向量定位和旋转。

我尝试了不同的方法,但没有成功。 欢迎所有建议。 谢谢。

【问题讨论】:

  • 请更具体一点:“设置 MainCamera 位置和沿 P2P1 之间的矢量旋转”是什么意思?是这个方向吗?对相机的滚动有什么要求吗?
  • 研究“camera lookat()”
  • 两个点不跨越一个角度。你指的是P1、原点和P2形成的角度吗?
  • @njuffa “两点不跨越一个角度” - 不。 Unity 中的逻辑 3D “point” 是物理Vector3(没有Point3 类型),Unity 定义Vector3.Dot() 用于计算它们之间的余弦。 OP的P1本质上是一个从(0,0,0)到"(x,y,z)"的向量
  • @MickyD Camera lookat() 非常好。谢谢

标签: c# math unity3d euler-angles


【解决方案1】:

我们可以根据点产生找到两个向量之间的角度。
角度 = arccos ( a * b / |a| * |b| );
其中:
a * b = ax * bx + ay * by + az * bz
|一个| = sqrt( ax * ax + ay * ay + az * az )
|b| = sqrt( bx * bx + by * by + bz * bz )
或者直接用这个方法:http://docs.unity3d.com/ScriptReference/Vector3.Angle.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多