【发布时间】:2012-10-25 21:26:15
【问题描述】:
我编写了一个用户在 (640x480) 窗口中绘制东西的 gui。它使该绘图成为存储在 Vector 数组中的一组点。 现在,我如何将这些点集转换为原点(窗口左上角 0,0)或将其放在指定的位置? 我想要的窗口的宽度和高度也是 640x480。
解决之后,如何将新的点集缩放到我想要的大小?
更新 1
我解决了规模问题,但没有解决定位问题。这幅画没有去我告诉它的地方。下面是我目前所拥有的代码。
float scaleX = (float)width/boundingPoints.width;
float scaleY = (float)height/boundingPoints.height;
for(int i = 0; i < cg_points.size()-1; i++){
Point p1 = cg_points.get(i);
Point p2 = cg_points.get(i+1);
g.drawLine((int)(p1.x*scaleX) + pos.x, (int)(p1.y*scaleY) + pos.y, (int)(p2.x*scaleX) + pos.x, (int)(p2.y*scaleY) + pos.y);
}
我希望绘图从 pos [x, y] 所在的位置开始。目前的问题是这个。它确实遵循了 pos.x 和 pos.y 的做法,但距离很远,并且不是从 pos[x,y] 开始。
这是问题的屏幕截图
正如您从图片中看到的那样,盒子应该是星星所在的位置。如您所见,缩放是正确的,而不是位置。这是因为绘图中的点可能不从 (0,0) 开始。
有什么建议吗?
谢谢!
【问题讨论】:
-
那么这是一个什么样的程序呢?爪哇? JavaScript?请说明这两个标签的必要性。
-
需要这两个标签是因为这既适用于 java 也适用于 JavaScript。
-
对不起,我还是不明白。您能否解释一下并提供一些细节——您如何将它用于 Java 和 JavaScript?
-
我用 Java 编写了一个编辑器,它允许你做某些事情,然后它将这些东西转换为 javascript。
-
在数学语言中,变换是加法/减法,缩放是乘法/除法。
标签: java javascript math vector matrix