for(int j = Poly.numverts-1, i = 0; i < Poly.numverts; j = i, i ++){ Vector E = Poly.V</span> - Poly.V<span class="cpp-number">[j]</span>;<br> Vector D = P - V<span class="cpp-number"></span>;<br> Vector En= E.Cross(Poly.Normal);<br> <span class="cpp-keyword">float</span> d = D.Dot(En);<br><br> <span class="cpp-keyword">if</span> (d < 0.0f) <span class="cpp-keyword">return</span> <span class="cpp-keyword">false</span>;<br>}<br><span class="cpp-keyword">return</span> <span class="cpp-keyword">true</span>;<br></pre></font></td></tr></table><!–ENDSCRIPT–><br><br>two subs + one cross + one dot per edge. Hardly a stretch for a processor. And it should be easy to really optimise the hell of it. And unrolling for triangles, …