0

単純な線を描くために、ブレゼンハム ライン アルゴリズムを使用しています。このアルゴリズムを使用して、辺と角度が等しい多角形を作成する方法を教えてください。辺は Bresenham アルゴリズムによって作成された線になりますが、作成された線を使用して、辺の数が X で角度が等しい多角形を描画するにはどうすればよいですか?

私が使用しているラインアルゴリズムは次のとおりです。

protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g.create();
        g2d.setColor(Color.RED);
        for (double t = 0; t < 1; t += 0.01) {          
            Point2D p = between(p1, p2, t);
            g2d.fillRect((int)p.getX(), (int)p.getY(), 5, 5);
        }
        g2d.dispose();
    }

    public Point2D between(Point p1, Point p2, double time) {

        double deltaX = p2.getX() - p1.getX();
        double deltaY = p2.getY() - p1.getY();

        double x = p1.getX() + time * deltaX;
        double y = p1.getY() + time * deltaY;

        return new Point2D.Double(x, y);

    }

前もって感謝します。

4

1 に答える 1

0

N 辺ポリゴンの (i-1) 番目のエッジが点 x(i-1)、y(i-1) で終わり、水平軸に対して角度 a(i-1) で回転しているとします。したがって、次のエッジは次の角度で回転します。

a(i) = a(i-1) + pi - (N-2)/N*pi

次の時点で終了します。

x(i) = x(i-1) + L * cos(a(i)) 
y(i) = y(i-1) + L * sin(a(i))

ここで、L は 1 つのエッジの長さです。したがって、i を 1 から N まで反復してポイントを接続すると、多角形が得られます。

中心点 x(c)、y(c)、および円を含む半径 R を使用して多角形を作成する場合は、次の方法で点座標を計算します。

x(i) = x(c) + R * cos(2*pi*i/N)
y(i) = y(c) + R * sin(2*pi*i/N)
于 2014-04-11T17:09:31.377 に答える