通过光线投射可以选择GameObjects Collider上的一个点。在简短的视觉中,用小球体表示两个点,表示用户选择。期望计算模型压痕中任何斑点的深度。当前的想法是使用一种系统,在该系统中,用户选择压痕深度内的一个点,然后选择压痕深度外的一个点,而不是使用矢量数学来计算深度。
截至目前,我们可获得的信息是空间中的两个点(向量)及其之间的距离。我们如何使用上述数据来计算与深度中的点垂直的点?认为如果此点比深度可计算,则为那两个点之间的距离。如何解决这个问题,这是否可行?
答案 0 :(得分:0)
我认为2分是不够的。您可以看到整个场景,知道两个点都位于其中的平面,因此您可以看到最短距离(垂直)线段的方向。但是仅两点就有无限多其他有效平面经过它们。您唯一可以说的是深度受这两点之间的距离的限制。
考虑以下示例:一个点A
是(0,0,0)
,而B
是(2,1,0)
。压痕有多深?答案是:您不知道。
首先假定平面是(平面a
包含点A
,平面b
包含点B
):
a
是X = 0
,而b
是X = 2
。那么压痕深度显然是2。a
是Y = 0
,而b
是Y = 1
。那么压痕深度显然是1。a
是Z = 0
并且b
是Z = 0
。那么压痕深度显然为0。实际上,改变平面方向可以得到0
之间的任何深度以及A
和B
之间的距离。
我看到的唯一解决方案是通过选择该平面上的 3 点来固定两个平面中的至少一个。然后问题变得微不足道了。拥有3个点,您会发现
形式的平面方程a*x + b*y + c*z + d = 0
则从点(x1,y1,z1)
到该平面的距离为
dist = (a*x1 + b*y1 + c*z1 + d)/sqrt(a^2+b^2+c^2)