<< Chapter < Page Chapter >> Page >

This program draws a 3D circular cylinder by stacking 20 circular disks on the x-z plane as shown in Figure 1 . The disks are centered on the y-axis and are parallel to the x-z plane. The thickness of each disk is 5 vertical units. Asmentioned above, there is no backface culling in this program, so all of the lines that should be hidden show through.

Will discuss in fragments

A complete listing of this program is provided in Listing 12 near the end of the module. I will explain portions of the program using code fragments.However, I won't repeat explanations of code that I have already explained inthis or in earlier modules.

The method named drawTheCylinder

All of the interesting code in this program is contained in the method named drawTheCylinder , which is shown in Listing 7 . (Note that some of the code was deleted from Listing 7 for brevity.) This method is used to set the axes to the center of the off-screen image and to draw a 3D cylinder that iscentered on the y-axis.

Listing 7 . The method named drawTheCylinder in DotProd3D04.
private void drawTheCylinder(Graphics2D g2D){

Behavior of the code

Basically, the code in Listing 7 draws 21 circles, one above the other to represent the edges of the 20 circular disks. If you understand the trigonometryinvolved in drawing a circle, you should find the code in Listing 7 to be straightforward and no explanation beyond the embedded comments should berequired. If you don't understand the trigonometry, you will simply have to take my word for it that the expressions in Listing 7 are correct for drawing circles. A study of trigonometry is beyond the scope of this module.

The program named DotProd3D03

The purpose of this program is to demonstrate a practical use of the vector dot product -- backface culling. As before, the program draws a 3D circularcylinder by stacking 20 circular disks on the x-z plane. The disks are centered on the y-axis and are parallel to the x-z plane. The thickness of each disk is 5vertical units.

Backface culling is incorporated using the dot product between a vector that is parallel to the viewpoint of the viewer and a vector that is perpendicular tothe line being drawn to form the outline of a circle. The results are shown in Figure 2 .

Will discuss in fragments

A complete listing of this program is provided in Listing 13 near the end of the module. I will explain portions of the program using code fragments.However, I won't repeat explanations of code that I have already explained in this or in earlier modules.

The method named drawTheCylinder

As before, all of the interesting code in this program is contained in the method named drawTheCylinder , which is shown in Listing 8 . (Note that some of the code was deleted from Listing 8 for brevity.) This method is used to set the axes to the center of the off-screen image and to draw a 3Dcylinder that is centered on the y-axis.

Listing 8 . The method named drawTheCylinder in DotProd3D03.
private void drawTheCylinder(Graphics2D g2D){

The new code and an exercise for the student

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Game 2302 - mathematical applications for game development. OpenStax CNX. Jan 09, 2016 Download for free at https://legacy.cnx.org/content/col11450/1.33
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Game 2302 - mathematical applications for game development' conversation and receive update notifications?

Ask