【问题标题】:2d coordinate system: Math vs. Screen二维坐标系:数学与屏幕
【发布时间】:2013-01-10 19:07:14
【问题描述】:

我们正在开发一个在 2D 空间中进行计算的库。然而,二维坐标系的“自然”解释是增加 Y 值表示位于更高的点,而 awt 坐标则相反。这反映在 Rectangle(10,100).maxY() 返回 0,而数学家希望它返回 100。

我们如何正确处理这种差异?是否有其他 java 库可以进行几何计算?

【问题讨论】:

  • 我会坚持手动转换。你仍然需要进行变换,那为什么不将 Y 轴缩放一个负值呢?

标签: java computational-geometry coordinate-systems


【解决方案1】:

你应该在问之前尝试一下。下面的代码打印100,所以没有问题:)

import java.awt.*;

public class A {
    public static void main(String[] args) {
        double maxX = new Rectangle(10, 100).getMaxY();
        System.out.println("A::main: maxX = " + maxX);
    }
}

【讨论】:

  • 这两件事你都是对的。我对谈论“左上角”等的文档感到困惑……但这并没有反映在 API 中。
  • 在 2D 图形编程中,y 轴通常具有向下的正方向。别担心,一段时间后它看起来很直观:)
【解决方案2】:

我发现maxY 返回“最大的 y 坐标”,这正是直观的行为。我很困惑:只有在实际将其绘制到屏幕上时,对象才有“左上角”和“右下角”只是可视化时的约定。

【讨论】:

    猜你喜欢
    • 2016-12-04
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 2021-07-31
    相关资源
    最近更新 更多