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 回答