【问题标题】:JAVA drawPolygon() - Parameter ExplanationJAVA drawPolygon() - 参数说明
【发布时间】:2015-01-20 08:38:47
【问题描述】:

我目前正在研究 Java 中的 drawPolygon(int[] xPoints, int[] yPoints, int nPoints) 方法。 如果我没记错的话,前两个参数是数组,表示多边形的x坐标和y坐标。

我的问题是,如何从两个数组中解释多边形的坐标?

例如,我想在点 (100, 300)(200, 400) 之间画一条线。也就是从左到右增加的一条线。 但是,如果我将这些值放入它们各自的数组中:

xPoints = {100, 200}; //x-coordinates 
yPoints = {300, 400}; //y-coordinates

我得到一条从左到右递减的线。好像这些点被解释为(100, 400)(200, 300)

因此,我的问题是:如何评估数组元素以构成多边形的点?

谢谢!

【问题讨论】:

  • 您是否费心阅读有关该方法的Javadoc?从Javadoc,此方法绘制由nPoint 线段定义的多边形,其中第一个nPoint - 1 线段是从(xPoints[i - 1], yPoints[i - 1]) 到(xPoints[i], yPoints 的线段[i]),对于 1 ≤ i ≤ nPoints。如果这些点不同,则通过绘制一条连接最后一个点和第一个点的线来自动闭合图形。
  • @hfontanez 这无助于理解为什么情节被镜像,所以请重新考虑“你打扰了...?”。
  • @laune,我已经重新考虑了我的评论,我支持它。图形 API 有据可查。此外,即使是最糟糕的教科书也显示了 OP 选择的“答案”。
  • @hfontanez 你写了“麻烦阅读关于那个方法的Javadoc。” (重点是我的。)然后你继续“这个方法绘制......”等。API中有一个简短的句子描述了用户坐标空间最初是如何定义的(并且它远离这个API),并且没有阅读这个或者一本关于计算机图形学的教科书 - 比较其他在 SO 上不为人知的东西 - 一个非常轻微的轻罪。
  • @laune 既然你觉得你是 OP 的代言人,让我为你澄清一下。发布的问题是:“如何评估数组元素以构成多边形的点?”该方法的 API 回答了这个问题,它在我在第一个答案中提供的摘录中。所以,是的,对 OP 的部分进行一点研究就会得到答案。问题是 SO 正变得越来越成为一个不想研究某个主题的人可以来获得答案的地方,因为周围有很多推动者。见How to ask

标签: java awt polygon


【解决方案1】:

默认坐标系的原点在画布的左上角,y 值从屏幕顶部向下增加。如果您对此方向不满意,可以使用仿射变换。

这是一个示例(!)来自我周围的一些代码 - 您可能需要根据您的情况对其进行调整:

// Polygon -> PathIterator -> Path2D, and then:
Path2D path = ...;
at.scale( 1, -1 );
path.transform( at );
bbox = path.getBounds2D();
at = new AffineTransform();
at.translate( -bbox.getMinX(), -bbox.getMinY() );
path.transform( at );

【讨论】:

    【解决方案2】:

    坐标系的左上角有origo,y轴向下增加。

    这就是为什么当你增加 y-坐标时你会得到一个向下的斜坡。

    【讨论】:

      猜你喜欢
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 2016-11-25
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 2014-07-04
      • 1970-01-01
      相关资源
      最近更新 更多