Query 2.1. World coordinates are represented in what number system? Screen coordinates are normally represented in what number system? What are Normalized Device Coordinates, and what number system is used for them? What are object coordinates?
ANSWER: World coordinates are in real numbers. Screen coordinates are in integers. Normalized Device Coordinates use 0.0 to 1.0 to represent the width of the screen, and a proportionate amount of range for the height (based on the aspect ratio.) Object coordinates refer to measurements made as though the object were at the world origin, oriented in some standard fashion (heads up, no twist, so to speak.)
Query 2.2. Review dot and cross product of vectors. if V1=(1,0,0) and V2=(0,1,0) computer V3=V1 x V2. Observe the orientation of V3 with respect to V1 and V2 in 3d space. Compute V1 . V3. (that's V1 dot V3). What can you say about the graphical interpretation of the dot product?
Query 2.3. What's the minimum amount of information required to specify a plane? Describe at least two different ways of specifying a plane, and provide procedures for converting between them.
ANSWER: Three reals specify a plane: the x, y and z intercepts. An alternative way of specifying a plane would be to provide its normal vector (2 degrees of freedom) and one of the intercepts (x,y, or z.) But if the plane is parallel to an axis it won't uniquely intercept that axis. Doesn't this require FOUR dof - one to tell you which axial intercept to use?
No, because the normal vector would have a zero term for those axes which have no intercept. So a simple rule would be that the third DOF corresponds to the first (x,y or z) nonzero coordinate in the normal vector. If none are zero, then it's the x intercept.
A plane with unit normal N consists of points P such that N.P + d=0, where d is the (negative of the) minimum distance from the plane to the origin. Consider special case where d=0: then N.P = 0, which is only true for P=(0,0,0). Also consider d=-3 and N=(1,0,0). Then point (3,0,0) or in fact (3,y,z) for any y,z satisfies the equation.
If N=(.707, .707,0) by which I mean of course .707 = about TAN(pi/4) or 45 degrees, let d=-2, then we see the equation checking out for control points such as (2 sqrt 2, 0, 0), and (sqrt 2, sqrt 2, 0).
So: Given normal and d, to get the intercepts, just set x & y to 0, solve for z. Etc twice more.
Given intercepts, to find terms of Normal we set (y,z) to 0, then Nx = d/xint; Ny = d/yint; Nz = d/zint. Also
Nx**2 + Ny**2 + Nz**2 = 1, from which we see that d**2(1/xint**2 + 1/yint**2 + 1/zint**2) = 1. Solve for d, plug into the above and you get a nice unit-length N.
Query 2.3. Let a plane be defined by three points P1=(x1,y1,z1), P2, P3. Get its equation.
ANSWER: We can get the normal by crossing P1P2 with P2P3. Then unitize it. Now how do we get the distance to the origin? Pick any point in the surface, such as P1. What you want is its PROJECTION onto the unit normal. That's just the dot product P1.N. So, the equation of the plane is N.P - P.P1=0, or N.(P-P1)=0.
This latter equation for the plane has an interesting interpretation too, because it says that the plane consists of all points P for which lines from P1 to P are perpendicular to the normal.
Query 2.4. Quickly review homogenous coordinates. We can do that by working through the Diagnostic Quiz.
NOTE: The text uses very sloppy terminology, such as on page 32: "there are three common operations (or translations) that can be used to move objects: translate, scale, and rotate." Obviously he should have said "transformations."
Query 2.5. Quickly review flat, Gouraud and Phong shading (perhaps in the textbook you used for your graphics course.)
Now assume that a floating point operation takes F nanoseconds, and an integer operation takes I nanoseconds on your computer (we will just let adding and multiplying take the same time, for simplicity.). A triangular polygon occupies approximately 1000 pixels on the screen. Give me a rough (but reasonable) estimate of the relative costs of Gouraud versus Phong shading of this polygon, in terms of F and I.
PART 2: The Projects
It is our intention in this course to act as much as possible as though you were professionals engaged in a real design project. The main difference will be that we must scope the project so as to be doable in 14 weeks. I am assuming that you will spend about 6 hours a week outside of class on this project, so we have 84 hours to work with (plus your group's time in three in-class working sessions.) Why 6 hours? If you're taking 3 classes, that's 18 hours a week on the average. I'm trying to set it up so that you do much of this work early in the semester. Get busy!
The three phases we will actually carry out are
I'm gonna be the boss. You will in some cases, be working with external people who will play the role of customer, but I'm the one who can fire you or promote you. And it's in MY interest that you don't promise anything we can't do. But if we promise nothing, we get no money (in our pretend-business.) So, during the first phase, it is our job to learn enough about the problem that we can safely promise only things that we can accomplish.
Phase 1: Discovery and Specification.
In this phase, we will gather as much information as possible, about the systems we're working with. Software tools, manuals, and working code examples. We will also seek articles in the library (mainly) and on the web (hopefully) about similar applications. NOTE: Don't over-rely on the Web! I want to see evidence that you have used at least one Index in the library. Ask a librarian for help if you don't know how to use the CD based index system in the Library.
Presentation 1. Your presentation to the class will last between 30 and 60 minutes, depending on how many project teams we establish. It will consist of a formal PowerPoint presentation that covers the following topics:
1. A general statement of the problem we wish to solve
2. Background: who invented the key technologies. What are they? Who
has attacked similar problems, and how?
3. Data formats. Detailed explanation of file structures needed by,
or produced by, the components.
4. Requirements: What, exactly, will our product do? <This is the
PROMISE I warned you about.>
5. Two or more possible approaches to the key problem, and an exploration
plan.
6. Resources required: What tools do we expect to use? Where can they
be gotten?
When we get to Presentation 3, you will see that you'll be preparing a paper as though it were going to be submitted to a conference - and perhaps it will be. So, you will write short pieces all along. The entire paper will be at most 8 pages long, so perhaps 3 pages will result from Presentation 1.
Item 1: Statement of the problem. This would be about a paragraph, in the paper, and maybe 2 slides, in the PowerPoint.
Item 2: Survey of the state of the art. This should take about 10 minutes when you're presenting it and yield about 1 page of the resulting paper.
Item 3: Data formats. This is the most important technical part of Presentation 1. If you're working with Ray Dream Studio (for instance), we want to know the real nitty-gritty of the file formats involved. After all, much of what you do may involve transforming this data to some other form.
You should think of item 4 as an external "black box" description. This is what the customer would get. Assume the customer doesn't know or care how the insides of software work. They just want to know what boxes (products) they will have to own and hook together, what the overall inputs and outputs will be.
Item 5 is a declaration of your strategy for getting to the Design Report, which is your next deliverable. It probably involves prototyping, getting "hello world" working in the various links along the hardware and software path from input to output. But it shouldn't be a promise to build the system in a particular way, because you don't know enough to do that yet.
Grading: Each of the first five sections above will be worth 20 points apiece, for a total score of 100. Each student team will grade the other teams' presentations using a worksheet I'll provide, with specific written feedback. I'll also grade the presentations. Your actual grade on Presentation 1 will consist 80% of how well you did YOUR presentation, and 20% of how well you critiqued OTHER TEAM's presentations. (The scores you give the other folks won't affect their grade; it's just feedback to them about how well you understood and agreed with what they were saying.)
"How well you critiqued others" doesn't necessarily mean that you have to agree with my critique. I am more interested in how well-thought out your review is, and how informative it is for the speakers.
Phase 2: Design
During this phase, you will actually prototype parts of your solution. But hold in mind the idea that you don't really know enough to commit to a particular design, until you have played with the pieces. When you report a design to the group, it's not just a "maybe we'll do this". It's a real road-map for what you're in the process of building. As such, it needs to name the real names of the modules.
Presentation 2 will again be PowerPoint. It will consist of these components:
1. User interface and user guide. Present a "show and tell" as if the
project were finished.
2. Block diagram. What are the pieces, who gets what output from whom?
3. Algorithms in each module. What's your complexity analysis? How
fast will this sucker be?
4. Gantt Chart, representing the schedules for each piece. Who is responsible
for each? What's the fallback plan?
The first step is very important. This is often done with "storyboards" which are just pictures showing what happens. This would be the last step in the process a non-technical customer would understand, and with which she could interact. Then you tell us how you are going to do it.
The important thing here is that items 2, 3, and 4 are being presented on the basis of half a semester's worth of learning - about your team, about the tools, and about your prototyping efforts. There should be no major surprises from here on down. THIS IS YOUR LAST CHANCE TO UNDER-PROMISE, because you have to build what you specify here.
When you build a Gantt chart, "front load" it. That is, put in milestones two weeks into a three week work period which essentially commit you to finishing the task. Then you have the fall-back week if things go wrong. UNDER-PROMISE. Put slack into your plans, and hope to use that slack to get ahead of the NEXT task (or go to the beach, or have flu...)
Review and grading will be as in Presentation 1.
The design portion should probably not be finally written up for the paper, at this point - because you may have to change parts of it. But it's a good idea to write as much as you can, now - the end of the semester should not have a big writing task lurking there.
Phase 3: Execution
Build it. Test it. Write up the conference paper. Your show-and-tell, combined with the deliverable products themselves and the paper, will be graded as usual.
This project counts for 65% of the course grade, so I expect you to be aggressive and persistent about getting much of the work done as early as possible!
JMM