我有一个形状和一个形状点的矢量,我想通过将鼠标从形状的一个点拖动到其他随机点(例如在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;
然后您必须控制应用的比例不是负-->避免镜像转换