2016-04-25 74 views
-1

我有Polygon类的多边形。我怎样才能让它变得更大或更小。我正在寻找矩形的grow(int,int)函数。我没有任何想法,我该怎么做。如何制作更大的多边形

在此先感谢!

@sorry为我愚蠢的问题没有任何细节。

我使用使得多边形:

private int[] xCoord = new int[50], yCoord= new int[50]; //Arrays containing the points of the polygon 
    private int pointCt=0; //The number of points that have been input 

我点击某一个地方鼠标,再画一条线

xCoord[pointCt] = arg0.getX(); 
yCoord[pointCt] = arg0.getY(); 
pointCt++; 


    private void putLine(int x1,int y1,int x2,int y2) 
    { 
     Graphics g= getGraphics(); 
     g.drawLine(x1, y1, x2, y2); 
     g.dispose(); 
    } 

    polygon=new MyPolygon(xCoord,yCoord,pointCt); 

我不知道到底哪行我的代码,我应该但我希望它足够。我只是需要一个建议,如何在桌子上制作更大的多边形。 谢谢!

+3

你必须学习数学。然后你必须应用数学。 – Gendarme

+2

我投票结束这个问题太广泛。甚至不清楚如何表示多边形,使用哪个坐标系等。 –

+1

欢迎来到Stack Overflow!你似乎在要求某人为你写一些代码。堆栈溢出是一个问答网站,而不是代码写入服务。请[see here](http://stackoverflow.com/help/how-to-ask)学习如何编写有效的问题。 – 2016-04-25 17:00:19

回答

-1

如果您有权访问顶点的位置数据,那么只需计算所有顶点之间的距离并将其乘以任何您想要的比例即可。 (例如,将所有距离增加20%,乘以1.20)。您可以使用距离公式来做到这一点。 Math.sqrt((x2-x1)^2 + (y2-y1)^2)

一旦你得到新的距离,只需将旧距离和新距离之间的差异添加到x2和y2,并且您有新的顶点坐标,并为多边形的每个顶点执行此操作。如果你的多边形是在原点(0,0),你可以将顶点乘以任何你想要的比例,否则我建议根据顶点距离进行缩放。

+0

如果他有权访问它正在回答的顶点的坐标。使用距离公式获取顶点之间的距离,乘以该距离并修改顶点。 – Tyler

0

这些是线性代数最好涵盖的操作。通过翻译身体的平移,旋转和缩放,你会得到很好的服务。但是...

如果你有所有的顶点数据,并且对象是原点(0,0,0),你可以将所有的顶点乘以一个数字 - 2.0会使物体两倍大,3.0会使它变大三倍,0.5会将它缩小一半,等等。确保对所有组件都这样做,所以如果您有二维对象,请确保您乘以每个组件的X值和Y值它的顶点由相同的数字组成。

如果对象不在原点,您可以找到对象的中心(通过获取所有顶点的平均值),将其转换为原点(通过从每个顶点的位置减去中心),执行您的缩放(通过与前一段相同),并将中心添加回每个顶点。

这是最好的方式来做你以后的事情 - 不需要太多的距离或矩阵。