2015-07-24 5 views
0

У меня есть несколько областей в трехмерном пространстве, и каждый регион формируется с четырьмя точками. Также у меня есть вектор, и я бы хотел найти область, которая пересекается вектором. Любая помощь будет высоко оценен.Линия, пересекающая регион

enter image description here

ответ

0

Я думаю, самый простой способ добиться того, что вы хотите использовать в качестве BoxColliderTrigger с вашими регионами. и выполните свою реализацию в OnTriggerEnter().

0

С моей точки зрения, вы хотите узнать пересечение лучей с некоторыми 3D-полигонами, которые образованы с 4 точками. Тем не менее, я знаю только, как это сделать с помощью 3D-боксов.

Прежде всего, вам необходимо перенести это в Unity, которое должно быть очень простым (источник: http://tavianator.com/fast-branchless-raybounding-box-intersections/).

void intersection(Box b, Ray r, out float tMin, out float tMax) 
{ 
    double tx1 = (b.min.x - r.x0.x)*r.n_inv.x; 
    double tx2 = (b.max.x - r.x0.x)*r.n_inv.x; 

    tmin = min(tx1, tx2); 
    tmax = max(tx1, tx2); 

    double ty1 = (b.min.y - r.x0.y)*r.n_inv.y; 
    double ty2 = (b.max.y - r.x0.y)*r.n_inv.y; 

    tmin = max(tmin, min(ty1, ty2)); 
    tmax = min(tmax, max(ty1, ty2)); 
} 

Далее необходимо прокрутить все поля. Для каждого цикла вы можете найти вектор пересечения, используя Ray.GetPoint с результатами tMin и tMax.

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

Смежные вопросы