erosion版

从 Trac 迁移的文章

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

原文章内容如下:

{{{
struct pot{
    double x,y;
    pot() { x=0; y=0; }
    pot(double _x, double _y):x(_x),y(_y){};
};
double cross(pot a,pot b) { return a.x*b.y-a.y*b.x; }
pot to_v(pot a,pot b) { pot c=pot(b.x-a.x,b.y-a.y); return c; }

//直线相交
pot intersection_line(pot u1,pot u2,pot v1,pot v2)
{
    pot ret = u1;
    double t = ((u1.x-v1.x)*(v1.y-v2.y) - (u1.y-v1.y)*(v1.x-v2.x))
             / ((u1.x-u2.x)*(v1.y-v2.y) - (u1.y-u2.y)*(v1.x-v2.x));
    ret.x += (u2.x-u1.x) * t;
    ret.y += (u2.y-u1.y) * t;
    return ret;
}
}}}
struct pot{
    double x,y;
    pot() { x=0; y=0; }
    pot(double _x, double _y):x(_x),y(_y){};
};
double cross(pot a,pot b) { return a.x*b.y-a.y*b.x; }
pot to_v(pot a,pot b) { pot c=pot(b.x-a.x,b.y-a.y); return c; }
//直线相交
pot intersection_line(pot u1,pot u2,pot v1,pot v2)
{
    pot ret = u1;
    double t = ((u1.x-v1.x)*(v1.y-v2.y) - (u1.y-v1.y)*(v1.x-v2.x))
             / ((u1.x-u2.x)*(v1.y-v2.y) - (u1.y-u2.y)*(v1.x-v2.x));
    ret.x += (u2.x-u1.x) * t;
    ret.y += (u2.y-u1.y) * t;
    return ret;
}