more collision detection

Started by
0 comments, last by DarrenNix 23 years, 9 months ago
-->question part<-- The part that I''m wondering about is how do you find the intersection of a vector and the triangle''s plane, given the triangle''s three points (or possibly the normal if you need that). Notice I said vector, and not ray. That should be an easy question, but it stumps me. I have the following worked out though: Thanks for any help. darrennix@msn.com -->solution part<-- A point is in a triangle if the point is contained by all three of the triangle''s angles. A point is contained if its angle from an edge is less than the angle. In other words, if(ptinangle(point, a, b, c) && ptinangle(point, b, c, a) && ptinangle(point, c, a, b)) // it''s in the triangle! bool ptinangle(CONST POINT &v, CONST POINT &v0, CONST POINT &v1, CONST POINT &v2) { double fTheta = acos(((v.x-v0.x)*(v2.x-v0.x)+(v.y-v0.y)*(v2.y-v0.y))/(mag(v-v0)*mag(v2-v0))), fAngle = acos(((v1.x-v0.x)*(v2.x-v0.x)+(v1.y-v0.y)*(v2.y-v0.y))/(mag(v1-v0)*mag(v2-v0))); if(fTheta < fAngle) return true; return false; } That''s in 2D because I wrote a simple test app that fills all points with a color depending on whether they''re in the triangle. Email me if you want to see it.
Advertisement
it looks like u already know the rayintersection test...
if that test resolves in a collision, see if the begin point and the end point of the vertex are on the same side of the plane through the triangle...if so, there''s no collision...
if not so, there''s a collision...

(u can do that easily with the plane equitation)

does that make sense?
ok,
hope that helped,

cya,

Phil



Visit Rarebyte! and no!, there are NO kangaroos in Austria (I got this question a few times over in the states ;) )

This topic is closed to new replies.

Advertisement