gpt4 book ai didi

java - 为什么在 Java Applet 中使用 vector 坐标时多边形会变形?

转载 作者:太空宇宙 更新时间:2023-11-04 07:05:17 26 4
gpt4 key购买 nike

我在纸上有一个完整绘制的 8 个不同多点形状的 X、Y 坐标蓝图。我将这些坐标放入一个数组中,例如..

Polygon shape1;    
int[] shapeOneX = {1,2,3,4,5,6,7,8,9};
int[] shapeOneY = {1,2,3,4,5,6,7,8,9};
shape1 = new Polygon {shapeOneX, shapeOneY, shapeOneX.length};

这些坐标是假的,不是我真正的坐标,但在纸上,这些坐标将完全遵循您期望 vector 图形的规则。当我将其加载到 Java Applet 中时,形状并不遵循这些精确的坐标。它们有时很接近,但并不精确,我的项目需要精确度。

有谁知道为什么,或者是否需要在坐标上使用不同的公式才能使其在 Java 小程序中看起来相同?如果需要更多信息,请告诉我。

据我所知,java applet 的起始坐标从左上角 0,0 开始,然后从那里扩展。我想我的问题是,我知道“vector ”线从 0,0 作为中点开始。我对绘图了解不多。所以...我的形状是从 vector 样式创建的,但被“放置”到一个小程序中,该小程序的原点为 0,0 左上角。这很好,我有工具可以将它们调整到需要放置的位置。我只是无法让他们创建出我在纸上实际绘制的形状。我是否需要从左上角原点 0,0 开始在纸上绘制图表并且仅创建正 X、Y 变量?

另一个编辑 - 我注意到当它绘制到小程序上时,它也几乎以镜像方式绘制它。换句话说,(x) 向右,(-x) 向左。这很正常。但是 (y) 下降,(-y) 上升.. 这看起来不正常 HMM.. 困惑。

最终编辑(可能)——嗯,我对 Y 轴镜像的看法是正确的。为什么?我不知道。但它允许我重新设计一些坐标。我目前的印象是,线条边界太粗,连接了每个顶点,以至于它们将形状重组为一团垃圾。因为边界重叠。很难看出每个顶点的实际位置。我还必须增加 (x,y) 坐标的值以补偿尺寸差异。我可能有近 100 个左右不同的 (x,y) 组合,因此我需要重新做......我真的希望有一个更简单的答案。我对任何和所有建议持开放态度,同时我将努力重新规划这一点。感谢所有已经或继续做出贡献的人。

例如..这第一个是原始坐标:

       int[] wallX = { -2,-2,-1,-1, 2, 2 };
int[] wallY = { -1, 3, 3, 0, 0,-1 };

然后我发现有效的新工作坐标是:

    int[] wallOneX = { -2,-2, 1, 1, 10, 10 };
int[] wallOneY = { 4,-8,-8, 1, 1, 4 };

这就是从纸上创建相同形状到 Java 小程序中所需的数字差异。我真的没有看到任何模式或任何东西可以为我的所有其他模式重新创建它。所以我不知道。

最佳答案

您需要根据要在其上绘制多边形的 jpanel 或 canvas 对象的高度和宽度来缩放坐标。使用 getHeight() 和 getWidth() 获取尺寸。另外,原点位于 jpanel 或 canvass 的右上角,因此您要么需要使用加法/减法来移动缩放坐标,要么需要使用仿射变换来获取您想要的多边形。

有时从工作示例开始会有所帮助。您可以尝试this approachthis approach 。这是第三种方法already in an applet .

关于java - 为什么在 Java Applet 中使用 vector 坐标时多边形会变形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21505091/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com