通过拖动鼠标查找比例因子-在java中缩放形状



我有一个形状和一个形状点的矢量,我想通过将鼠标从形状的一个点拖动到其他随机点(例如在windows点中)来放大/缩小形状(调整大小)

我搜索到的是,要缩放形状,你必须重新计算所有坐标:

xScaled=firstX*scaleX

yScaled=firstY*sclaleY

我的问题是如何找到比例因子,公式是什么?记住,我可以访问第一个HitPoint,实际的点和形状的所有点,我必须通过拖动鼠标来完成。

这是我的代码:

@Override
public void transformPoints() {
    findTransformationFactors();
    int size = points.size();
    for(int i = 0; i < size; i++) 
        points.set(i, new Point(points.get(i).x * scaleX, points.get(i).y * scaleY));
}
@Override
public void findTransformationFactors() {
    int oldx = firstHitPoint.x;
    int oldY = firstHitPoint.y;
    int actualX = actualPoint.x;
    int actualY = actualPoint.y;
    scaleX = ??
    scaleY = ??
}

以中心为常定点的X因子:

xVar = (initial.getX()-mouse.getX())/(center.getX()-initial.getX());
scaleX=xVar+1.0;

然后您必须控制应用的比例不是负-->避免镜像转换

最新更新