【发布时间】:2010-08-11 13:25:31
【问题描述】:
我在修改过的 JPanel 的图形上下文中使用 drawLine() 在 Clojure/Java 中编写了一些基本的图形软件。绘图本身运行良好,但我在尝试将点击的像素转换为最近的数据点时陷入了僵局。
我在标记线条端点的所有像素列表和我的实际原始数据之间有一个简单的双射。我需要的是从我的图形窗口的所有像素(例如,1200x600 px2)到我的像素列表中的像素的一个投影,给我一个从它到我的实际数据点的简单映射。
例如
<x,y>(px) ----> <~x,~y>(pixel points) ----> <x,y>(data)
这就是我现在想象的情况:
在主图形窗口中单击了一个像素,MouseListener 捕获该事件并为我提供操作的
<x,y>坐标。-
该信息被传递给一个函数,该函数返回一个谓词,该谓词确定传递给它的值是否“足够好”,并通过具有该 pred 的列表进行过滤,并取第一个值。
- 可能,它不是一个谓词,而是返回一个函数,该函数传递像素点列表,并返回一个元组列表
(x index),这表明该点在x的大小下有多好,以及那一点是index。我会用 x 点和 y 点来做这件事。然后我过滤它并找到具有最大 x 的那个,并将那个作为最有可能是用户想要的那个点。
- 可能,它不是一个谓词,而是返回一个函数,该函数传递像素点列表,并返回一个元组列表
这些是解决这个问题的合理方法吗?似乎涉及置信度等级(可能与 pix-pt 的距离)的解决方案可能是处理器太重,如果我再次将所有点都保存在内存中,那么内存会有点重。仅使用谓词的另一种解决方案似乎并不总是准确的。
这是一个已解决的问题,正如其他图形库所展示的那样,但是除了在其中一些程序的源代码中之外很难找到有关它的信息,并且必须有更好的方法然后挖掘数千行 Java 代码来找出答案。
如果可能的话,我正在寻找更好的解决方案,或者只是针对我提供的解决方案提供一般性的指示和建议。
【问题讨论】:
标签: java plot clojure graphing