我在C ++中具有以下功能,该功能应该使用Heron公式查找三角形的面积。我没有在数学上犯任何错误,但是并不能得出正确的结果!我已经看了3个多小时,没有发现任何错误。我想念什么?
float TriangleArea(float x0, float y0, float x1, float y1, float x2, float y2)
{
float area_triangle;
float a, b, c, s;
a=std::sqrt((x0-x1)*(x0-x1)-(y0-y1)*(y0-y1));
b=std::sqrt((x1-x2)*(x1-x2)-(y1-y2)*(y1-y2));
c=std::sqrt((x0-x2)*(x0-x2)-(y0-y2)*(y0-y2));
s=(a+b+c)/2;
area_triangle=std::sqrt((s*(s-a)*(s-b)*(s-c)));
return area_triangle;
}
最佳答案
我没有在数学上犯任何错误,但是并不能得出正确的结果!
如果没有得到正确的结果,那么我认为您在数学上犯错的可能性很高。
a=std::sqrt((x0-x1)*(x0-x1)-(y0-y1)*(y0-y1));
该
-
看起来可疑。我假设您正在尝试查找(x0, y0)
和(x1, y1)
之间的距离。如果是这样,您应该将两个数量相加,而不是相减。我对Heron的公式不熟悉,但是you can use this simpler formula:
area = std::abs(x0 * (y1 - y2) + x1 * (y2 - y0) + x2 * (y0 - y1)) / 2;
编辑:我忘了为Antonio指出的简化公式提及
abs
函数。关于c++ - C++函数计算三角形的面积,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29376366/