0

私は Java の初心者で、acm グラフィックス パッケージを使用して学習しています。いくつかの.drawLine(double x, double y)方法があり、それらを使用してキノコを描きます。きのこは左右同じですが逆さまになっています。どうすれば(それが正しい場合でも)座標をy軸に反映できるか知りたかったのです。数学的には、すべての x 値に -1 を掛けることでこれを行うことができます。このようにして、右側のコード全体を書き直す必要はありません。私は研究してきましたが、うまくいったものは見つかりませんでした。私はJavaリフレクションを試しましたが、どこにも行きませんでした。また、私はこれに間違った方法でアプローチしていますか? この概念を理解するのに役立つすべての提案を受け入れます。

これが私のコードの例です:

GPen black = new GPen(); //Make new pen
add(black, 270, 30); //Add it at these coords
black.drawLine(0, 30); //Draw a box
black.drawLine(-40, 0);
black.drawLine(0, -30);
black.drawLine(40, 0);

これらを反復処理し、x 値に -1 を掛けて、メソッドを再度実行することはできますか?

4

1 に答える 1

1

「数学的には、すべての x 値に -1 を掛けることでこれを行うことができます」 - ここに問題があります。これにより、y 軸に反映されますが、特定の垂直線については反映されません。特定の垂直線について反映するには、例のように x=270 という行を言います。

p<270 のポイント (p, q) を反映するには

反射線からの距離 = 270-p

したがって、新しい座標は次のとおりです: (270 + d, q)

(540 - p, q)

したがって、一般に、行 x = A の点 (p,q) を反映する式は (2A - p, q) です。

編集:あなたが試すことができる別のアプローチはこれです:

 GPen black = new GPen(); //Make new pen

 int[] x_coords = new int[4] {0,-40,0,40};
 int[] y_coords = new int[4] {30,0,-30,0};

 add(black, 270, 30); //Add it at these coords

 for (int i=0; i<x_coords.length; i++){
    black.drawLine( -1*x_coords[i] , y_coords[i]);
 }
于 2013-04-10T16:13:22.323 に答える