▽1
●
いつか ベストアンサー |
三角錐のすべての面に対して、
面に含まれない頂点と判定する点が、
面で区切られた空間の同じ側にあるなら、
判定する点は三角錐の中にあります。
なので
三角錐の頂点をabcd、判定する点をpとします。
abcを含む平面と線分dpが交差しない。
abdを含む平面と線分cpが交差しない。
acdを含む平面と線分bpが交差しない。
bcdを含む平面と線分apが交差しない。
上の4つがすべて真なら
ただし、点pが平面に含まれる場は交差しないとします。
点pは三角錐abcdの中にあることになります。
以下リンク先を参考にして下さい。
平面の求め方
http://www.sousakuba.com/Programming/gs_plane.html
線分と平面が交差するかの判定方法
http://www.sousakuba.com/Programming/gs_plane_line_intersect.html
>さらには、複数点(20個程度)の凸包のなかにあるかどうかの判定方法も教えてください。
判定する点を点pとします。
凸包の点すべてに真偽を付けられるようにします。
初めにすべての点を真にします。
真の頂点から任意の3点を選びます。
選んだ3点を含む平面で区切られた空間で、p点と反対側の点を偽にします。
同一頂点の組み合わせにならないように3点を選んで繰り返し処理していきます。
3点を含む平面にp点が含まれた場合、次の3点を選びます。
すべての真の頂点の組み合わせを処理した後に
真の点の数が3個 => p点は凸包の中に無い
ただし、その3点を含む平面にp点が含まれる場合は、
3点の三角形の中に有るなら、p点は凸包の中に有る。
3点の三角形の中に無いなら、p点は凸包の中に無い。
真の点の数が4個 => p点は凸包の中に有る
となります。
昔自作していた3Dのポリゴン処理プログラムを思い出しながら書いています。
書き忘れがあったらごめんなさい。