iat 355 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
IAT 355 PowerPoint Presentation
Download Presentation
IAT 355

Loading in 2 Seconds...

play fullscreen
1 / 22

IAT 355 - PowerPoint PPT Presentation


  • 151 Views
  • Uploaded on

IAT 355. Lecture 4 Computer Graphics: Rocket. Outline. Programming concepts Programming Computer Graphics Transformations Methods Classes. Drawing a rocket. background(0); fill(255); triangle(10, 0, 0, 20, 20, 20); rectMode (CORNERS); rect (5, 20, 8, 23); rect (12, 20, 15, 23);.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'IAT 355' - lahela


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
iat 355

IAT 355

Lecture 4

Computer Graphics: Rocket

outline
Outline
  • Programming concepts
    • Programming Computer Graphics
    • Transformations
    • Methods
    • Classes

IAT 355

drawing a rocket
Drawing a rocket

background(0);

fill(255);

triangle(10, 0, 0, 20, 20, 20);

rectMode(CORNERS);

rect(5, 20, 8, 23);

rect(12, 20, 15, 23);

IAT 355

now i want to draw several rockets
Now I want to draw several rockets
  • Want several rockets in different locations on the screen
  • I could copy and paste the code
    • Need to adjust all the numbers for the new location
  • Or… define a method

IAT 355

first method for drawing a rocket
First method for drawing a rocket

void drawRocket() {

fill(255);

triangle(10, 0, 0, 20, 20, 20);

rectMode(CORNERS);

rect(5, 20, 8, 23);

rect(12, 20, 15, 23);

}

Gotcha! Once you start using methods, all code must be in methods (can’t just directly call drawRocket() at the top of the file)

IAT 355

didn t seem to help much
Didn’t seem to help much…
  • Still just draws a rocket at one fixed location
  • Need arguments that allow me to tell the program where I want the rocket!
    • Must figure out the relationship between the position and the location of the rest of the parts
  • Argument variables are available within the method, but not outside (method scope)

IAT 355

drawrocket with arguments
DrawRocket() with arguments

void drawRocket(int x, int y, float rot)

{

final inthalfHeight = 10;

final inthalfWidth = 10;

triangle(0, -halfHeight, -halfWidth, halfHeight, halfWidth, halfHeight);

rectMode(CORNERS);

rect(-halfWidth + 5, halfHeight, -halfWidth + 8, halfHeight + 3);

rect(halfWidth - 8, halfHeight, halfWidth - 5, halfHeight + 3);

}

We’re purposely ignoring the arguments for now

IAT 355

now i d like to specify rotation
Now I’d like to specify rotation
  • Currently I specify the nose position and it draws a rocket that faces straight up
  • To rotate the rocket, I’d need to figure out the new position of the vertices
    • Too hard!
  • Instead of rotating the rocket, rotate the paper
    • As long as I’m rotating the paper, I may as well slide it around as well
  • To prepare for translating and rotating, first draw the rocket centered around the origin (0,0)

IAT 355

add translation and rotation
Add translation and rotation

void drawRocket(int x, int y, float rot) {

final inthalfHeight = 10;

final inthalfWidth = 10;

translate(x, y);

rotate(rot);

triangle(0, -halfHeight, -halfWidth, halfHeight, halfWidth, halfHeight);

rectMode(CORNERS);

rect(-halfWidth + 5, halfHeight, -halfWidth + 8, halfHeight + 3);

rect(halfWidth - 8, halfHeight, halfWidth - 5, halfHeight + 3);

}

Let’s try drawing several rockets

IAT 355

works fine for one call
Works fine for one call…
  • But when we call it twice, it doesn’t seem to work
    • Looks like first call messes up subsequent calls
  • What happening is that, when you move the paper (translate, rotate) the paper stays moved
  • Subsequent paper moves (additional translates and rotates) build on top of the previous ones
  • What we want is to move the paper, draw, and move it back
  • We need pushMatrix() and popMatrix()
    • pushMatrix() remembers the previous paper position (previous transformation matrix)
    • popMatrix() restores the paper to the remembered position (restores the transformation matrix)

