我有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);
我不知道我应该发布哪一行代码,但我希望它能够实现。我只需要一个建议如何在表格中制作更大的多边形。 谢谢!
答案 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),您可以将顶点乘以您想要的比例,但我建议根据顶点距离进行缩放。