문제

나는 Topx, Topy, 너비 및 높이에 대한 정보가있는 사각형이 있습니다.

왼쪽 상단 이외의 원점을 기준 으로이 사각형을 확장하고 싶습니다. 이미 기존의 알고가 있습니까?

현재 Eclipse GEF & SWT에서 일하고 있습니다. GEF에서 모든 사각형 작업은 왼쪽 상단이 도면이 시작되는 곳이며 왼쪽 상단에서 스케일/크기를 조정한다고 가정합니다. 그러나 나는 중앙에서 규모/크기를하고 싶습니다.

예 : 내 사각형에는 {100,100,50,50}과 같은 정보가 있습니다. 왼쪽 상단에서 X & Y에서 1.5의 스케일링을 수행하면 결과 사각형을 {100,100,100,100} (첫 번째 두 개는 X, Y이고 나머지는 너비, 높이)로 얻을 수 있습니다.

감사합니다 j

도움이 되었습니까?

해결책

왼쪽 상단에서 1.5로 스케일이 왼쪽 상단에서 1.5로 스케일이 {100, 100, 75, 75} -> 원점은 동일하게 유지되고 각면의 크기에 스케일이 곱하기 때문에 스케일 정의는 귀하와 다릅니다. .

이 정의를 사용하면 (x, y)가 직사각형의 왼쪽 상단 좌표 인 경우 중심에서 스케일링하고 원점을 일정하게 유지합니다. {x, y, 너비, 높이} -> {x + 너비 * (1 - 스케일)/2, y + 높이 * (1- 스케일)/2, 너비 * 스케일, 높이 * 스케일}}

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


작업 예 : 중앙에서 1.5 x 스케일 {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;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top