Java Graphics2D-数学绘图-多边形-如何获取所有绘图点
我刚刚试着编写“行”代码来可视化一个简单的数学; 给你Java Graphics2D-数学绘图-多边形-如何获取所有绘图点,java,math,graphics2d,Java,Math,Graphics2d,我刚刚试着编写“行”代码来可视化一个简单的数学; 给你 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},这就是问题所在:( 多边形x
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)方法时添加的相同点;因此在我的例子中,只有两个添加的点通过多边形连接,但是位于这些点{x0,y0}{0,0}和{x1,y1}{width,height}之间的所有其余点呢?如何获取它们
例如,回到前面的代码片段,当(高度%N)=0等时,如何找出x,y点的值
有最理想的方法吗
谢谢这里您必须意识到的是,您不再使用像素/坐标本身,而是使用矢量。您将从包含坐标
(-500,-500)
和(500500)
的多边形中获得大致相同的图像,这些坐标绘制在表示(剪裁)的图形对象上从左下角的(0,0)
到右下角的(100100)
的区域。(暂时忽略图形的实际坐标系具有反转的y轴)
因此,你必须用一种更回到basic的数学方法来解决这个问题,而不是用“读取像素”的方法。除非你只想确定给定的点是否在形状中(为此,shape
接口提供了一种内置方法),您将考虑计算直线的斜率并确定表示直线的函数。例如,从示例继续,您有两个点(-500,-500)和(500500),这两个点的斜率为1000/1000=1。因此,您可以根据x坐标将该函数重写为f(x)=-500+(x+500)
。如果你想知道点(100200)是否在那条线上,你所需要做的就是计算f(100)
,看看它是否在那条线上
回到你的例子,找到与谓词匹配的点(高度%N=0),我们要找的是f(x)==0 mod N
,所以你需要做的就是解x的方程。另请参见。“回到你的例子,找到与谓词匹配的点(高度%N=0),我们要找的是f(x)==0 mod N,所以你需要做的就是解x的方程。“这很好,但是如果f(x)!=N呢?我的意思是它不是整数,所以没有办法得到正确的x,y坐标?如果plot语句像“y=x*tan(a/b)+coeff”怎么办例如?有没有一种方法可以检测这种函数点,让它们保持在一个数组中?如果我理解正确,可以通过将答案四舍五入到最接近的整数来解决这个问题?嗯…你的意思是数学.round()吗?好的,我会试试并报告我的结果