我有一个形状和一个形状点的矢量,我想通过将鼠标从形状的一个点拖动到其他随机点(例如在windows中指向)来放大/缩小(调整大小)。
我搜索的内容是,为了缩放形状,您必须重新计算所有坐标:
xScaled = firstX * scaleX
yScaled = firstY * sclaleY
我的问题是如何找到比例因子,公式是什么?记住我对第一个点,实际点和形状的所有点都有进展,我必须通过拖动鼠标来做到这一点。
这是我的代码的和平:
@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 = ??
}
答案 0 :(得分:0)
X因子将中心作为一个恒定点:
xVar = (initial.getX()-mouse.getX())/(center.getX()-initial.getX());
scaleX=xVar+1.0;
然后你必须控制所应用的比例不是负数 - &gt;避免镜像转换