1.两点之间距离
2.判断两点是否重合
3.叉积//可判断点在线段或直线的哪一侧
4.点积
5.判断点p是否在线段l上
6.返回点p以点o为圆心逆时针旋转alpha(单位:弧度)后所在的位置
7.返回顶角在o点,起始边为os,终止边为oe的夹角
8.判断点与线段的关系
9.求点C到线段AB所在直线的垂足 P
10.求点p到线段l的最短距离,并返回线段上距该点最近的点np
11.求点p到线段l所在直线的距离
12.计算点到折线集的最近距离,并返回最近点
13.判断圆是否在多边形内//是返回1 否则返回0
14.返回两个 矢量 l1和l2的夹角的余弦
15.返回线段l1与l2之间的夹角
16.如果线段u和v相交(包括相交在端点处)时,返回true
17.(线段u和v相交)&&(交点不是端点)时返回true
18.线段v所在直线与线段u相交时返回true
19.根据已知两点坐标,求过这两点的直线解析方程
20.根据直线解析方程返回直线的斜率k, 水平线返回 0, 竖直线返回 1e200
21.返回直线的倾斜角
22.求点p关于直线l的对称点
23.两直线相交返回true并返回交点p,不相交则返回false
24.如果线段l1和l2相交,返回true且交点由(inter)返回,否则返回false
25.返回值:点p在圆内(包括边界)时,返回true
26.三点确定一个圆,不能构成圆返回false
27.两圆位置关系
28.空间 点到平面距离
29.点在直线同侧返回true
30.两个圆(已判断为相交或相切)的交点rp1,rp2
31.两相交圆公共面积
32.圆和直线(ax+by+c=0,a>=0)关系
2.判断两点是否重合
3.叉积//可判断点在线段或直线的哪一侧
4.点积
5.判断点p是否在线段l上
6.返回点p以点o为圆心逆时针旋转alpha(单位:弧度)后所在的位置
7.返回顶角在o点,起始边为os,终止边为oe的夹角
8.判断点与线段的关系
9.求点C到线段AB所在直线的垂足 P
10.求点p到线段l的最短距离,并返回线段上距该点最近的点np
11.求点p到线段l所在直线的距离
12.计算点到折线集的最近距离,并返回最近点
13.判断圆是否在多边形内//是返回1 否则返回0
14.返回两个 矢量 l1和l2的夹角的余弦
15.返回线段l1与l2之间的夹角
16.如果线段u和v相交(包括相交在端点处)时,返回true
17.(线段u和v相交)&&(交点不是端点)时返回true
18.线段v所在直线与线段u相交时返回true
19.根据已知两点坐标,求过这两点的直线解析方程
20.根据直线解析方程返回直线的斜率k, 水平线返回 0, 竖直线返回 1e200
21.返回直线的倾斜角
22.求点p关于直线l的对称点
23.两直线相交返回true并返回交点p,不相交则返回false
24.如果线段l1和l2相交,返回true且交点由(inter)返回,否则返回false
25.返回值:点p在圆内(包括边界)时,返回true
26.三点确定一个圆,不能构成圆返回false
27.两圆位置关系
28.空间 点到平面距离
29.点在直线同侧返回true
30.两个圆(已判断为相交或相切)的交点rp1,rp2
31.两相交圆公共面积
32.圆和直线(ax+by+c=0,a>=0)关系
33.三角形内切圆
34.过圆外一点的直线与圆的两个切点
35.已知正方形对角线上两顶点(a和c),求另两点(b和d);
36.根据一点坐标及其斜率k(已证实存在),求这条直线的解析方程
37.随机增量算法求最小覆盖圆 (点/点的个数/圆心/半径)
38.判断点q是否在凸多边形内
39.计算顶点已按逆时针或顺时针排好的 多边形面积,
40.求凸包
41.圆与n边形相交面积
#include<iostream>
#include<cmath>
#include<cstdio>
#include<algorithm>
#define INF 1E200
using namespace std;
const double PI = 3.14159265;//||acos(-1)
const double eps=0.0000000001;
struct Point //点
{
double x,y;
Point (double a=0,double b=0):x(a),y(b) {}
};
struct Line_segment //线段
{
Point s,e;
Line_segment() {}
Line_segment(Point a,Point b):s(a),e(b) {}
};
struct Line //直线
{
double A,B,C;
Line(double A=1,double B=-1,double C=0):A(A),B(B),C(C) {}
};
inline double Max(double a,double b)
{
return a>b?a:b;
}
inline double Min(double a,double b)
{
return a<b?a:b;
}
//计算几何 开始!
double Dist(Point a,Point b) //1.两点之间距离
{
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
bool equal_Point(Point a,Point b) //2.判断两点是否重合
{
return fabs(a.x-b.x)<eps&&fabs(a.y-b.y)<eps;
}
double multiply(Poin