多边形的面积-C++
Area of Polygon - C++
我正试图编写一段代码来计算多边形的面积,但看起来有些东西没有加起来。可能是公式被关闭了,或者我需要使用绝对值函数?
double polygon_area(int actual_size, double x[], double y[])
{
printf("In polygon.arean"); //Initial basic test
int i;
double area;
area = 0.0;
for (i = 0; i <= max_size; i = i + 1)
{
area = (x[i + 1] + x[i]) * (y[i + 1] - y[i]);
area = (area * 0.50);
}
printf("The area of the polygon is %lf n", area);
return (area);
}
我看到的问题:
-
您正在计算面积,就好像有
max_size
元素可用于计算面积一样。我认为你需要使用actual_size
。 -
由于数组的C++索引从
0
开始,所以它们需要停止在actual_size-1
,而不是actual_size
。代替for (i = 0; i <= max_size; i = i + 1)
使用
for (i = 0; i < actual_size; ++i) // Using ++i is more idiomatic that using i = i + 1
-
面积计算错误。更换线路:
area = (x[i + 1] + x[i]) * (y[i + 1] - y[i]); area = (area * 0.50);
通过
area += 0.5*(the area term);
-
面积项的计算需要使用环绕索引。假设你得了5分。处理第5个点时,必须使用索引
4
和0
,而不是4
和5
。代替
x[i + 1] + x[i]) * (y[i + 1] - y[i]);
使用
x[(i + 1)%actual_size] + x[i]) * (y[(i + 1)%actual_size] - y[i]);
-
面积项的计算需要固定。而不是使用
0.5*(x2 + x1) * (y2 - y1))
您需要使用:
0.5*(x1.y2 - x2.y1)
以下是该函数的简化版本:
double polygon_area(int actual_size, double x[], double y[])
{
printf("In polygon.arean");
double area = 0.0;
for (int i = 0; i < actual_size; ++i)
{
int j = (i + 1)%actual_size;
area += 0.5 * (x[i]*y[j] - x[j]*y[i]);
}
printf("The area of the polygon is %lf n", area);
return (area);
}
相关文章:
- 计算缩放多边形的比例,得到给定的多边形面积
- 将QGraphicsItem的移动区域限制在多边形区域内
- 重新排列单线以形成闭合多边形?
- 提升几何体:C++并集多个多边形
- 在 QT C++中绘制/操作多边形
- Maya API C++:从多边形获取材质
- 添加带有提升的多边形::p奥利贡不编译?
- 使用 C++在 OpenGL 中对 3D 多边形进行纹理处理
- 使用 C++在 OpenGL 中移动自动旋转的 3D 多边形
- 如何使用增强::几何计算多边形的旋转固体体积?
- 从拉伸多边形构建多面体
- 使用提升几何缓冲区缩放多边形时的冗余折点
- cgal多边形网格中的tet网格密度分级
- 如何绘制具有随机顶点数量的多边形并旋转它们
- 多边形裁剪 - 一点点详细说明
- 使用裁剪器库在线和多边形之间相交
- 平移 CGAL 多边形,而无需循环穿过折点
- 无法正确改变窗口中多边形的形状
- 在多边形内查找增强 rtree 元素
- 将当前多边形数据单元与下一个多边形单元格 - VTK 进行比较