Я работал над созданием библиотеки мешей. Я хочу добавить функцию, которая будет определять, находится ли точка внутри трехмерной сетки или нет.
Я что-то пробовалкак в случае с лучом.
Но проблема в том, что в моем алгоритме, чтобы проверить возможность, я проецирую точку на плоскость вдоль оси Z. Если проецируемая точка находится в пределах квад / три и значения zспроецированная точка больше, чем значение Z исходной точки, я буду считать лицо. Если нет, то если это не так. Если общий счет равен ODD, то это означает, что точка находится внутри трехмерного тома.
ispointinside3Dspace(point,facelist)
{
for faces in the object:
{
project the point onto the face along Z axis;
if( projected point is within the face):
{
if( projectedpoint->z > point->z ):
{
face_hit++;
}
}
}
if(face_hit%2==1)
{
return(1);
}
else
{
return(0);
}
}
Если спроецированная точка в этом алгоритме равна вершине на этой грани, она будет засчитана более одного раза, так как одна и та же вершина будет разделена на 4 квадра / много трис. Есть лучший алгоритм.Как мне избежать такого пересчета ??? Если я пропущу возможность того, что спроецированная точка будет вершиной на грани, я не получу правильных результатов.