私は次のコードを勉強しています。
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