Pixel to world coords for asymmetrical ortho projection

Started by
-1 comments, last by pondwater 11 years, 3 months ago

I am modifying some existing code that has a 2D orthographic projection set as:


glOrtho(-0.02, 1.02, -0.02, 0.68, -1, 1);

I have never had an issue with transfering pixel coords (mouse clicks specifically) into world space when the left/right, top/bottom values of the frustum are symmetrical.

I simply convert the pixel values to a normalize -1 to 1 'window coord' centered in the middle of the window and then scale those values by the right/top values given to my frustum.

But for some reason I am getting really confused when converting to this asymmetrical frustum.

This should be simple, but I can't for the life of me figure it out!

EDIT:

I feel silly now, I figured it out:


// normalized window coords centered on bottom left of window
float x = (pixel_x / window_width);
float y = (window_height - pixel_y)/(window_height);

// world coords by scaling and translating
x = x*(frustum_right - frustum_left ) - frustum_left;
y = y*(frustum_top - frustum_bottom) - frustum_bottom;

This topic is closed to new replies.

Advertisement