Advertisement
ASP_Volume2 Graphics/ Sound #41106

THE THREE DIMENSIONS

Teach you how to write programs for creating 3-D objects on the screen using the smallest possible code

AI

AI Summary: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.

Source Code
original-source
<html>
<style>
<!--
 p.MsoNormal
	{mso-style-parent:"";
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman";
	margin-left:0cm; margin-right:0cm; margin-top:0cm}
-->
</style>
</head>
<body>
<p class="MsoNormal" align="center" style="text-align:center"><b>
<span lang="EN-US" style="font-size:24.0pt">The 3 Dimensions</span></b></p>
<p class="MsoNormal" align="center" style="text-align:center"><b>
<span lang="EN-US">By – Gaurav Dhup</span></b></p>
<p class="MsoNormal" align="center" style="text-align:center"><b>
<span lang="EN-US">
<a href="http://www.gauravcreations.cjb.net/" style="color: blue; text-decoration: underline; text-underline: single">
www.gauravcreations.cjb.net</a></span></b></p>
<p class="MsoNormal" align="center" style="text-align:center"><b>
<span lang="EN-US">&nbsp;</span></b></p>
<p class="MsoNormal" align="center" style="text-align:center"><b>
<span lang="EN-US">&nbsp;</span></b></p>
<p class="MsoNormal"><span lang="EN-US">Hello and welcome to the first tutorial 
I have ever written in my life. This tutorial will teach you how to create 3-D 
objects through C++ although you can use the 3-D functions in other languages 
too but I am taking up C++ here.</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">Before I start I assume that you have 
some little knowledge of the basic graphics functions in Turbo C++ v3.0 i.e. 
drawing a line, circle etc . . . . Please note that I am using the TC++ v3.0 
compiler here and have not tested it on any other C++ compiler.</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">Now let’s start with a program. It will 
be better if I take up a program and explain it in detail instead of giving all 
the boring theoretical information.</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">The program which we will develop is <b>
<span style="color:red">ROTATING 3-D PYRAMID</span></b>. Don’t be nervous by the 
name it’s a very simple program with only a 50 line code! I have even attached 
the code along with this tutorial</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><b><span lang="EN-US">OK Let’s Start!</span></b></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:red">/* This is just 
including the header files */</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">#include&lt;graphics.h&gt;</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">#include&lt;conio.h&gt;</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">#include&lt;dos.h&gt;</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">#include&lt;math.h&gt;</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:red">/* End of Header Files 
*/</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue"># define pi 
3.141592736;</span><span lang="EN-US"> <span style="color:red">//Declaring a 
constant named pi </span></span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">float 
cosa,cosb,sina,sinb;</span><span lang="EN-US"> <span style="color:red">// 
Declaring variables</span></span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal" style="text-indent: -12.0pt; margin-left: 12.0pt">
<span lang="EN-US" style="color:red">/* Till now it was simple you do that in 
any C++ program. From now onwards starts the CORE */</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal" style="text-indent: -12.0pt; margin-left: 12.0pt">
<span lang="EN-US" style="color:red">/* We use the function below for rotation 
in both horizontal and vertical direction All we have to do is pass the angle in 
degrees to this function and we will get the corresponding values */</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">void ini(float 
cos1,float cos2)</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">{</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">&nbsp;cosa=cos(cos1*pi/180);</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">&nbsp;cosb=cos(cos2*pi/180);</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">&nbsp;sina=sin(cos1*pi/180);</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">&nbsp;sinb=sin(cos2*pi/180);</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">}</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal" style="text-indent: -12.0pt; margin-left: 12.0pt">
<span lang="EN-US" style="color:red">/* The function below takes 3 values i.e 
the values for the 3 Co-ordinates (x,y,z) and returns us the values which we 
actually plot on the screen i.e it takes the 3-D values and converts them in to 
a 2-D value which when plotted on the screen seems 3-D */</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">void plot(int x,int 
y,int z,int &amp;x1,int &amp;y1)</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">{</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">&nbsp;x1=x*cosa-y*sina;</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">&nbsp;y1=x*sina*sinb+y*cosa*sinb+z*cosb;</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">
&nbsp;x1=320+int(x1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">&nbsp;y1=240-int(y1);
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">}</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal" style="text-indent: -12.0pt; margin-left: 12.0pt">
<span lang="EN-US" style="color:red">/* Above we add 320 and 240 respectively to 
x1 and y1 to shift the co-ordinate system to the centre of the screen */ </span>
</p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:red">/* The above 2 
functions are what you will only need to create any 3-D object */</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">void main()</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">{</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;<span style="color:red">&nbsp;/* Here we are 
initializing the graphics */</span></span></p>
<p class="MsoNormal" style="text-indent: 6.0pt"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal" style="text-indent: 6.0pt">
<span lang="EN-US" style="color:blue">int gd=DETECT,gm;</span></p>
<p class="MsoNormal" style="text-indent: -180.0pt; margin-left: 180.0pt">
<span lang="EN-US" style="color:blue">&nbsp;&nbsp;initgraph(&amp;gd,&amp;gm,&quot;c:\\tc\\bgi&quot;);</span><span lang="EN-US">
<span style="color:red">/* Please enter the path of your bgi directory.In my 
case it is “c:\\tc\\bgi”.It may be different in your case */</span></span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal" style="text-indent: -60.0pt; margin-left: 60.0pt">
<span lang="EN-US">&nbsp;&nbsp;<span style="color:blue">int p=0;</span>
<span style="color:red">/* Variable passed to the <b>ini</b> function above i.e. 
it contains the angle in degrees*/</span></span></p>
<p class="MsoNormal" style="text-indent: 6.0pt"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal" style="text-indent: 6.0pt">
<span lang="EN-US" style="color:blue">while(!kbhit())</span></p>
<p class="MsoNormal" style="text-indent: 6.0pt">
<span lang="EN-US" style="color:blue">&nbsp;{</span></p>
<p class="MsoNormal" style="text-indent: -54.0pt; margin-left: 90.0pt">
<span lang="EN-US" style="color:blue">ini(p,p);</span><span lang="EN-US">
<span style="color:red">/* Here we are calling the ini function which is 
responsible for the rotation.You can try with different parameters here</span></span></p>
<p class="MsoNormal" style="text-indent: -54.0pt; margin-left: 90.0pt">
<span lang="EN-US" style="color:red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;ini(p,0) – Horizontal 
Rotation</span></p>
<p class="MsoNormal" style="text-indent: -54.0pt; margin-left: 90.0pt">
<span lang="EN-US" style="color:red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ini(0,p) – Vertical 
Rotation</span></p>
<p class="MsoNormal" style="text-indent: -54.0pt; margin-left: 90.0pt">
<span lang="EN-US" style="color:red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ini(p,p) – Both Veretical 
and Horizontal Rotation */</span></p>
<p class="MsoNormal" style="text-indent: -54.0pt; margin-left: 90.0pt">
<span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal" style="text-indent: -72.0pt; margin-left: 108.0pt">
<span lang="EN-US" style="color:blue">int x[5],y[5]; </span><span lang="EN-US">&nbsp;<span style="color:red">/*Declaration 
of array used for storing the converted x,y,z values by the plot function */</span></span></p>
<p class="MsoNormal" style="text-indent: -72.0pt; margin-left: 108.0pt">
<span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p class="MsoNormal" style="text-indent: -48.0pt; margin-left: 48.0pt">
<span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:red">&nbsp;/* Below 4 lines are 
responsible for plotting the co-ordinates of the base of the Pyramid */</span></span></p>
<p class="MsoNormal" style="text-indent: 36.0pt"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal" style="text-indent: 36.0pt">
<span lang="EN-US" style="color:blue">plot(5,5,1,x[0],y[0]);</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
plot(45,5,1,x[1],y[1]);</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
plot(5,45,1,x[3],y[3]);</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
plot(45,45,1,x[4],y[4]);</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:blue">
setcolor(RED);</span> <span style="color:red">// Sets the color of the lines as 
RED</span></span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal" style="text-indent: -12.0pt; margin-left: 48.0pt">
<span lang="EN-US" style="color:red">/* Below 4 lines are responsible for 
actually drawing the base of the pyramid from the values x &amp; y returned by the 
plot function. Different co-ordinates of the base(4 pts.) are stored in the 
array declared above*/</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p class="MsoNormal" style="text-indent:36.0pt">
<span lang="EN-US" style="color:blue">line(x[3],y[3],x[4],y[4]);</span></p>
<p class="MsoNormal" style="text-indent:36.0pt">
<span lang="EN-US" style="color:blue">line(x[1],y[1],x[4],y[4]);</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
line(x[0],y[0],x[3],y[3]);</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
line(x[0],y[0],x[1],y[1]);</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal" style="text-indent: 6.0pt; margin-left: 12.0pt">
<span lang="EN-US">&nbsp; <span style="color:red">/* Below we plot the top of the 
pyramid and from there using the for loop</span></span></p>
<p class="MsoNormal" style="text-indent: -24.0pt; margin-left: 54.0pt">
<span lang="EN-US" style="color:red">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;join the peak to the 4 co-ordinates 
of the base hence completing the pyramid*/&nbsp;&nbsp;&nbsp; </span></p>
<p class="MsoNormal" style="text-indent: -24.0pt; margin-left: 54.0pt">
<span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:blue">
plot(20,20,140,x[2],y[2]);</span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;5;i++)</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setcolor(BROWN);</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">&nbsp; &nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line(x[2],y[2],x[i],y[i]);</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}</span></p>
<p class="MsoNormal" style="text-indent: -42.0pt; margin-left: 78.0pt">
<span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal" style="text-indent: -42.0pt; margin-left: 78.0pt">
<span lang="EN-US" style="color:blue">p+=3; </span>
<span lang="EN-US" style="color:red">/* Incrementing the angle for rotation by 3 
degrees.This also alters the speed of rotation try increasing or decreasing this 
value */</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p class="MsoNormal" style="text-indent:36.0pt">
<span lang="EN-US" style="color:blue">delay(20); </span></p>
<p class="MsoNormal" style="text-indent: -120.0pt; margin-left: 120.0pt">
<span lang="EN-US" style="color:blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cleardevice();</span><span lang="EN-US">
<span style="color:red">/* If we don’t use cleardevice here then the pyramid 
will leave marks all around it’s rotation path. */</span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">&nbsp;&nbsp;}</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">}</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">This is it you have made your first 3-D 
program in just 50 lines!</span></p>
<p class="MsoNormal"><span lang="EN-US">Easy isn’t it. If you want to have a 
look at some complex 3-D programs which I have created Please have a look at
<a href="http://www.gauravcreations.cjb.net/" style="color: blue; text-decoration: underline; text-underline: single">
www.gauravcreations.cjb.net</a>&nbsp; .The programs are available for download with 
the source code.</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">You are free to ask my anything about 
the above tutorial!</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">Please Since this is my first tutorial 
do give a <b>FEEDBACK</b> and <b>VOTE</b> for it too. It will encourage me to 
write more tutorials </span><span lang="EN-US" style="font-family: Wingdings">J</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal" align="right" style="text-align:right"><b>
<span lang="EN-US">HAPPY CODING!!!</span></b></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
</body>
</html>
Original Comments (3)
Recovered from Wayback Machine