3.A] Explain the basic 2D geometric transformations in detail with a snippet of code for each
Answer:-
Basic 2D Geometric Transformations
1. Translation
Description: Moves an object from one position to another.
Matrix Representation:
[ 1 0 dx ] [ 0 1 dy ] [ 0 0 1 ]
Code Snippet (C):
#include <stdio.h> int main() { float x = 100.0, y = 100.0; float dx = 50.0, dy = 30.0; printf("Original point: (%f, %f)\n", x, y); x += dx; y += dy; printf("Translated point: (%f, %f)\n", x, y); return 0; }
2. Rotation
Description: Rotates an object around a point (usually the origin) by a given angle.
Matrix Representation:
[ cos(θ) -sin(θ) 0 ] [ sin(θ) cos(θ) 0 ] [ 0 0 1 ]
Code Snippet (C):
#include <stdio.h> #include <math.h> int main() { float x = 100.0, y = 100.0; float angle = 45.0; // Angle in degrees printf("Original point: (%f, %f)\n", x, y); float radians = angle * M_PI / 180.0; // Convert angle to radians float x_new = x * cos(radians) - y * sin(radians); float y_new = x * sin(radians) + y * cos(radians); x = x_new; y = y_new; printf("Rotated point: (%f, %f)\n", x, y); return 0; }
3. Scaling
Description: Changes the size of an object by scaling it along the x and y axes.
Matrix Representation:
[ sx 0 0 ] [ 0 sy 0 ] [ 0 0 1 ]
Code Snippet (C):
#include <stdio.h> int main() { float x = 100.0, y = 100.0; float sx = 2.0, sy = 0.5; printf("Original point: (%f, %f)\n", x, y); x *= sx; y *= sy; printf("Scaled point: (%f, %f)\n", x, y); return 0; }
4. Reflection
Description: Flips an object over a specified axis.
Matrix Representations:
Axis | Matrix Representation |
---|---|
Over x-axis |
[ 1 0 0 ] [ 0 -1 0 ] [ 0 0 1 ] |
Over y-axis |
[ -1 0 0 ] [ 0 1 0 ] [ 0 0 1 ] |
Code Snippets (C):
#include <stdio.h> int main() { float x = 100.0, y = 100.0; printf("Original point: (%f, %f)\n", x, y); y = -y; printf("Reflected over x-axis: (%f, %f)\n", x, y); // Reset point x = 100.0, y = 100.0; x = -x; printf("Reflected over y-axis: (%f, %f)\n", x, y); return 0; }