THE THREE DIMENSIONS
Teach you how to write programs for creating 3-D objects on the screen using the smallest possible code
AI
Podsumowanie AI: 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.
Kod źródłowy
<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"> </span></b></p>
<p class="MsoNormal" align="center" style="text-align:center"><b>
<span lang="EN-US"> </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"> </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"> </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"> </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"> </span></p>
<p class="MsoNormal"><b><span lang="EN-US">OK Let’s Start!</span></b></p>
<p class="MsoNormal"><span lang="EN-US"> </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"> </span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">#include<graphics.h></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">#include<conio.h></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">#include<dos.h></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">#include<math.h></span></p>
<p class="MsoNormal"><span lang="EN-US"> </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"> </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"> </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"> </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"> </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"> </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"> cosa=cos(cos1*pi/180);</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue"> cosb=cos(cos2*pi/180);</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue"> sina=sin(cos1*pi/180);</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue"> 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"> </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"> </span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">void plot(int x,int
y,int z,int &x1,int &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"> x1=x*cosa-y*sina;</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue"> y1=x*sina*sinb+y*cosa*sinb+z*cosb;</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">
x1=320+int(x1); </span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue"> 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"> </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"> </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"> </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"> </span></p>
<p class="MsoNormal"><span lang="EN-US"> <span style="color:red"> /* Here we are
initializing the graphics */</span></span></p>
<p class="MsoNormal" style="text-indent: 6.0pt"><span lang="EN-US"> </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"> initgraph(&gd,&gm,"c:\\tc\\bgi");</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"> </span></p>
<p class="MsoNormal" style="text-indent: -60.0pt; margin-left: 60.0pt">
<span lang="EN-US"> <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"> </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"> {</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"> 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"> 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"> 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"> </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"> <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"> </span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: -48.0pt; margin-left: 48.0pt">
<span lang="EN-US"> <span style="color:red"> /* 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"> </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">
plot(45,5,1,x[1],y[1]);</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">
plot(5,45,1,x[3],y[3]);</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">
plot(45,45,1,x[4],y[4]);</span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span lang="EN-US"> <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"> </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 & 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"> </span></p>
<p class="MsoNormal"><span lang="EN-US"> </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">
line(x[0],y[0],x[3],y[3]);</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">
line(x[0],y[0],x[1],y[1]);</span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: 6.0pt; margin-left: 12.0pt">
<span lang="EN-US"> <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"> join the peak to the 4 co-ordinates
of the base hence completing the pyramid*/ </span></p>
<p class="MsoNormal" style="text-indent: -24.0pt; margin-left: 54.0pt">
<span lang="EN-US"> </span></p>
<p class="MsoNormal"><span lang="EN-US"> <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"> </span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue"> for(int i=0;i<5;i++)</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue"> {</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue"> setcolor(BROWN);</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">
line(x[2],y[2],x[i],y[i]);</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue"> }</span></p>
<p class="MsoNormal" style="text-indent: -42.0pt; margin-left: 78.0pt">
<span lang="EN-US"> </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"> </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"> 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"> }</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:blue">}</span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span lang="EN-US"> </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> .The programs are available for download with
the source code.</span></p>
<p class="MsoNormal"><span lang="EN-US"> </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"> </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"> </span></p>
<p class="MsoNormal"><span lang="EN-US"> </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"> </span></p>
</body>
</html>
Oryginalne komentarze (3)
Odzyskane z Wayback Machine