View more

View more

View more

### Image of the Day Submit

IOTD | Top Screenshots

### The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

2 replies to this topic

### #1sepoto  Members

Posted 21 January 2014 - 04:53 PM

I have studied the 2D drawing tutorial from rastertek.com and if I understand correctly an orthographic projection can be set up so that primitives like vertexes lines and triangles can be drawn in screen co-ordinates.

I have an interest right now in starting on a CAD application. Before I was into programming I was a drafter and there are certain aspects of a CAD application that I am looking to incorporate in my application. CAD applications have the concept of a top view and top view has these properties.

- If a one unit square is drawn and placed on the plane Z=0 and another unit square is drawn and placed on the plane Z=-100 in top view the squares still appear to be the same size even though they are 100 units apart on the Z-axis.

Is the orthographic projection still the way to accomplish this goal with DirectX? It seems at this point that if an orthographic projection is used to create a top view effect like the one I describe then there is going to have to be a translation from world co-ordinates to screen co-ordinates. For example in a CAD application when the user draws a unit square he is drawing in world co-ordinates. So if I were to use an orthographic projection and call the center of the screen the equivalent to world co-ordinates (0,0,0) then the co-ordinates of the unit square drawn in world co-ordinates is going to have to be translated into screen co-ordinates. That translation is going to depend on the users zoom level in top view as well as the pan location.

Is the orthographic projection the right technique for this type of application?

Thanks...

### #2Mona2000  Members

Posted 21 January 2014 - 05:28 PM

Yes.

### #3Buckeye  GDNet+

Posted 23 January 2014 - 07:40 AM

As Mona2000 mentioned (rather succinctly), the answer is yes - you can (and probably should) use orthographic projection.

With regard to some of your comments, it seems you're concerned with converting coordinates. You needn't pay much attention to "converting" world coordinates to the screen. That can be taken care of by the projection and view matrices. I.e., drawing objects produces world coordinates; the projection and view matrices will do the conversion to screen coordinates for display.

A little more difficult part of such an application is unprojecting screen coordinates. However, in DX9 anyway, there are functions to do that. If the user uses a mouse to draw a unit square in ortho, your input will be in screen coordinates (where the mouse is). You'll convert those 2 mouse coordinates to 2 world coordinates (say, mx-to-worldx and my-to-worldy) and have to provide a method for the user to set the third coordinate - e.g., switching from front- to side-view and have the user set the z coord.

The Blender modeling program, for instance, lets you set a 3D cursor. In ortho mode, say, front-view looking down the z-axis, clicking the screen sets the cursor to some x-y value. You can then switch to side view, say looking down the -X axis, and click to set the world z-value of the cursor. That 3D cursor defines default X-, Y- and Z-planes. Back in front-view, you can draw a unit cube, specifying the x-y coordinates and it will be created in the default z-plane.

Edited by Buckeye, 23 January 2014 - 08:01 AM.

Please don't PM me with questions. Post them in the forums for everyone's benefit, and I can embarrass myself publicly.

You don't forget how to play when you grow old; you grow old when you forget how to play.

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.