TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

Computer Graphics Reflection

Computer Graphics Reflection with Computer Graphics Tutorial, Line Generation Algorithm, 2D Transformation, 3D Computer Graphics, Types of Curves, Surfaces, Computer Animation, Animation Techniques, Keyframing, Fractals etc.

<< Back to COMPUTER

Reflection:

It is a transformation which produces a mirror image of an object. The mirror image can be either about x-axis or y-axis. The object is rotated by180°.

Types of Reflection:

  1. Reflection about the x-axis
  2. Reflection about the y-axis
  3. Reflection about an axis perpendicular to xy plane and passing through the origin
  4. Reflection about line y=x

1. Reflection about x-axis: The object can be reflected about x-axis with the help of the following matrix

Reflection

In this transformation value of x will remain same whereas the value of y will become negative. Following figures shows the reflection of the object axis. The object will lie another side of the x-axis.

Reflection

2. Reflection about y-axis: The object can be reflected about y-axis with the help of following transformation matrix

Reflection

Here the values of x will be reversed, whereas the value of y will remain the same. The object will lie another side of the y-axis.

The following figure shows the reflection about the y-axis

Reflection

3. Reflection about an axis perpendicular to xy plane and passing through origin:
In the matrix of this transformation is given below

Reflection
Reflection

In this value of x and y both will be reversed. This is also called as half revolution about the origin.

4. Reflection about line y=x: The object may be reflected about line y = x with the help of following transformation matrix

Reflection
Reflection

First of all, the object is rotated at 45°. The direction of rotation is clockwise. After it reflection is done concerning x-axis. The last step is the rotation of y=x back to its original position that is counterclockwise at 45°.

Example: A triangle ABC is given. The coordinates of A, B, C are given as

                    A (3 4)
                    B (6 4)
                    C (4 8)

Find reflected position of triangle i.e., to the x-axis.

Solution:

Reflection
Reflection

The a point coordinates after reflection

Reflection

The b point coordinates after reflection

Reflection

The coordinate of point c after reflection

Reflection

a (3, 4) becomes a1 (3, -4)
b (6, 4) becomes b1 (6, -4)
c (4, 8) becomes c1 (4, -8)

Program to perform Mirror Reflection about a line:

#include <iostream.h>
#include <conio.h>
#include <graphics.h>
#include <math.h>
#include <stdlib.h>
#define pi 3.14
class arc
{
	float x[10],y[10],theta,ref[10][10],ang;
           float p[10][10],p1[10][10],x1[10],y1[10],xm,ym;
	int i,k,j,n;
	public:
	void get();
	void cal ();
	void map ();
	void graph ();
	void plot ();
	void plot1();
};
void arc::get ()
{
	cout<<"\n ENTER ANGLE OF LINE INCLINATION AND Y INTERCEPT";
	cin>> ang >> b;
	cout <<"\n ENTER NO OF VERTICES";
	cin >> n;
	cout <<"\n ENTER";
	for (i=0; i<n; i++)
	{
		cout<<"\n x["<<i<<"] and y["<<i<<"]";
	}
	theta =(ang * pi)/ 180;
	ref [0] [0] = cos (2 * theta);
	ref [0] [1] = sin (2 * theta);
	ref [0] [2] = -b *sin (2 * theta);
	ref [1] [0] = sin (2 * theta);
	ref [1] [1] = -cos (2 * theta);
	ref [1] [2] = b * (cos (2 * theta)+1);
	ref [2] [0]=0;
	ref [2] [1]=0;
	ref [2] [2] = 1;
}
void arc :: cal ()
{
	for (i=0; i < n; i++)
	{
		p[0] [i] = x [i];
		p [1] [i] = y [i];
		p [2] [i] = 1;
	}
	for (i=0; i<3;i++)
	{
		for (j=0; j<n; j++)
		{
			p1 [i] [j]=0;
			for (k=0;k<3; k++)
		}
		p1 [i] [j] + = ref [i] [k] * p [k] [j];
             }
for (i=0; i<n; i++)
   {
	x1 [i]=p1[0] [i];
	y1 [i] = p1 [1] [i];
    }
}
void arc :: map ()
{
	int gd = DETECT,gm;
	initgraph (&gd, &gm, " ");
            int errorcode = graphresult ();
	/* an error occurred */
	if (errorcode ! = grOK)    
	{
 		printf ("Graphics error: %s \n", grapherrormsg (errorcode));
		printf ("Press any key to halt:");
		getch ();
		exit (1); /* terminate with an error code */
	}
}
void arc :: graph ()
{
	xm=getmaxx ()/2;
	ym=getmaxy ()/2;
	line (xm, 0, xmm 2*ym);
}
void arc :: plot 1 ()
{
	for (i=0; i <n-1; i++)
	{
		circle (x1[i]+xm, (-y1[i]+ym), 2);
		line (x1[i]+xm, (-y1[i]+ym), x1[i+1]+xm, (-y1[i+1]+ym));
	}
		line (x1[n-1)+xm, (-y1[n-1]+ym), x1[0]+xm, (-y1[0]+ym));
		getch();
}
void arc :: plot ()
{ 
	for (i=0; i <n-1; i++)
	{
		circle (x1[i]+xm, (-y1[i]+ym, 2);
		line (x1[i]+xm, (-y1[i]+ym), x[i+1]+xm, (-y1[i+1]+ym));
	}
		line (x[n-1]+xm, (-y1[n-1]+ym), x[0]+xm, (-y[0]+ym));
		getch();
}
void main ()
{
	class arc a;
	clrscr();
	a.map();
	a.graph();
	a.get();
	a.cal();
	a.plot();
	a.plot1();
	getch();
}

Output:

Reflection
Next TopicShearing




Related Links:


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf