查找OBJ对象的维度

时间:2016-10-01 06:30:14

标签: graphics 3d collision-detection

我有一个OBJ个文件Cone, Sphere and Cube。如何找到这些对象的维度,以便在碰撞检测类中使用它?

即如何找到Radius, Length of Cube and Radius and Height of cone?或者有更好的碰撞检测方法,我在游戏中有数百个随机粒子可能会或可能不会与这些物体碰撞。

1 个答案:

答案 0 :(得分:0)

立方体的长度是一个面中两个连续点的距离。 如果用立方体的半径表示它的对角线,则它的长度为sqrt {3}。

对于球体,您可以通过平均所有顶点找到它的中心。 它的半径是任何顶点和中心之间的距离。 如果球体不是高分辨率,它可以正常工作。 否则,您必须求解方程组以找到通过四个点的球体。你可以看看这个: https://www.quora.com/How-do-you-find-the-center-and-radius-of-a-sphere-given-any-four-arbitrary-points-x_1-y_1-z_1-x_2-y_2-z_2-x_3-y_3-z_3-x_4-y_4-z_4

对于圆锥体:可能有一个顶点连接到所有其他顶点。这个顶点很容易找到你。我们称之为p。 取p以外的三个顶点。找到通过这些顶点的圆。叫那个c。 p和c之间的距离是高度。 c和除p之外的任何顶点之间的距离将是半径。要找到通过三个点的圆,您需要再次求解具有三个未知数的方程组。由于圆的方程是(x-a)^ 2 +(y-b)^ 2 = r ^ 2。您需要将三个点的值放在等式中并找到a,b和r。请注意,此等式假定圆是2D。要将其用于3D,您需要首先找到通过这三个点的平面。如果你不想经历所有这些。您可以再次平均除p之外的所有顶点并找到圆的中心。半径是中心和任何点之间的距离。我实际上假设输入中的圆和球是均匀采样的,这是这些形状的大多数可用Obj文件的情况。