我有矩形,有关于topx,topy,width和height的信息。
我想根据左上角以外的原点缩放此矩形。是否已经存在这样的算法?
目前我在Eclipse GEF& amp; SWT。在GEF中,假设所有矩形操作左上角是绘图开始的位置,它们从左上角开始缩放/调整大小。但我想从中心进行缩放/调整大小。
例如:我的矩形有{100,100,50,50}之类的信息。如果我从左上角开始在x& y中缩放1.5,我会得到{100,100,100,100}的结果矩形(前两个是x,y,其余是宽度,高度)。
由于 Ĵ
答案 0 :(得分:0)
我对比例的定义与你的不同,因为如果我从左上角缩放1.5,我得到的矩形将是{100,100,75,75} - >原点保持不变,每边的大小乘以比例。
使用这些定义,如果(x,y)是矩形的左上角坐标,则从中心缩放并保持原点不变: {x,y,width,height} - > {x +宽*(1 - 比例)/ 2,y +高*(1 - 比例)/ 2,宽*比例,高*比例}
我建议比例> 0虽然结果是针对零值和负值定义的。
工作示例:从中心缩放{100,100,50,50} 1.5。
x: 100 -> 100 + 50 * (1 - 1.5)/2 = 100 + 50 * (-0.5)/2 = 100 - 50/4 = 87.5
y: 100 -> 100 + 50 * (1 - 1.5)/2 = 100 + 50 * (-0.5)/2 = 100 - 50/4 = 87.5
width: 50 -> 50 * 1.5 = 75
height: 50 -> 50 * 1.5 = 75
结果:{100,100,50,50} - > {87.5,87.5,75,75}
答案 1 :(得分:0)
如果矩形由
定义 topx, topy, widht, height
比例因子是
factor
原点坐标是
ox, oy
您可以使用以下公式按给定原点缩放矩形
topx = ox + ( topx - ox ) * factor;
topy = oy + ( topy - oy ) * factor;
width = width * factor;
height = height * factor;