gpt4 book ai didi

java - 图形和负纵坐标

转载 作者:行者123 更新时间:2023-12-01 17:57:46 25 4
gpt4 key购买 nike

我想显示可以具有负坐标(X 和 Y)的点。目前,具有负 X 的点似乎可以正确显示(即:它们位于具有正 X 的点的左侧)。

但是,具有负 Y 的点显示在图表的顶部:例如,Y = -5 的点将显示在 Y = -3 的点的顶部...

如何反转此图形'的显示?

我的(简单)代码:

package general_classes;

import javax.swing.*;
import java.awt.*;
import java.util.List;

public class Graph extends JFrame {

private List<StorableData> list_detected_points;
private List<StorableData> list_all_points;
private Cupple barycenter;

public Graph(String title, List<StorableData> list_all_points, List<StorableData> list_detected_points) {

double scaling_coef = 200;
double move_x = 500, move_y = 500;


this.add(new JPanel() {
private Graphics graphics;

int x, y;
private void drawPoint(Cupple storable_data) {
x = (int) (storable_data.getNumber(0) * scaling_coef + move_x);
y = (int) (storable_data.getNumber(1) * scaling_coef + move_y);
graphics.fillRect(x, y, 10, 10);
graphics.drawString(storable_data.toString(), x - 5, y - 5);
}

@Override
public void paint(Graphics graphics) {
this.graphics = graphics;

for(StorableData storable_data : list_all_points) {
graphics.setColor(Color.WHITE);
this.drawPoint((Cupple) storable_data);
}

if(list_detected_points != null) {
for (StorableData storable_data : list_detected_points) {
graphics.setColor(Color.RED);
this.drawPoint((Cupple) storable_data);

}
}

}
});

this.setVisible(true);
}

}

最佳答案

假设您收到了需要绘制的所有点,首先找到每个维度上的最小和最大坐标。这样,您可以获得缩放因子(使用最小值和最大值之间的距离以及绘图框的大小)和偏移量(以便最小值对应于绘图框的零)。

然后使用上面的数据创建一个 AffineTransform ,它将在您绘制时正确转换每个点。

关于java - 图形和负纵坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43255068/

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