void Line_Plane_Intersection(VECTOR* RESULT, VECTOR* line_p0, VECTOR* line_p1, VECTOR* plane_p0, VECTOR* plane_p1, VECTOR* plane_p2)
{
VECTOR line_indeps;
VECTOR line_coefs;
vec_set(line_indeps,line_p0);
vec_set(line_coefs,line_p1);
vec_sub(line_coefs,line_p0);
VECTOR plane_N;
vec_cross(plane_N,vec_diff(NULL,plane_p1,plane_p0),vec_diff(NULL,plane_p2,plane_p0));
var plane_indep;
VECTOR plane_coefs;
plane_indep=-(plane_N.x*plane_p0.x)-(plane_N.y*plane_p0.y)-(plane_N.z*plane_p0.z);
vec_set(plane_coefs,plane_N);
vec_mul(line_indeps,plane_coefs);
vec_mul(line_coefs,plane_coefs);
var T;
T=(-plane_indep-(line_indeps.x+line_indeps.y+line_indeps.z))/(line_coefs.x+line_coefs.y+line_coefs.z);
RESULT.x=line_p0.x+T*(line_p1.x-line_p0.x);
RESULT.y=line_p0.y+T*(line_p1.y-line_p0.y);
RESULT.z=line_p0.z+T*(line_p1.z-line_p0.z);
}