我对 Java 很陌生,我正在使用 acm 图形包来学习。我有几个 .drawLine(double x, double y) 方法,我用它们来画蘑菇。蘑菇的左侧和右侧相同,但倒置。我想知道如何(如果它是正确的)在 y 轴上反射(reflect)我的坐标。从数学上讲,我们可以通过将所有 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,然后再次运行该方法吗?
最佳答案
“从数学上讲,我们可以通过将所有 x 值乘以 -1 来做到这一点” - 这就是你的问题。这会为您提供 y 轴的反射,但不是特定垂直线的反射。要反射(reflect)特定的垂直线,请说该线 x=270,如您的示例所示:
反射(reflect)点(p,q),其中p<270
距反射线的距离 = 270-p
所以新坐标是:(270 + d, q)
等于:(540 - p, q)
因此,一般来说,反射(reflect) 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]);
}
关于java - 在y轴java上反射(reflect)方法中的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15930432/