`

计算几何_多边形的有向面积和确保多边形的点是逆时针排列

阅读更多

 

 

 

const double eps = 1e-8;
int sign(double d){
	return d < -eps ? -1 : (d > eps);
}
//多边形类
struct poly{
	static const int N = 1005; //点数的最大值
	point ps[N+5]; //逆时针存储多边形的点,[0,pn-1]存储点
	int pn;  //点数
	poly() { pn = 0; }
	//加进一个点 
	void push(point tp){
		ps[pn++] = tp;
	}
	//第k个位置
	int trim(int k){
		return (k+pn)%pn;
	}
	void clear(){ pn = 0; }
};
//多边形org的有向面积
double signArea(poly org){
	int i, g;
	double ans;
	point* ps = org.ps;
	for(ans = i = 0; i < org.pn; i++){
		g = org.trim(i+1);
		ans += (ps[g].y*ps[i].x-ps[g].x*ps[i].y);
	}
	return ans / 2.0;
}
//如果org的点是逆时针的,则调整为逆时针的
void makeAntclockwise(poly& org){
	if(sign(signArea(org)) < 0){
		reverse(org.ps, org.ps+org.pn);
	}
}
分享到:
评论

相关推荐

    GeoGebra5.0几何软件官网中文版.rar

    添加直线(选定两个点),垂线选定点与要垂直的线,添加多边形有圆,角度质量方法:沿逆时针方向选定三个点,选择两条线,选择两个向量,单击多边形内部。视图平衡,拖动绘图区或坐标轴,改变视图区范围或坐标轴刻度...

    d3-polygon:二维多边形的几何运算

    通常,多边形按逆时针顺序,并假设坐标系的原点⟨0,0⟩位于左上角。正在安装如果使用NPM,则npm install d3-polygon 。 否则,请下载。 您也可以作为或一部分直接从加载。 支持AMD,CommonJS和香草环境。 在香草中...

    GSP5.exe

    选取圆及圆上2点作弧(从第一点逆时针方向到第二点之间的一段弧);选取圆上三点作弧(与法2相似,只是无需选中圆,作完弧后,可以隐藏原来的圆,可见新作的弧) 扇形和弓形 与三角形内部相似(先选中三个顶点),...

    Algorithms

    从切割过程中得到的N个多边形,它们是按逆时针方向排列的顶点索引的集合而且: 应使用面向对象编程(OOP) 应以适当的动机使用设计模式每个类和每个方法应具有与单元测试相关的例子见下图: 在这种情况

    polygon-finite-difference-mesh-tools

    输入为: 有关点的x和y坐标n,多边形的边数r,旋转(以弧度为单位)(逆时针) 平移,将多边形的中心移动到给定的笛卡尔坐标元组plot,一个布尔值,指示是否应显示该图。 一些示例图如下所示: in_poly(x = 10, y =...

    计算机图形学作业.doc

    (10分)如图5- 51所示,求P0(4,1)、P1(7,3)、P2(7,7)、P3(1,4)构成的四边形绕 Q(5,4)逆时针旋转45°的变换矩阵和变换后图形的顶点坐标。 图5-51 四边形旋转 解:变换的过程包括: 1. 平移:将P点平移至原点...

    计算机图形学作业36归纳.doc

    〔10分〕如图5- 51所示,求P0(4,1)、P1〔7,3〕、P2〔7,7〕、P3〔1,4〕构成的四边形绕 Q(5,4)逆时针旋转45°的变换矩阵和变换后图形的顶点坐标。 图5-51 四边形旋转 解:变换的过程包括: 1. 平移:将P点平移至原点...

    计算机图形学作业3-6.doc

    (10分)如图5- 51所示,求P0(4,1)、P1(7,3)、P2(7,7)、P3(1,4)构成的四边形绕 Q(5,4)逆时针旋转45°的变换矩阵和变换后图形的顶点坐标。 图5-51 四边形旋转 解:变换的过程包括: 1. 平移:将P点平移至原点...

    计算机图形学作业3-6(1).doc

    〔10分〕如图5- 51所示,求P0(4,1)、P1〔7,3〕、P2〔7,7〕、P3〔1,4〕构成的四边形绕 Q(5,4)逆时针旋转45°的变换矩阵和变换后图形的顶点坐标。 图5-51 四边形旋转 解:变换的过程包括: 1. 平移:将P点平移至原点...

    platonic:一组用于为WebGL生成柏拉图式实体几何的函数

    三角形的缠绕顺序为逆时针方向。 多边形应在gl.TRIANGLES模式下使用gl.drawElements进行绘制。 提供了工程图索引和法线。 网格对象属性 每个网格具有以下属性: vertices 一维顶点数据数组,作为三重浮点数 ...

    cp-algorithm:竞争编程库和解决方案

    逆时针 线 正交的 平行线 路口 线点 段点 线-线 段段 线段(无点) 圆圆 圆线 距离 线点 段点 线-线 段段 线段 多边形 区域 凸检查 遏制(开,进,出) 凸包 凸直径 圆圈 切线 圆点 圆圆 线扫 最近对的距离 曼哈顿...

    计算机辅助设计与制造55.docx

    单选题共10题,共30分 1、在二维图形的坐标变换中,若图上一点由初始坐标(x,y)变换成坐标(x',y'),绕原点逆时针旋转30度,其中x'=ax+cy,y'=bx+dy,则a为(C)(3分) A、1 B、-1 C、cos30 D、sin30 2、在二维...

Global site tag (gtag.js) - Google Analytics