質問
私はtopx、トピー、幅と高さの情報を持っていた矩形を、持っています。
私は、左上以外の起源に基づいて、この四角形をスケールします。それを行うには、既存のアルゴが既にありますか?
現在、私は、Eclipse GEF&SWTに取り組んでいます。 GEFでは、全ての矩形操作は、左上がどこ描画が開始され、それらは/左上からリサイズスケールと仮定されています。しかし、私は/スケールを行う中央からサイズを変更したい。
例:私の矩形は{} 100,100,50,50のような情報を持っています。 Iは、左上からXおよびYの両方に1.5のスケーリングを行う場合、私は{100100100100}として得られた矩形を取得します(最初の二つは、Y、残りは幅、高さ、Xである)。
のおかげで J
解決
私は上から1.5スケーリング場合私得矩形が{100、100、75、75}であろう左ので
規模の私の定義はあなたとは異なる - >起源は同じままで、各辺のサイズが乗算されます規模別ます。
(x、y)は、矩形の左上座標、中心からスケーリング及び原点を一定に保っている場合は、、これらの定義を使用します: {X、Y、幅、高さ} - > {X +幅*(1 - スケール)/ 2、Y +高さ*(1 - スケール)/ 2、幅*スケール、高さ*スケール}
結果はゼロと負の値のために定義されているが、Iはスケール> 0を示唆している。
<時間> 中心から1.5のスケール{100、100、50、50}例働きました。
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}
他のヒント
矩形がにより定義されている場合
topx, topy, widht, height
スケーリング係数がある。
factor
原点座標である
ox, oy
あなたは次の式で与えられた起源で四角形を拡大縮小することができます。
topx = ox + ( topx - ox ) * factor;
topy = oy + ( topy - oy ) * factor;
width = width * factor;
height = height * factor;
所属していません StackOverflow