关于三角形面积的公式与格点多边形面积计算算法的讨论

已知三角形三点坐标求三角形面积公式

公式:这里写图片描述
即S=1/2[(x1y2-x2y1)+(x2y3-x3y2)+(x3y1-x1y3)]
证明过程:此链接

格点三角形求面积或求三角形里格点(整点)个数[皮克定理]

一张方格纸上,上面画着纵横两组平行线,相邻平行线之间的距离都相等,这样两组平行线的交点,就是所谓格点。如果取一个格点做原点O,如图1,取通过这个格点的横向和纵向两直线分别做横坐标轴OX和纵坐标轴OY,并取原来方格边长做单位长,建立一个坐标系。这时前面所说的格点,显然就是纵横两坐标都是整数的那些点。如图1中的黑点都是格点。由于这个缘故,我们又叫格点为整点。
关于三角形面积的公式与格点多边形面积计算算法的讨论_第1张图片
一个多边形的顶点如果全是格点,这多边形就叫做格点多边形。有趣的是,这种格点多边形的面积计算起来很方便,只要数一下图形边线上的点的数目及图内的点的数目,就可用公式算出。
这个公式是皮克(Pick)在1899年给出的,被称为“皮克定理”,这是一个实用而有趣的定理。
给定顶点坐标均是整点(或正方形格点)的简单多边形,皮克定理说明了其面积S和内部格点数目a、边上格点数目b的关系:
S=a + b/2 -1;
(其中a表示多边形内部的点数,b表示多边形边界上的点数,S表示多边形
的面积)
参考自:此链接

线段上的格点个数

通过两点坐标(x1,y1)(x2,y2)求两点相接的线段中格点的个数
分析:
1、两点确定一条直线,然后for循环暴力解决。(麻烦)
2、如下图所示,这道题的答案在于|x1-x2|和|y1-y2|的最大公约数。
3、求最大公约数,我一般用gcd,简洁明了。
关于三角形面积的公式与格点多边形面积计算算法的讨论_第2张图片
令g=GCD(n,m);n=x*g,m=y*g.所以将横坐标分为g个x份,将纵坐标分为g个y份,如此得到的答案有g个整数解期其中是不包括原点的,如果包括原点则需要g+1,如果需要去掉两端的整数解则g-1便是答案。

你可能感兴趣的:(C/C++,计算几何)