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;
}
