如何制作更大的多边形

时间:2016-04-25 16:52:45

标签: java figures

我有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);

我不知道我应该发布哪一行代码,但我希望它能够实现。我只需要一个建议如何在表格中制作更大的多边形。 谢谢!

2 个答案:

答案 0 :(得分:1)

这些是线性代数最好的操作。通过刷新身体的平移,旋转和缩放,你可以得到很好的服务。但...

如果您拥有所有顶点数据,并且对象位于原点(0,0,0),则可以将所有顶点乘以数字 - 2.0将使对象的大小增加一倍{{1将它变为三倍,3.0将它缩小一半,等等。确保对所有组件执行此操作,因此如果您有一个二维对象,请确保将两个X都相乘和每个顶点的Y值相同的数字。

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

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

答案 1 :(得分:-1)

如果您可以访问顶点的位置数据,那么只需计算所有顶点之间的距离,然后将其乘以您想要的刻度。 (例如,大20%将所有距离乘以1.20)。您可以使用距离公式执行此操作。  Math.sqrt((x2-x1)^2 + (y2-y1)^2)

获得新距离后,只需将旧距离与新距离之间的差值添加到x2和y2,即可得到新的顶点坐标,并对多边形的每个顶点执行此操作。如果您的多边形位于原点(0,0),您可以将顶点乘以您想要的比例,但我建议根据顶点距离进行缩放。