line3ret;
ret.a=parallel(v.a,v.b,u.a,u.b,u.c)?intersection(v.b,v.c,u.a,u.b,u.c):intersection(v.a,v.b,u.a,u.b,u.c);
ret.b=parallel(v.c,v.a,u.a,u.b,u.c)?intersection(v.b,v.c,u.a,u.b,u.c):intersection(v.c,v.a,u.a,u.b,u.c);
returnret;
}
line3 intersection(point3 u1,point3u2,point3 u3,point3 v1,point3 v2,point3 v3){
line3ret;
ret.a=parallel(v1,v2,u1,u2,u3)?intersection(v2,v3,u1,u2,u3):intersection(v1,v2,u1,u2,u3);
ret.b=parallel(v3,v1,u1,u2,u3)?intersection(v2,v3,u1,u2,u3):intersection(v3,v1,u1,u2,u3);
returnret;
}
double ptoline(point3 p,line3 l){
returnvlen(xmult(subt(p,l.a),subt(l.b,l.a)))/distance(l.a,l.b);
}
double ptoline(point3 p,point3 l1,point3l2){
returnvlen(xmult(subt(p,l1),subt(l2,l1)))/distance(l1,l2);
}
double ptoplane(point3 p,plane3 s){
returnfabs(dmult(pvec(s),subt(p,s.a)))/vlen(pvec(s));
}
double ptoplane(point3 p,point3 s1,point3s2,point3 s3){
returnfabs(dmult(pvec(s1,s2,s3),subt(p,s1)))/vlen(pvec(s1,s2,s3));
}
double linetoline(line3 u,line3 v){
point3n=xmult(subt(u.a,u.b),subt(v.a,v.b));
returnfabs(dmult(subt(u.a,v.a),n))/vlen(n);
}
double linetoline(point3 u1,point3u2,point3 v1,point3 v2){
point3n=xmult(subt(u1,u2),subt(v1,v2));
returnfabs(dmult(subt(u1,v1),n))/vlen(n);
}
double angle_cos(line3 u,line3 v){
returndmult(subt(u.a,u.b),subt(v.a,v.b))/vlen(subt(u.a,u.b))/vlen(subt(v.a,v.b));
}
double angle_cos(point3 u1,point3 u2,point3v1,point3 v2){
returndmult(subt(u1,u2),subt(v1,v2))/vlen(subt(u1,u2))/vlen(subt(v1,v2));
}
double angle_cos(plane3 u,plane3 v){
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-34960-37.html
为无需考虑国际舆论