-1

我有多边形类的多边形。我怎样才能使它更大或更小。我正在为矩形寻找像 grow(int,int) 这样的函数。我不知道该怎么做。

提前致谢!

@抱歉我的愚蠢问题没有任何细节。

我正在使用以下方法制作多边形:

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

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

4

2 回答 2

1

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

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

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

这是做你所追求的最好的方式——不需要太多的距离或矩阵。

于 2016-04-25T18:31:18.277 回答
-1

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

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

于 2016-04-25T17:08:23.710 回答