通过y轴java反映方法中的协调

时间:2013-04-10 15:41:53

标签: java coordinates

我是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,让它再次运行该方法吗?

1 个答案:

答案 0 :(得分:1)

“数学上我们可以通过将所有x值乘以-1来实现这一点” - 这就是你的问题。这样可以在y轴上进行反射,但不会在特定的垂直线上进行反射。要反映特定的垂直线,请在示例中说明x = 270行:

反映点(p,q),其中p <270

距反射线的距离= 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]);
 }