Я создаю форму куба, используя четыре точки и толщину куба. Толщина куба и направление вперед используются для генерации точек дальше по оси 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;
}