1

Polygon から円を作成しようとしています (たとえば、形状レンダラーを使用できることはわかっていますが、このようにする必要があります)。

円は 4 つのノードと 4 つの湾曲したエッジで構成されている必要があります。ノードは ShapeRenderer によってレンダリングされ、"+" のように配置され、エッジ レンダラーによってエッジが湾曲します。現在、エッジが側面のすべてのノードに入るという問題があります。これは、上部と下部のノードでは問題ありませんが、上部と下部のノードに入る必要があるため、左右のノードでは機能しません。 、そして、私は完全な円ではなく、卵型の何かを取得します.

エッジがノードに入る位置を変更する方法や、このノードを 90 度回転させる方法を知っている人はいますか?

4

2 に答える 2

0

OK、私はいくつかのことを試していて、次のことを思いつきました:

      protected void getCurveControlPoints(EdgeItem eitem, Point2D[] cp, 
                    double x1, double y1, double x2, double y2) 
    {
        double dx = x2-x1, dy = y2-y1;      
//        cp[0].setLocation(x1+2*dx/3,y1);
//        cp[1].setLocation(x2-dx/8,y2-dy/8);
        cp[0].setLocation(x1+2*dx/3,y1);
        cp[1].setLocation(x2,y2-dy/3);
    }

これは私にとってはうまくいきます。完全な円かどうかはわかりませんが、違いを見つけることはできません。また、2*dx/3 を x1 に追加し、y2 から dy/3 のみを減算したため、なぜ機能するのかよくわかりません。なぜこれが機能するのか、誰にも手がかりがありますか?

于 2012-12-01T19:40:31.367 に答える
0

コントロールポイントを設定する方法EdgeRendererは非常に簡単に見えます:

protected void getCurveControlPoints(EdgeItem eitem, Point2D[] cp, 
                double x1, double y1, double x2, double y2) 
{
    double dx = x2-x1, dy = y2-y1;      
    cp[0].setLocation(x1+2*dx/3,y1);
    cp[1].setLocation(x2-dx/8,y2-dy/8);
}

おそらく、必要なカーブを実現するには、それをオーバーライドする必要があります。

その場合は、ここで他のソリューションを共有してください。

于 2012-11-30T09:07:23.197 に答える