gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 14:41:14 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com