Computer Graphics: Rocket, Java: Class

Slides:



Advertisements
Similar presentations
Transformations on the Coordinate Plane
Advertisements

Objects. 2 Object Oriented Programming (OOP) OOP is a different way to view programming Models the real world A different view than Structured programming.
This terms course Last term we both worked on learning 2 things –Processing –The concepts of graphics etc. This term will focus more on the basic concepts.
A Quick Introduction to Processing
IAT 334 Lab 2 Computer Graphics: Rocket, PImage. June 4, 2010IAT 3342 Outline  Programming concepts –Programming Computer Graphics –Transformations –Methods.
Translate, Rotate, Matrix Pages Function Function Definition Calling a function Parameters Return type and return statement.
Goal: to rotate a figure around a central point
Translation and Rotation in 2D and 3D David Meredith Aalborg University.
IAT 334 Java using Processing ______________________________________________________________________________________ SCHOOL OF INTERACTIVE ARTS + TECHNOLOGY.
Sep 26, Fall 2006IAT 800 Lecture 6 Methods and Classes.
______________________________________________________________________________________ SCHOOL OF INTERACTIVE ARTS + TECHNOLOGY [SIAT] |
, Fall 2006IAT 800 Lab 2: Polygons, Transformations, and Arrays.
IAT 800 Lecture 4. Sept 18, Fall 2006IAT 8002 Outline  Programming concepts –Methods –Classes  Talk about project 1  Reading: Read Chapters 1-4 of.
IAT 355 Lecture 4 Computer Graphics: Rocket. May 9, 2014IAT 3552 Outline  Programming concepts –Programming Computer Graphics –Transformations –Methods.
Classes / Objects An introduction to object-oriented programming.
______________________________________________________________________________________ SCHOOL OF INTERACTIVE ARTS + TECHNOLOGY [SIAT] |
COSC 1P02 Introduction to Computer Science 3.1 Cosc 1P02 Week 3 Lecture slides Birthdays are good for you. Statistics show that the people who have the.
A way to pull together related data A Shape Class would contain the following data: x, y, height, width Then associate methods with that data A Shape.
How to Create a Videogame By: Connor McCann. Java Java is one of many programming languages Java is used to run web browsers and most PC video games I.
Graphics Concepts CS 2302, Fall /3/20142 Drawing Paths.
Transforming Geometry Groundhog Day. Drawing Quads In a 300 by 200 window, draw two quads of different colors. Don’t show the grey grid.
Programming for Artists ART 315 Dr. J. R. Parker Art/Digital Media Lab Lec 10 Fall 2010.
Functions. Functions are named blocks of code. Functions allow complex programs to be broken down into smaller, simpler tasks. Functions allow commonly.
 Students will be able… › Identify reflections, rotations, and translations. › Graph transformations in the coordinate plane.
TRANSLATIONS. THE BASICS Vocabulary and concepts.
Geometric transformations!
Computation as an Expressive Medium Lab 2: Polygons, Transformations, and Arrays Evan.
Lesson 3: Arrays and Loops. Arrays Arrays are like collections of variables Picture mailboxes all lined up in a row, or storage holes in a shelf – You.
Computer Science I Classes and objects Classwork/Homework: Examine and modify my examples. Make your own.
______________________________________________________________________________________ SCHOOL OF INTERACTIVE ARTS + TECHNOLOGY [SIAT] |
Computation as an Expressive Medium Lab 2: Polygons, Transformations, and Arrays (Oh My) Micah.
IAT 265 Images in Processing PImage. Jun 27, 2014IAT 2652 Outline  Programming concepts –Classes –PImage –PFont.
Computer Science I Text input. Transformations. Yet another jigsaw. Classwork/Homework: Create new application making use of transformations.
IAT 800 Lecture 8 PImage and PFont. Oct 13, Fall 2009IAT 8002 Outline  Programming concepts –PImage –PFont.
In the last several lessons, you have described translations using coordinates. You have also developed strategies for determining where an object started.
Computer Programming II Lecture 5. Introduction to Object Oriented Programming (OOP) - There are two common programming methods : procedural programming.
IAT 265 Lecture 7 Objects and ArrayList. May 19, 2016IAT 2652 Outline  Programming concepts –Super and this –Java SDK classes Lists Reading the Java.
Transformations: Translations & Reflections
Topic: Classes and Objects
Some of Chap 17.
Building Java Programs
Linked Lists in Action Chapter 5 introduces the often-used data public classure of linked lists. This presentation shows how to implement the most common.
IAT 265 PImage and PFont.
Classwork: Examine and enhance falling drop(s) or make your own.
Transformations.
Chapter 14, Translate & Rotate
Polygons, Transformations, and Arrays
LCC 6310 Computation as an Expressive Medium
LCC 6310 Computation as an Expressive Medium
CSC240 Computer Science III
Java LESSON 7 Objects, Part 1
CS2102: Lecture on Abstract Classes and Inheritance
Lesson 2: Building Blocks of Programming
Chapter 8 Objects.
Workshop for Programming And Systems Management Teachers
IAT 265 Lecture 2: Java Loops, Arrays Processing setup, draw, mouse Shapes Transformations, Push/Pop.
Translate, Rotate, Matrix
Congruence Transformations
Programming with inheritance Based on slides by Alyssa Harding
LCC 6310 Computation as an Expressive Medium
Lecture 6 Methods and Classes
Announcements How to save your work? Quiz solution 5/5/2019
slides created by Ethan Apter
Computation as an Expressive Medium
Trigonometry & Random March 2, 2010.
IAT 800 Foundations of Computational Art and Design
Building Java Programs
Building Java Programs
Transformations Project
Lecture 6 Methods, Classes, Inheritance
Presentation transcript:

Computer Graphics: Rocket, Java: Class IAT 265 Computer Graphics: Rocket, Java: Class

Outline Programming concepts Methods Classes Programming Computer Graphics Transformations Methods Classes May 17, 2016 IAT 265

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); May 17, 2016 IAT 265

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 May 17, 2016 IAT 265

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) May 17, 2016 IAT 265

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) May 17, 2016 IAT 265

DrawRocket() with arguments void drawRocket(int x, int y, float rot) { final int halfHeight = 10; final int halfWidth = 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 May 17, 2016 IAT 265

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) May 17, 2016 IAT 265

Add translation and rotation void drawRocket(int x, int y, float rot) { final int halfHeight = 10; final int halfWidth = 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 May 17, 2016 IAT 265

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) May 17, 2016 IAT 265

Using pushMatrix() and popMatrix() void drawRocket(int x, int y, float rot) { final int halfHeight = 10; final int halfWidth = 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(); } May 17, 2016 IAT 265

Classes May 17, 2016 IAT 265

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 May 17, 2016 IAT 265

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 May 17, 2016 IAT 265

Defining the rocket class class Rocket { // fields float rotation = 0; float xPos; float yPos; final int halfWidth = 10; final int halfHeight= 10; // constructor Rocket( int initialX, int initialY, float initialRot ) xPos = initialX; yPos = initialY; rotation = initialRot; } May 17, 2016 IAT 265

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!) May 17, 2016 IAT 265

Adding a draw routine to our Rocket No Arguments! void drawRCT() { 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 May 17, 2016 IAT 265

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.drawRCT(); In general, to call a method, take the name of the variable holding the object + “.” + the method name myObject.myMethod(); May 17, 2016 IAT 265

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(); May 17, 2016 IAT 265

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 image( img, x, y ) May 17, 2016 IAT 265

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 May 17, 2016 IAT 265

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! May 17, 2016 IAT 265