CS U540 Computer Graphics
-
Upload
quinlan-barton -
Category
Documents
-
view
24 -
download
3
description
Transcript of CS U540 Computer Graphics
April 20, 2023 1©College of Computer and Information Science, Northeastern University
CS U540Computer Graphics
Prof. Harriet Fell
Spring 2009
Lecture 4 - January 12, 2009
April 20, 2023 2©College of Computer and Information Science, Northeastern University
Color
www.thestagecrew.com
April 20, 2023 3©College of Computer and Information Science, Northeastern University
Red, Green, and Blue Light
April 20, 2023 4©College of Computer and Information Science, Northeastern University
Adding R, G, and B Values
http://en.wikipedia.org/wiki/RGB
April 20, 2023 5©College of Computer and Information Science, Northeastern University
From the Hubble
Hubble Site Link
April 20, 2023 6©College of Computer and Information Science, Northeastern University
RGB Color Cube
(1, 1, 1)
(1, 1, 0)
(0, 0, 1)
(0, 1, 1)
(0, 1, 0)
(1, 0, 1)
(1, 0, 0)
April 20, 2023 7©College of Computer and Information Science, Northeastern University
RGB Color Cube The Dark Side
(0, 0, 0)
(1, 1, 0)
(0, 0, 1)
(1, 0, 1)
(1, 0, 0)
(0, 1, 1)
(0, 1, 0)
April 20, 2023 8©College of Computer and Information Science, Northeastern University
Doug Jacobson's RGB Hex Triplet Color Chart
April 20, 2023 9©College of Computer and Information Science, Northeastern University
Making Colors Darker
(1, 0, 0)
(0, 1, 0)
(0, 0, 1)
(0, 1, 1)
(1, 0, 1)
(1, 1, 0)
(0, 0, 0)
(0, 0, 0)
(0, 0, 0)
(0, 0, 0)
(0, 0, 0)
(0, 0, 0)
(.5, 0, 0)
(0, 0, .5)
(0, .5, .5)
(.5, 0, .5)
(.5, .5, 0)
(0, .5, 0)
April 20, 2023 10©College of Computer and Information Science, Northeastern University
Getting Darker, Left to Right
for (int b = 255; b >= 0; b--){c = new Color(b, 0, 0); g.setPaint(c);g.fillRect(800+3*(255-b), 50, 3, 150);c = new Color(0, b, 0); g.setPaint(c);g.fillRect(800+3*(255-b), 200, 3, 150);c = new Color(0, 0, b); g.setPaint(c);g.fillRect(800+3*(255-b), 350, 3, 150);
c = new Color(0, b, b); g.setPaint(c);g.fillRect(800+3*(255-b), 500, 3, 150);c = new Color(b, 0, b); g.setPaint(c);g.fillRect(800+3*(255-b), 650, 3, 150);c = new Color(b, b, 0); g.setPaint(c);g.fillRect(800+3*(255-b), 800, 3, 150);
}
April 20, 2023 11©College of Computer and Information Science, Northeastern University
Gamma Correction
• Generally, the displayed intensity is not linear in the input (0 a 1).
• dispIntensity = (maxIntensity)a
• To find – Find a that gives you .5 intensity
– Solve .5 = a
= ln(.5) ln(a)
April 20, 2023 12©College of Computer and Information Science, Northeastern University
Gamma Correction
• Gammahalf black half red (127, 0, 0)
April 20, 2023 13©College of Computer and Information Science, Northeastern University
Making Pale Colors
(1, 0, 0)
(0, 1, 0)
(0, 0, 1)
(0, 1, 1)
(1, 0, 1)
(1, 1, 0)
(1, 1, 1)
(1, 1, 1)
(1, 1, 1)
(1, 1, 1)
(1, 1, 1)
(1, 1, 1)
(1, .5, .5)
(.5, .5, 1)
(.5, 1, 1)
(1, .5, 1)
(1, 1, .5)
(.5, 1, .5)
April 20, 2023 14©College of Computer and Information Science, Northeastern University
Getting Paler, Left to Rightfor (int w = 0; w < 256; w++){
c = new Color(255, w, w); g.setPaint(c);g.fillRect(3*w, 50, 3, 150);c = new Color(w, 255, w); g.setPaint(c);g.fillRect(3*w, 200, 3, 150);c = new Color(w, w, 255); g.setPaint(c);g.fillRect(3*w, 350, 3, 150);c = new Color(w, 255, 255); g.setPaint(c);g.fillRect(3*w, 500, 3, 150);c = new Color(255,w, 255); g.setPaint(c);g.fillRect(3*w, 650, 3, 150);c = new Color(255, 255, w); g.setPaint(c);g.fillRect(3*w, 800, 3, 150);
}
April 20, 2023 15©College of Computer and Information Science, Northeastern University
Portable Pixmap Format (ppm)
A "magic number" for identifying the file type.• A ppm file's magic number is the two characters "P3".• Whitespace (blanks, TABs, CRs, LFs).
• A width, formatted as ASCII characters in decimal.• Whitespace.
• A height, again in ASCII decimal.• Whitespace.
• The maximum color value again in ASCII decimal.• Whitespace.
• Width * height pixels, each 3 values between 0 and maximum value.– start at top-left corner; proceed in normal English reading order – three values for each pixel for red, green, and blue, resp.– 0 means color is off; maximum value means color is maxxed out– characters from "#" to end-of-line are ignored (comments)– no line should be longer than 70 characters
April 20, 2023 16©College of Computer and Information Science, Northeastern University
ppm Example
P3# feep.ppm4 415 0 0 0 0 0 0 0 0 0 15 0 15 0 0 0 0 15 7 0 0 0 0 0 0 0 0 0 0 0 0 0 15 7 0 0 015 0 15 0 0 0 0 0 0 0 0 0
April 20, 2023 17©College of Computer and Information Science, Northeastern University
private void saveImage() {String outFileName = “my.ppm";File outFile = new File(outFileName);int clrR, clrG, clrB;try {
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(outFile)));out.println("P3");out.print(Integer.toString(xmax-xmin+1)); System.out.println(xmax-xmin+1);out.print(" ");out.println(Integer.toString(ymax-ymin+1)); System.out.println(ymax-ymin+1);out.println("255");for (int y = ymin; y <= ymax; y++){
for (int x = xmin; x <= xmax; x++) {// compute clrR, clrG, clrBout.print(" "); out.print(clrR);out.print(" "); out.print(clrG); out.print(" "); out.println(clrB);
}}out.close();
} catch (IOException e) {System.out.println(e.toString());
}}