Unity3D - 3d Точка (vector3) в форме куба, определенная с использованием точек vector3 - PullRequest
0 голосов
/ 10 мая 2019

Я создаю форму куба, используя четыре точки и толщину куба. Толщина куба и направление вперед используются для генерации точек дальше по оси z, в результате чего получается куб, а не плоский квадрат.

Я пытаюсь определить, пересекается ли фигура с другой. Самым простым способом, который я подумал сделать, было проверить, находятся ли какие-либо угловые точки внутри другой формы или точка на полпути вдоль края (то есть точка между двумя угловыми точками).

Я изо всех сил пытаюсь создать метод, который может точно определить, находится ли данная точка внутри фигуры.

Я попробовал следующее на основе Unect's 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;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...