IAT 355

using pushmatrix and popmatrix
Using pushMatrix() and popMatrix()

void drawRocket(int x, int y, float rot) {

final inthalfHeight = 10;

final inthalfWidth = 10;

pushMatrix();

translate(x, y);

rotate(rot);

triangle(0, -halfHeight, -halfWidth, halfHeight, halfWidth, halfHeight);

rectMode(CORNERS);

rect(-halfWidth + 5, halfHeight, -halfWidth + 8, halfHeight + 3);

rect(halfWidth - 8, halfHeight, halfWidth - 5, halfHeight + 3);

popMatrix();

}

IAT 355

classes
Classes

IAT 355

classes1
Classes
  • Java (Processing) is an object-oriented language
  • This means that parts of your program that you treat as conceptual things, become things (objects) in the program code
  • Objects are built from classes
    • Classes are the blueprint, objects are built from the blueprint
    • Objects are called instances of classes
  • Our rocket sure seems like a thing – let’s turn it into a class

IAT 355

parts of a class
Parts of a class
  • Classes define fields, constructors and methods
  • Fields are the variables that will appear inside every instance of the class
    • Each instance has its own values
  • Constructors are special methods that define how to build instances (generally, how to set the initial values of fields)
  • Methods are how you do things to instances

IAT 355

defining the rocket class
Defining the rocket class

class Rocket

{

// fields

float rotation = 0;

float xPos;

float yPos;

final inthalfWidth = 10;

final inthalfHeight= 10;

// constructor

Rocket( intinitialX, intinitialY, float initialRot )

{

xPos = initialX;

yPos = initialY;

rotation = initialRot;

}

}

IAT 355

using the class to create instances
Using the class to create instances
  • Classes define a type
  • You can now declare variables of this type and initialize them using the constructor
  • Like arrays, the keyword new is used to tell Java to create a new object (hmm, so arrays must be objects…)

Rocket r1, r2 ;

void setup() {

r1 = new Rocket(75, 10, 0);

r2 = new Rocket(50, 50, PI/2);

}

  • Nice, but my rockets don’t do anything (need methods!)

IAT 355

adding a draw routine to our rocket
Adding a draw routine to our Rocket

No Arguments!

void draw() {

pushMatrix();

translate(xPos, yPos);

rotate(rotation);

triangle(0, -halfHeight, -halfWidth, halfHeight, halfWidth, halfHeight);

rectMode(CORNERS);

rect(-halfWidth + 5, halfHeight, -halfWidth + 8, halfHeight + 3);

rect(halfWidth - 8, halfHeight, halfWidth - 5, halfHeight + 3);

popMatrix();

}

Don’t need arguments because we use the fields

But we could define additional arguments if we wanted to

IAT 355

calling methods on objects
Calling methods on objects
  • You call methods on instances
  • Think of the method as something your asking the object to do
  • For example, we can now ask the rockets to draw themselves

r1.draw();

  • In general, to call a method, take the name of the variable holding the object + “.” + the method name

myObjectInstance.myMethod();

IAT 355

what else do we want to do to the rocket
What else do we want to do to the Rocket?
  • We may want to change the rotation

rotateClockwise();

rotateCounterclockwise();

  • We may want to give the rocket a boost

fireThrusters();

IAT 355

review
Review
  • Graphics:

triangle() draw a triangle

pushMatrix() copy the top of the matrix stack

translate() change XYZ location

rotate() rotate about origin

… draw in translated & rotated coordinates

popMatrix() recover the previous matrix

IAT 355

review1
Review
  • Object Oriented Programming
    • Class -- a type you define
    • Instance -- one variable of a class
    • Fields -- variables within a class
    • Methods -- functions that act within a class
    • Constructor -- create an instance of a class

IAT 355

review2
Review
  • Graphics/ OO Example
    • Rocket
      • Translated & rotated to its new location
      • Data of location stored within its class
      • Each rocket has its own location
        • And its own data!

IAT 355