중심점을 변경하며 스케일 조정했을 때 변경된 바운딩 박스를 계산하는 알고리즘

다음과 같이 하면 됩니다.


public static RectF getScaledBounds( 
      RectF fromBounds, 
      PointF fromCenter, 
      PointF toCenter, 
      float fromScale, 
      float toScale ){
 
 float si = toScale / fromScale;
 float fw = fromBounds.right - fromBounds.left;
 float fh = fromBounds.bottom - fromBounds.top;
 float fxr = ( fromCenter.x - fromBounds.left ) / fw;
 float fyr = ( fromCenter.y - fromBounds.top ) / fh;
 float tw = fw * si;
 float th = fh * si;
 float tx = toCenter.x - tw * fxr;
 float ty = toCenter.y - th * fyr;
 return new RectF( tx, ty, tx + tw, ty + th );
}

다른글 읽기