java - 在y轴java上反射(reflect)方法中的坐标

标签 java coordinates

我对 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/

相关文章:

swift - SpriteKit Swift 定位 HUD

php - 在PHP中的坐标数组之间查找两个最远的对象

java - 我如何在java中找到用户位置

java - 如何在 Netbeans 中使用 -g 选项进行编译?

java - 在java中添加/加载图像

java - 在抽象基类中使用 Java 泛型

ios - 如何检查边界框是否包含我的观点

java - 将php中的照片作为字节回显到java应用程序

r - 我想使用 RNetLogo 包从 NetLogo 中提取坐标数据

php - 获取用户特定半径内的坐标