struct point{
double x, y;
};
double get_angle(point p, point ps[], int n){
int i;
//过p做一条水平直线,求所有点对这条水平直线的夹角,最大的角减去最小的角即可
double Max, Min, ang1, ang2, dang, sum;
Max = Min = sum = 0;
ps[n] = ps[0];
//ang2 = atan2(ps[0].y - p.y, ps[0].x - p.x);
for(i = 1; i <= n; i++){
//ang1 = ang2;
ang1 = atan2(ps[i-1].y - p.y, ps[i-1].x - p.x);
ang2 = atan2(ps[i].y - p.y, ps[i].x - p.x);
if(ang1 - ang2 > pi) ang2 += 2 * pi;
if(ang2 - ang1 > pi) ang1 += 2 * pi;
sum += ang1 - ang2;
if(sum > Max) Max = sum;
if(sum < Min) Min = sum;
if(Max - Min > 2 * pi){
Max = Min + 2 * pi;
break;
}
}
return Max - Min;
}
分享到:
相关推荐
关于二维的点、线、多边形、圆几何关系库 c ,包含头文件就能用。 ㈠ 点的基本运算 1. 平面上两点之间距离 1 2. 判断两点是否重合 1 3. 矢量叉乘 1 4. 矢量点乘 2 5. 判断点是否在线段上 2 6. 求一点饶某点旋转后的...
7. 射线法判断点是否在多边形内 10 8. 判断点是否在凸多边形内 11 9. 寻找点集的graham算法 12 10.寻找点集凸包的卷包裹法 13 11.判断线段是否在多边形内 14 12.求简单多边形的重心 15 13.求凸多边形的重心 17...
通常,可以基于方位角而采用左 转或右转算法来生成多边形,即根据已经输入的结 点和弧段信息,按规定的方向(若按顺时针方向,则 称为右转算法;若按逆时针方向,则称左转算法), 由系统通过弧段文件自动产生多边形...
根据数据集中的中心点数据集生成泰森多边形,根据泰森多边形的中心扇区夹角角平分线分割单个的泰森多边形
从c 的基础几何函数库翻译过来的 内容包括: ㈠ 点的基本运算 1. 平面上两点之间距离 2. 判断两点是否重合 ...7. 射线法判断点是否在多边形内 8. 判断点是否在凸多边形内 9. 凸多边形的直径 10.求凸多边形的重心
7. 射线法判断点是否在多边形内 10 8. 判断点是否在凸多边形内 11 9. 寻找点集的graham算法 12 10.寻找点集凸包的卷包裹法 13 11.判断线段是否在多边形内 14 12.求简单多边形的重心 15 13.求凸多边形的重心 17...
7. 射线法判断点是否在多边形内 10 8. 判断点是否在凸多边形内 11 9. 寻找点集的graham算法 12 10.寻找点集凸包的卷包裹法 13 11.判断线段是否在多边形内 14 12.求简单多边形的重心 15 13.求凸多边形的重心 17...
7. 射线法判断点是否在多边形内 8. 判断点是否在凸多边形内 9. 寻找点集的graham算法 10.寻找点集凸包的卷包裹法 11.判断线段是否在多边形内 12.求简单多边形的重心 13.求凸多边形的重心 14.求肯定在给定多边形内的...
7. 射线法判断点是否在多边形内 8. 判断点是否在凸多边形内 9. 寻找点集的graham算法 10.寻找点集凸包的卷包裹法 11.凸包MelkMan算法的实现 12. 凸多边形的直径 13.求凸多边形的重心 ==============================...
7. 射线法判断点是否在多边形内 10 8. 判断点是否在凸多边形内 11 9. 寻找点集的graham算法 12 10.寻找点集凸包的卷包裹法 13 11.判断线段是否在多边形内 14 12.求简单多边形的重心 15 13.求凸多边形的重心 17...
7. 射线法判断点是否在多边形内 10 8. 判断点是否在凸多边形内 11 9. 寻找点集的graham算法 12 10.寻找点集凸包的卷包裹法 13 11.判断线段是否在多边形内 14 12.求简单多边形的重心 15 13.求凸多边形的重心 17...
7. 射线法判断点是否在多边形内 10 8. 判断点是否在凸多边形内 11 9. 寻找点集的graham算法 12 10.寻找点集凸包的卷包裹法 13 11.判断线段是否在多边形内 14 12.求简单多边形的重心 15 13.求凸多边形的重心 17...
判断圆是否在多边形内7. 求矢量夹角余弦 8. 求线段之间的夹角9. 判断线段是否相交10.判断线段是否相交但不交在端点处11.求线段所在直线的方程 12.求直线的斜率 13.求直线的倾斜角14.求点关于某直线的对称点15.判断...
计算点到折线、矩形、多边形的最近点 23. 计算点到圆的最近距离及交点坐标 24. 计算两条共线的线段的交点 25. 计算线段或直线与线段的交点 26. 求线段或直线与折线、矩形、多边形的交点 27. 求线段...
射线法判断点是否在多边形内 10 8. 判断点是否在凸多边形内 11 9. 寻找点集的graham算法 12 10.寻找点集凸包的卷包裹法 13 11.判断线段是否在多边形内 14 12.求简单多边形的重心 15 13.求...
计算点到折线、矩形、多边形的最近点 23. 计算点到圆的最近距离及交点坐标 24. 计算两条共线的线段的交点 25. 计算线段或直线与线段的交点 26. 求线段或直线与折线、矩形、多边形的交点 27. 求线段...
8.凸包卡壳旋转求出所有对踵点、最远点对 44 9. 凸包+旋转卡壳求平面面积最大三角 47 10. Pick定理 50 11. 求多边形面积和重心 51 12. 判断一个简单多边形是否有核 52 13. 模拟退火 54 14. 六边形坐标系 56 15. 用一...
6. 判断圆是否在多边形内 5 7. 求矢量夹角余弦 5 8. 求线段之间的夹角 5 9. 判断线段是否相交 6 10.判断线段是否相交但不交在端点处 6 11.求线段所在直线的方程 6 12.求直线的斜率 7 13.求直线的倾斜角 7 14...
针对复杂网格曲面提出了一种基于点邻域多边形特征和能量优化的网格曲面参数化方法。首先利用相邻两边夹角和长度比例建立节点邻域多边形特征方程组,通过求解一个约束优化问题将曲面网格展平到二维平面上;在网格曲面...
其基本思想是利用波前法对孔洞进行快速填充获得初始的修补网格, 再运用网格优化的技术依据孔洞边界点的曲率特征对初始网格进行调整。首先根据邻接三角形中边界边的性质识别出孔洞的边界, 然后使用波前法和三角形顶点...