【问题标题】:How to make bigger Polygon如何制作更大的多边形
【发布时间】:2023-03-09 07:20:01
【问题描述】:

我有多边形类的多边形。我怎样才能使它更大或更小。我正在为矩形寻找像 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);

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

【问题讨论】:

  • 你必须学习数学。然后你必须应用数学。
  • 我投票结束这个问题太宽泛了。甚至不清楚如何表示多边形,使用哪个坐标系等。
  • 欢迎来到 Stack Overflow!您似乎在要求某人为您编写一些代码。 Stack Overflow 是一个问答网站,而不是代码编写服务。请see here学习如何写出有效的问题。

标签: java figures


【解决方案1】:

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

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

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

这是实现您所追求的最佳方式 - 无需过多使用距离或矩阵。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 如果他可以访问顶点的坐标,那就是答案。使用距离公式获取顶点之间的距离,乘以该距离并修改顶点。
    猜你喜欢
    • 2013-02-02
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    相关资源
    最近更新 更多