`

点对多边形的夹角

阅读更多
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

    关于二维的点、线、多边形、圆几何关系库 c ,包含头文件就能用。 ㈠ 点的基本运算 1. 平面上两点之间距离 1 2. 判断两点是否重合 1 3. 矢量叉乘 1 4. 矢量点乘 2 5. 判断点是否在线段上 2 6. 求一点饶某点旋转后的...

    C++计算几何算法大全

    7. 射线法判断点是否在多边形内 10 8. 判断点是否在凸多边形内 11 9. 寻找点集的graham算法 12 10.寻找点集凸包的卷包裹法 13 11.判断线段是否在多边形内 14 12.求简单多边形的重心 15 13.求凸多边形的重心 17...

    基于夹角变化趋势的多边形自动搜索和生成算法

    通常,可以基于方位角而采用左 转或右转算法来生成多边形,即根据已经输入的结 点和弧段信息,按规定的方向(若按顺时针方向,则 称为右转算法;若按逆时针方向,则称左转算法), 由系统通过弧段文件自动产生多边形...

    SuperMap Objects .NET分割泰森多边形

    根据数据集中的中心点数据集生成泰森多边形,根据泰森多边形的中心扇区夹角角平分线分割单个的泰森多边形

    Delphi 基础几何函数库

    从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...

    mylineseg.rar_两条线段交点_点 线段 垂足_点到直线距离_相交_线段相交

    判断圆是否在多边形内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. 求线段...

    ACM 计算几何模板

    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...

    基于邻域多边形特征和能量优化的网格参数化 (2011年)

    针对复杂网格曲面提出了一种基于点邻域多边形特征和能量优化的网格曲面参数化方法。首先利用相邻两边夹角和长度比例建立节点邻域多边形特征方程组,通过求解一个约束优化问题将曲面网格展平到二维平面上;在网格曲面...

    论文研究-三维模型孔洞修补方法的研究.pdf

    其基本思想是利用波前法对孔洞进行快速填充获得初始的修补网格, 再运用网格优化的技术依据孔洞边界点的曲率特征对初始网格进行调整。首先根据邻接三角形中边界边的性质识别出孔洞的边界, 然后使用波前法和三角形顶点...

Global site tag (gtag.js) - Google Analytics