ZOJ 3495 Lego Bricks 计算几何
(2011-04-23 11:33:05)
标签:
zoj3495legobricks计算几何it |
分类: 计算几何 |
关键看对于稳定的理解……把线段从中间截断成两段。那么看每条小线段是否稳定。
小线段稳定如果:(1)
(圆盘的意思是圆形的区域而不仅仅是边界)。
就这么不断地扩散,稳定线段不断增多,如果能否使得所有线段都稳定。复杂度O(n2)。
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int t, n, m;
#define eps 1e-9
#define SIZE 102
struct pint
{
};
struct Cir{pint c; double r;} cir[SIZE];
struct Line{pint a, b;} line[SIZE];
double xmult(pint p1,pint p2,pint p0){
return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
}
double direction(pint p1, pint p2, pint p3)
{
}
double dist(pint p1,pint p2){
return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
}
double disptoline(pint p,pint l1,pint l2){
return fabs(xmult(p,l1,l2))/dist(l1,l2);
}
int intersect_seg_circle(pint c,double r,pint l1,pint l2){
double t1=dist(c,l1)-r,t2=dist(c,l2)-r;
pint t=c;
if (t1<eps||t2<eps)
return true;
t.x+=l1.y-l2.y;
t.y+=l2.x-l1.x;
return xmult(l1,c,t)*xmult(l2,c,t)<eps&&disptoline(c,l1,l2)-r<eps;
}
int myeps(double xx)
{
}
bool online(pint p1, pint p2, pint p3)
{
}
bool insect(pint p1, pint p2, pint p3, pint p4)
{
}
int que[SIZE], vst[SIZE];
int main()
{
}