Graphics2D - 数学绘图 - 多边形 - 如何获取所有绘图点

时间:2011-12-25 00:17:52

标签: java math graphics2d

我刚刚尝试编写“line”代码来显示简单的数学; 这是

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}之间的所有其余点呢?如何获得它们?

例如。回到前面的代码片段,当(高度%N)= 0 等时,如何找出x,y值是什么点?

有最佳方式吗?

由于

1 个答案:

答案 0 :(得分:0)

你必须意识到的是,你不再使用像素/坐标本身,而是使用矢量。您将从包含坐标(-500,-500)(500,500)的多边形获得相同的图像,该坐标被绘制到Graphics对象上,该对象表示来自(0,0)的{​​clip}区域左下方是右下角的(100,100)。 (暂时忽略Graphics的实际坐标系具有反转的y轴)。

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

回到你的例子,找到与谓词匹配的点(高度%N = 0),我们正在寻找f(100)所以你需要做的“全部”就是求解X