9

グラハム スキャン アルゴリズムを使用して、ポイント セットの凸包を見つけています。ポイントを極角で並べ替えようとしていますが、その方法がわかりません (ポイント セットを既に並べ替えています)。 Y 座標)。

私がすでに書いたものは次のようなものです:

public double angle(Coord o, Coord a)
{
    return Math.atan((double)(a.y - o.y) / (double)(a.x - o.x));
}

CoordX 座標と Y 座標を として持つクラスはどこにありますかdouble

また、誰かが C++ でこの角度を実装しようとした Stack Overflow の同様の投稿の 1 つを見ましたが、理解できませんqsqrt。Javaでこのようなものはありますか?

qreal Interpolation::dp(QPointF pt1, QPointF pt2)
{
    return (pt2.x()-pt1.x())/qSqrt((pt2.x()-pt1.x())*(pt2.x()-pt1.x()) + (pt2.y()-pt1.y())*(pt2.y()-pt1.y()));
}

誰かが私を助けてくれたらうれしいです。

4

3 に答える 3

0

Math.atan()-pi/2 から pi/2 までの角度を返します。他の 2 つの座標の結果を調整する必要があります。

凸包の中心からの角度が必要な場合は、最初に座標を変換して、重心が原点になるようにする必要があります。

于 2013-05-12T15:58:45.873 に答える