I need to get a random point from a triangle composed of 3 points. How can I do that?
If you just want random points uniformly distributed on the triangle, you probably can just find a bounding rectangle to the triangle, and keeping those uniformly distributed points inside the triangle.
For example, I have a 3ds model where I want each face to emit particle. So I have to find random point from each face to emit a particle.
The solution is Barycentric Coordinates t1,t2,t3.
P=t1P1+t2P2+t3*P3 is a point on the plane of the triangle formed by P1,P2,P3 if 0 <=t1,t2,t3 <=1 and t1+t2+t3=1.
So just assign them 3 random values from the intervall [0,1] and normalize them by dividing by (t1+t2+t3).
Something slightly more tricky is needed if you need uniformly distributed points though.
I’m fairly certain that this will give you uniformly distributed homogeneous barycentric coordinates:
t1=Uniform(0.0,1.0);
t2=Uniform(0.0,1.0);
if(t1+t2>1.0)
{
t1=1.0-t1;
t2=1.0-t2;
}
t3=1.0-t1-t2;