<< Chapter < Page Chapter >> Page >

Why am I emphasizing this so heavily?

Shortly, you will see the changes that I made to the game-math library in preparation for this module. That library makes it possible for you toeasily create and manipulate underlying data objects for column matrices, points, vectors, and lines. Those changes include the ability for points,lines, and vectors to create graphical objects that represent themselves and to display those graphical objects on a specified graphics context upon request.

The left image in Figure 1 shows the manner in which GM2D02.Point objects and GM2D02.Line objects represent themselves on a graphics context.

The right image in Figure 1 shows the manner in which GM2D02.Vector objects represent themselves on a graphics context.

It is very important to understand the difference between the objects that encapsulate the underlying data and the graphic objects that represent thoseobjects for visible human consumption. Later on, we will be doing math using the underlying data objects. However, it is generally not possibleto do math using the graphic objects shown in Figure 1 .

Additional modifications that I made to the library for this module makes it is easyto modify the values encapsulated in one of the underlying data objects. However, once the graphical representation of one of those data objects is drawnon the graphics context, it is fairly difficult to modify, particularly if it overlaps another graphic object that you don't want to modify. Thelibrary does not provide that capability.

All Java parameters are passed to methods by value

Moving to a completely different topic, when you call out the name of a variable as a parameter to be passed to a method in Java, a copy of the contentsof that variable is made and the copy is passed to the method. Code in the method can modify the copy but it cannot modify the contents of the originalvariable. This is typically referred to as passing parameters by value . (Despite what you may have read elsewhere, unlike C and C++, Java parameters are never passed by reference.)

However, Java supports both primitive variables and reference variables. Passing reference variables by value exposes some vulnerabilities in the original version of the library when set methods are added to the library. A complete explanation of this topic is beyond the scope of thismodule. However, I will show you how I modified the code in the library to protect against such vulnerabilities.

Preview

I will explain the changes to the library in this module in conjunction with two programs that illustrate the impact of those changes. Bothprograms produce the screen output shown in Figure 1 , but they do so in significantly different ways.

The primary topics to be discussed have to do with:

  • Making it possible for the underlying data objects to represent themselves by drawing graphical objects on a specified 2D graphics contextupon request.
  • Making it possible to call set methods to modify the data encapsulated in the underlying data objects.
  • Protecting the data from corruption due to certain vulnerabilities exposed by adding set methods to the library.

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