Java 转换+;缩放一组点

Java 转换+;缩放一组点,java,javascript,math,vector,matrix,Java,Javascript,Math,Vector,Matrix,我编写了一个gui,用户可以在(640x480)窗口中绘制一些东西。它使该图形成为存储在向量数组中的一组点现在,如何将这些点集转换为原点(窗口左上角0,0处)或将其放置在指定位置?我想要的窗口的宽度和高度也是640x480 解决问题后,如何将新的点集缩放到我想要的大小? 更新1 我解决了规模问题,但没有解决定位问题。这幅画不符合我的要求。下面是我到目前为止的代码 float scaleX = (float)width/boundingPoints.width; float scaleY = (f

我编写了一个gui,用户可以在(640x480)窗口中绘制一些东西。它使该图形成为存储在向量数组中的一组点现在,如何将这些点集转换为原点(窗口左上角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);
}
float scaleX=(float)width/boundingPoints.width;
浮动比例=(浮动)高度/边界点.height;
对于(int i=0;i
我希望绘图从位置[x,y]开始。目前的问题是这个。它确实遵循pos.x和pos.y所做的,但它与pos.x和pos.y相去甚远,并且不是从pos.x和pos.y开始的

这是该问题的屏幕截图

正如你从图片中看到的,盒子是星星应该在的地方。正如您所看到的,缩放是正确的,只是位置不正确。这是因为图形中的点可能从(0,0)开始

有什么建议吗


谢谢

要翻译图形,只需

foreach point in array
    point.x += translate.x
    point.y += translate.y
如果要使图形居中,请选择一个中心(例如求所有点的平均值),取反该值,然后按该值平移所有点

要缩放图形,请执行以下操作:

foreach point in array
    point.x *= scale
    point.y *= scale

所以我解决了…耶!!!下面是代码,以防您遇到与我相同的问题

    float scaleX = (float)width/boundingPoints.width;
    float scaleY = (float)height/boundingPoints.height;
    int bx = boundingPoints.x;
    int by = boundingPoints.y;
    for(int i = 0; i < cg_points.size()-1; i++){
            Point p1 = cg_points.get(i);
            Point p2 = cg_points.get(i+1);
            int x1 = (int) ((p1.x-bx)*scaleX);
            x1 += pos.x;
            int y1 = (int) ((p1.y-by)*scaleY);
            y1 += pos.y;
            int x2 = (int) ((p2.x-bx)*scaleX);
            x2 += pos.x;
            int y2 = (int) ((p2.y-by)*scaleY);
            y2 += pos.y;

            g.drawLine(x1, y1, x2, y2);
        }
float scaleX=(float)width/boundingPoints.width;
浮动比例=(浮动)高度/边界点.height;
int bx=边界点.x;
int by=边界点.y;
对于(int i=0;i
这是什么样的程序?JAVAJavaScript?请解释这两个标签的需要。这两个标签的需要是因为这是java和JavaScript的。很抱歉,但我还是不明白。你能解释一下并给出一点细节吗?你是如何在Java和JavaScript中使用它的?我用Java编写了一个编辑器,允许你做某些事情,然后它将这些东西转换成JavaScript。在数学语言中,转换是加法/减法,缩放是乘法/除法。