计算几何板子

struct node{
    double x,y;
};
node a,b,c;
//求两个点之间的长度
double len(node a,node b) {
    double tmp = sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
    return tmp;
}
//给出三个点,求三角形的面积  海伦公式: p=(a+b+c)/2,S=sqrt(p(p-a)(p-b)(p-c))
double Area(node a,node b,node c){
    double lena = len(a,b);
    double lenb = len(b,c);
    double lenc = len(a,c);

    double p = (lena + lenb + lenc) / 2.0;
    double S = sqrt(p * (p - lena) * (p - lenb) * (p - lenc));
    return S;
}
//三角形求每条边对应的圆心角
void Ran() {
    double lena = len(a,b);
    double lenb = len(b,c);
    double lenc = len(a,c);
    double A = acos((lenb * lenb + lenc * lenc - lena * lena) / (2 * lenb * lenc));
    double B = acos((lena * lena + lenc * lenc - lenb * lenb) / (2 * lena * lenc));
    double C = acos((lena * lena + lenb * lenb - lenc * lenc) / (2 * lena * lenb));
}
//求外接圆半径r = a * b * c / 4S 
double R(node a,node b,node c) {
    double lena = len(a,b);
    double lenb = len(b,c);
    double lenc = len(a,c);
    double S = Area(a,b,c);
    double R = lena * lenb * lenc / (4.0 * S);
}
const double eps = 1e-8, pi = acos(-1);
const int N = 1e5 + 10;
struct point {
    double x, y;

    point() {}

    point(double _x, double _y) {
        x = _x;
        y = _y;
    }

    point operator-(const point &p) const {
        return point(x - p.x, y - p.y);
    }

    point operator+(const point &p) const {
        return point(x + p.x, y + p.y);
    }

    double operator*(const point &p) const {
        return x * p.y - y * p.x;
    }

    double operator/(const point &p) const {
        return x * p.x + y * p.y;
    }
}a[N], b[N << 1];

struct line {
    point p1, p2;
    double ang;

    line() {}

    line(point p01, point p02) {
        p1 = p01;
        p2 = p02;
    }

    void getang() {
        ang = atan2(p2.y - p1.y, p2.x - p1.x);
    }
}c[N], q[N];

struct circle
{
    double x, y, r;
}cc;

struct point3 {
    double x, y, z;

    point3() {}

    point3(double _x, double _y, double _z) {
        x = _x;
        y = _y;
        z = _z;
    }

    point3 operator-(const point3 &p) const {
        return point3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值