【问题标题】:Graphics2D - Math plot - Ploygon - how to get all plot pointsGraphics2D - Matplotlib - 多边形 - 如何获取所有绘图点
【发布时间】:2011-12-25 00:17:51
【问题描述】:

我刚刚尝试编写“行”代码来可视化一个简单的数学; 在这里

Ploygon polygon=new Ploygon();
int x,y;


ploygon.addPoint(0,0);   
polygon.addPoint(width,height);

g.drawPolygon(polygon);

代码给出了y=x的效果;

好的...这是非常简单的代码;但我感兴趣的是在语句期间将每个 N 像素点为 {x0,y0}{0,0} 和 {x1,y1} {width,height} 这就是问题:(

多边形 xpoints 数组并不方便,因为它可能只包含调用 addPoint(x,y) 方法时添加的相同点;所以在我的情况下,只有两个由 Polygon 连接的添加点,但是留在这些点 {x0,y0}{0,0} 和 {x1,y1} {width,height} 之间的所有其余点呢?如何获得?

例如。回到之前的sn-p,当(height%N)=0等时如何找出x,y的值是多少?

有没有最优化的方法?

谢谢

【问题讨论】:

标签: java math graphics2d


【解决方案1】:

您必须在这里意识到,您不再使用像素/坐标本身,而是使用矢量。您会从包含坐标(-500,-500)(500,500) 的多边形中获得大致相同的图像,该坐标被绘制到Graphics 对象上,该对象表示从左下角的(0,0)(100,100) 的(剪辑)区域右下角。 (暂时忽略Graphics 的实际坐标系有一个倒置的 y 轴)。

因此,您必须以更回归基础的数学方式而不是“读取像素”方式来解决这个问题。除非您只想确定给定点是否在 形状中(Shape 接口为此提供了内置方法),否则您将考虑计算直线的斜率并确定代表您的线路的功能。例如,从示例继续,您有两个点 (-500,-500) 和 (500,500),其斜率为 1000/1000 = 1。因此您可以根据 x 坐标将该函数重写为 f(x) = -500 + (x + 500)。然后,如果您想知道点 (100,200) 是否在那条线上,您只需计算 f(100) 并查看它是否不在。

回到您的示例,找到与谓词匹配的点 (height%N =0),我们将寻找 f(x) == 0 mod N,因此您需要做的“所有”工作就是求解 x 的方程。

【讨论】:

  • "回到您的示例,找到与谓词匹配的点 (height%N =0),我们将寻找 f(x) == 0 mod N 等等需要做的是求解 x 的方程。”一切都很好,但是如果 f(x)!=N 怎么办?我的意思是它不是整数,所以没有办法得到正确的 x,y 坐标?例如,如果情节语句类似于“y=x*tan(a/b)+coeff”,会发生什么?有没有办法检测这种函数点以将它们保存在一个数组中?
  • 如果我理解正确,可以通过将您的答案四舍五入到最接近的整数来解决?
  • Emm... 你的意思是 Math.round()?好的,我会尝试并报告我的结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多