2013-C12-team5

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

{{{
D卡了一整场, 真是痛苦 by Kotomi
}}}

{{{
inline double line_to_line(point3 u1,point3 u2,point3 v1,point3 v2,point3& p1,point3& p2){
    point3 s0=(u2-u1)*(v2-v1);
    point3 tmp=s0*(s0^(v1-u1))/s0.sqrlen();
    p2=intersection(u1+tmp,u2+tmp,v1,v2);
    p1=p2-tmp; 
    return (p1-p2).length();
}
感觉计算几何搞半天搞不出来就得手写,模板什么的太可怕了。
}}}

{{{
不需要使用任何其他过程的解法.....
void lins(const point3 &a, const point3 &b, const point3 &c, const point3 &d, point3 &p1, point3 &p2) {
    point3 s1, s2, s;
    s1 = b-a; s2 = d-c; s = s1*s2;
    double t1, t2;
    t1 = (((c-a)*s2)^s) / s.sqrlen();
    t2 = (((c-a)*s1)^s) / s.sqrlen();
    p1 = a+s1*t1;
    p2 = c+s2*t2;
}
}}}
D卡了一整场, 真是痛苦 by Kotomi
inline double line_to_line(point3 u1,point3 u2,point3 v1,point3 v2,point3& p1,point3& p2){
    point3 s0=(u2-u1)*(v2-v1);
    point3 tmp=s0*(s0^(v1-u1))/s0.sqrlen();
    p2=intersection(u1+tmp,u2+tmp,v1,v2);
    p1=p2-tmp; 
    return (p1-p2).length();
}
感觉计算几何搞半天搞不出来就得手写,模板什么的太可怕了。
不需要使用任何其他过程的解法.....
void lins(const point3 &a, const point3 &b, const point3 &c, const point3 &d, point3 &p1, point3 &p2) {
    point3 s1, s2, s;
    s1 = b-a; s2 = d-c; s = s1*s2;
    double t1, t2;
    t1 = (((c-a)*s2)^s) / s.sqrlen();
    t2 = (((c-a)*s1)^s) / s.sqrlen();
    p1 = a+s1*t1;
    p2 = c+s2*t2;
}