私はConcave Hull
アルゴリズムを作成していて、ほぼ完成しました。問題は、連続する線の間の角度を計算するコードの一部を変更する必要があることです。
水平線から時計回りに。この水平線と私の線の間の角度を返すメソッドを作成しました。それは正常に動作します。しかし、それを変更して 2 本の線の間の角度を取得するにはどうすればよいでしょうか? 座標系は左上隅(画面上のピクセル)からのものであり、連続する線は結果として多角形を作成するため、異なる順序で互いに接続されていることに注意してください(線が異なる方向に色付けされる可能性があります) )。
現在の角度をカウントする私のコードは、水平線と私の線をつぶやきます:
private static double Angle(Vertex v1, Vertex v2, double offsetInDegrees = 0.0)
{
return (RadianToDegree(Math.Atan2(-v2.Y + v1.Y, -v2.X + v1.X)) + offsetInDegrees)%360.0;
}
public static double RadianToDegree(double radian)
{
var degree = radian * (180.0 / Math.PI);
if (degree < 0)
degree = 360 + degree;
return degree;
}