C# 在游戏对象旋转时计算圆上的角点

C# 在游戏对象旋转时计算圆上的角点,c#,unity3d,C#,Unity3d,我在统一的3d世界空间中有一个平面,我知道角点和轴。如果旋转该对象,我需要找到新的角点 在下图中,假设我知道左上角和右下角的矢量,但如果我顺时针旋转该平面5度,我如何计算新角在世界空间中的位置 如果可能的话,我想我正在寻找用c#做这件事的数学方法。 您可以使用四元数.Euler对点(相对于轴)应用旋转。 然后将枢轴矢量3添加回结果以获得最终位置 Vector3 corner; // absolute position of the corner Vector3 pivot; // absolut

我在统一的3d世界空间中有一个平面,我知道角点和轴。如果旋转该对象,我需要找到新的角点

在下图中,假设我知道左上角和右下角的矢量,但如果我顺时针旋转该平面5度,我如何计算新角在世界空间中的位置

如果可能的话,我想我正在寻找用c#做这件事的数学方法。

您可以使用
四元数.Euler
对点(相对于轴)应用旋转。 然后将枢轴矢量3添加回结果以获得最终位置

Vector3 corner; // absolute position of the corner
Vector3 pivot; // absolute position of the pivot
Quaternion rotation = Quaternion.Euler(x,y,z);  // x, y, z rotation
Vector3 newCorner = pivot + rotation * (corner - pivot);  // absolute position of the corner after rotation

大野牛的回答很好。我可以补充的一点是,您还可以:

  • 在角落的位置创建游戏对象
  • 将它们设置为旋转对象的子对象(本例中为平面)
  • 然后在脚本中,您只需执行以下操作即可获得他们的新职位:

    公共游戏对象角落;
    void GetCornerPosition()
    {
    返回corner.transform.position;
    }
    

    这是另一种不用任何计算就可以得到这些位置的方法。

    这太棒了,谢谢你的回答。