#### Archived

This topic is now archived and is closed to further replies.

# 3d perspective math

This topic is 5978 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

I''m trying to do a new AVS plugin for Winamp. I have a galaxy rendered, but I want to to be viewed in perspective. I can''t get the math just right... incase you don''t know how it works, i can create a list of operations to be performed for each pixel. i am working on the pixels'' x and y variables. What I am doing now is this: p=0.5; x=x*(p-y); y=y/p It doesn''t quite work... anyone have ideas on how i could do this? I have most common and some uncommon math functions at my disposal. (http://www.ironfroggy.com/) (http://www.ironfroggy.com/pinch)

##### Share on other sites
hi ironfroggy,

I have never rendered a galaxy, but would like to know how. Infact I tried even looking in astrophysics books and came up with nothing

But I have some experiences with my own 3d routs. I just do some very simple stuff. I hope this is what you mean:

I asume a 3d point has (x,y,z) coords.. cam_length is just some trick to avoid div by 0. (X,Y) is the 2d rendered pixel.

X=x/(z+cam_length);
Y=y/(z+cam_length);

This works for me.

If you can give me some hints on howto generate sucha nice galaxy shape you have my eternal grattitude.

Pieter (earx)

##### Share on other sites
Take a look at how glFrustum() works (either in the MSDN help files or the OpenGL Blue Book). It shows you how to generate the projection matrix based on the near and far clipping planes and the left, right, top, and bottom coordinates of the near clipping plane. Then, from glViewport(), you take the results of multiplying by that matrix and multiply the x-coordinate by the width of the viewport and add half the viewport width, and multiply the y-coordinate by the height of the viewport and then add half the viewport height. That should work.

##### Share on other sites
unfortunitly, what i have to work with is far more limited than this. there is NO 3d support at all, and its too slow to do real 3d. What I want to do is simply to stretch one image in such a way that it appears viewed at a 3d perspective. I''ve gotten close, using this:

p=.5;
x=(x/(p+y));
y=(y/.2);

where p is my perspective ratio im using (made up value), x and y are the locations of the pixel and what im chaging them too(range -1 to 1).

the only major problem, is that even tho the image seems almost to perspective, its just shrunk on the y axis. i need all pixels to have y values closer to 0, but the lower the original values are, the closer to 0 they should be. understand?

(http://www.ironfroggy.com/)
(http://www.ironfroggy.com/pinch)

##### Share on other sites
if you just want scaling:

p=1/(z+l)
x=x*p
y=y*p

so: 1 add, 1 div and 2 muls per point. not bad. ofcos you can make multiply tables for limited ranges..

What kind of machine are you working on?

1. 1
2. 2
3. 3
4. 4
Rutin
17
5. 5

• 12
• 9
• 12
• 37
• 12
• ### Forum Statistics

• Total Topics
631419
• Total Posts
2999986
×

## Important Information

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!