Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Graphics2D-数学绘图-多边形-如何获取所有绘图点_Java_Math_Graphics2d - Fatal编程技术网

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()吗?好的,我会试试并报告我的结果