Unity3D-使用vector3点定义的立方体形状的3d点(vector3)

时间:2019-05-10 11:11:08

标签: unity3d vector geometry

我正在使用四个点和立方体的厚度生成立方体状的形状。立方体的厚度和向前的方向用于生成在z轴上更远的点,从而生成立方体而不是平坦的正方形。

我正在尝试确定形状是否与其他形状相交。我认为最简单的方法是检查是否有任何拐角点在其他形状内或沿边缘一半的点(即两个拐角点之间的点)。

我正在努力创建一种可以准确确定给定点是否在形状内的方法。

我已经根据Unity的Rect尝试了以下方法。

public bool ContainsPoint(Vector3 point)
        {
            bool x = (point.x >= lowerBottomLeft.x && point.x <= upperBottomRight.x);
            bool y = (point.y >= UpperBottomLeft.y && point.y <= upperTopLeft.y);
            bool z = (point.z >= UpperBottomLeft.z && point.z <= lowerTopLeft.z); 

            if (x && y && z)
            {
                return true;
            }
            return false;
        }

这是我创建形状的方式。

private void ConfigureHandBounds(Vector3 topL, Vector3 topR, Vector3 bottomL, Vector3 bottomR, Vector3 dir, float depth)
        {
            this.height = depth;
            this.direction = dir;

            upperTopLeft = topL;
            upperTopRight = topR;
            upperBottomLeft = bottomL;
            upperBottomRight = bottomR;

            //Calculate lower positions
            lowerTopLeft = (upperTopLeft + (dir.normalized * height));
            lowerTopRight = (upperTopRight + (dir.normalized * height));
            lowerBottomLeft = (upperBottomLeft + (dir.normalized * height));
            lowerBottomRight = (upperBottomRight + (dir.normalized * height));

            center = (lowerBottomLeft + upperTopRight) * 0.5f;
        }

0 个答案:

没有答案