坐标旋转物体

时间:2017-10-31 06:48:03

标签: c# math unity3d

我正在尝试使用光线投影计算球体上的坐标,并使用hit.point获取交点,然后将其计算为纬度和经度。

然而,我遇到的问题是球体旋转并且hit.point是统一环境中的全局坐标。因此,当球体转动时,hit.point保持不变。如何解释此轮换以获得正确的值?

2 个答案:

答案 0 :(得分:0)

您可以使用Transform.InverseTransformPoint

吗?
var sphereTransform = sphereObj.transform;
Vector3 spherePosition = sphereTransform.InverseTransformPoint(worldPosition);

答案 1 :(得分:0)

您有两种选择:1。从头开始计算对象坐标中的交点。 2.之后将交点从世界转换为对象坐标。

选项1

许多球体射线脚轮已经在物体坐标(位于原点的球体......)中进行计算,因为它大大简化了计算。您通常知道球体的模型变换。只需使用此变换的反转变换光线,就可以在球体的对象坐标系中表示光线。然后像以前一样进行交叉计算,结果将再次出现在对象坐标中。关键点是两个对象(球体和射线)必须在同一坐标系中(在对象坐标中或在世界坐标中都是)。

选项2

第二个选项是计算世界坐标中的所有内容并将结果转换回对象坐标(请参阅Mikko在我写这篇文章时刚刚发布的答案)。