我正在学习以下代码。
boolean convex(double x1, double y1, double x2, double y2,
double x3, double y3)
{
if (area(x1, y1, x2, y2, x3, y3) < 0)
return true;
else
return false;
}
/* area: determines area of triangle formed by three points
*/
double area(double x1, double y1, double x2, double y2,
double x3, double y3)
{
double areaSum = 0;
areaSum += x1 * (y3 - y2);
areaSum += x2 * (y1 - y3);
areaSum += x3 * (y2 - y1);
/* for actual area, we need to multiple areaSum * 0.5, but we are
* only interested in the sign of the area (+/-)
*/
return areaSum;
}
我不理解负面积的概念。难道面积不应该始终为正吗?也许我在这里缺乏一些术语的理解。我试图联系原作家,但这段代码已经有8年了,我没有办法联系到原作家。这种确定给定顶点x2y2是否凸的方法似乎很流行。我真的很想理解它。任何可以指导或帮助我理解这段代码的参考资料都将非常感激。
源代码: http://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Ian/applets/BruteForceEarCut.java