Do a research about the real world window to viewport transformation.
What is?
Window to Viewport Transformation is the process of transforming a 2D world-coordinate objects to device coordinates. Objects inside the world or clipping window are mapped to the viewport which is the area on the screen where world coordinates are mapped to be displayed.

General Terms:
- World coordinate – It is the Cartesian coordinate w.r.t which we define the diagram, like Xwmin, Xwmax, Ywmin, Ywmax
- Device Coordinate –It is the screen coordinate where the objects is to be displayed, like Xvmin, Xvmax, Yvmin, Yvmax
- Window –It is the area on world coordinate selected for display.
- ViewPort –It is the area on device coordinate where graphics is to be displayed.
Mathematical Calculation of Window to Viewport:
It may be possible that the size of the Viewport is much smaller or greater than the Window. In these cases, we have to increase or decrease the size of the Window according to the Viewport and for this, we need some mathematical calculations.
(xw, yw): A point on Window (xv, yv): Corresponding point on Viewport
Where Sx and Sy are the scaling factor.
Exemple in C#
Manual trasforming.
// C# program to implement
// Window to ViewPort Transformation
using System;
class GFG
{
// Function for window to viewport transformation
static void WindowtoViewport(int x_w, int y_w,
int x_wmax, int y_wmax,
int x_wmin, int y_wmin,
int x_vmax, int y_vmax,
int x_vmin, int y_vmin)
{
// point on viewport
int x_v, y_v;
// scaling factors for x coordinate
// and y coordinate
float sx, sy;
// calculatng Sx and Sy
sx = (float)(x_vmax - x_vmin) /
(x_wmax - x_wmin);
sy = (float)(y_vmax - y_vmin) /
(y_wmax - y_wmin);
// calculating the point on viewport
x_v = (int) (x_vmin +
(float)((x_w - x_wmin) * sx));
y_v = (int) (y_vmin +
(float)((y_w - y_wmin) * sy));
Console.Write("The point on viewport: " +
"({0}, {1} )\n ", x_v, y_v);
}
// Driver Code
public static void Main(String[] args)
{
// boundary values for window
int x_wmax = 80, y_wmax = 80,
x_wmin = 20, y_wmin = 40;
// boundary values for viewport
int x_vmax = 60, y_vmax = 60,
x_vmin = 30, y_vmin = 40;
// point on window
int x_w = 30, y_w = 80;
WindowtoViewport(30, 80, 80, 80, 20,
40, 60, 60, 30, 40);
}
}
// This code is contributed by PrinciRaj1992
https://www.geeksforgeeks.org/window-to-viewport-transformation-in-computer-graphics-with-implementation/



