in the above image I have shown two rectangles
Also: rectangle 2 has its starting point at left top position(0,0) whereas rectangle 1 has starting point( width/2, height/2).
What I need to do: to convert a point of rectangle 1 to point of rectangle 2 using scaling or translation.
So, what should be scaling factor for x
and y
coordinates in order to transform the coordinate of rectangle 1 to rectangle 2?
If:
Rectangle 1 has (x1, y1) origin and (w1, h1) for width and height, and
Rectangle 2 has (x2, y2) origin and (w2, h2) for width and height, then
Given point (x, y) in terms of Rectangle 1 coords, to convert it to Rectangle 2 coords:
xNew = ((x-x1)/w1)*w2 + x2;
yNew = ((y-y1)/h1)*h2 + y2;
Do the calculation in floating point and convert back to integer after, to avoid possible overflow.
In C#, the above would look something like:
PointF TransformPoint(RectangleF source, RectangleF destination, PointF point)
{
return new PointF(
((point.X - source.X) / source.Width) * destination.Width + destination.X,
((point.Y - source.Y) / source.Height) * destination.Height + destination.Y);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With