2009-12-22 5 views
1

나는 topx, topy, width 및 height에 대한 정보가있는 사각형이 있습니다.다른 원점에서 직사각형 크기 조절

이 사각형을 왼쪽 위가 아닌 다른 원점을 기준으로 확대/축소하려고합니다. 거기에 이미 기존의 알 고가 있습니까?

현재 저는 Eclipse GEF & SWT에서 작업하고 있습니다. GEF에서 모든 사각형 작업은 왼쪽 위가 도면이 시작되고 왼쪽 위부터 크기가 조정되거나 크기가 조절되는 것으로 가정합니다. 하지만 센터에서 규모를 조정하거나 크기를 조정하려고합니다.

예 : 내 직사각형에는 {1001005050} 같은 정보가 있습니다. 왼쪽 위의 x& y에서 1.5의 배율을 조정하면 결과 직사각형이 {100100100100} (첫 번째 두 개는 x, y이고 나머지는 너비, 높이)가됩니다.

감사 J

답변

0
규모의 나의 정의는 내가 정상에서 1.5 확장 할 경우 내 결과 사각형이 될 것 왼쪽 때문에 당신과 다른 {100, 100, 75, 75}

-> 원점은 동일하게 유지 각 변의 크기에 스케일을 곱합니다.

(x, y)가 사각형의 왼쪽 위 좌표이고 가운데에서 크기를 조정하고 원점을 일정하게 유지하는 경우 : {x, y, width, height} -> {x +

결과가 0과 음수 값에 대해 정의되지만 스케일> 0을 제안합니다.


예제 : 센터에서 {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}

+0

나는 그것이 올바른 결과를 얻을 것입니다 생각하지 않습니다. 왜냐하면 내 직사각형이 {1001005050}이라고 가정합니다. 따라서 원점에서 1.5 배로 확장하면 {87.5,87.5,75,75}가됩니다. 그렇지 않니? – Jijoy

+0

수정. 그것은 공식이 당신에게주는 것입니다. 이것을 증명하기 위해 예제를 추가했습니다. 두 사각형의 중심은 125, 125에 있습니다. – richj

+0

예, 내 잘못입니다. 귀하의 대답은 정확합니다. 감사 – Jijoy

0

은 사각형

topx, topy, widht, height

스케일링에 의해 정의되면 요인은

factor

원점 좌표입니다

ox, oy

는 다음과 같은 공식으로 주어진 기원하여 사각형을 확장 할 수 있습니다

topx = ox + (topx - ox) * factor; 
topy = oy + (topy - oy) * factor; 
width = width * factor; 
height = height * factor;