[SDL] Scaling Images

Gabriel mystml at adinet.com.uy
Tue Nov 15 10:59:16 PST 2005

El lun, 14-11-2005 a las 11:20 -0800, Bill Kendrick escribió:
> > I'm currently using the SDL GFX library which works
> > fine for the rectangular scaling but can't do the
> > perspective scaling as far as I know. I've also heard
> > SDL_SoftStretch mentioned but haven't found much
> > written about it.
> So in other words you want to take something like this:
>   +--+
>   |  |
>   +--+
> and turn it into:
>   |\
>   | \
>   | /
>   |/
> In a sense, it's simply slicing the rectangle into long, vertical slices,
> and scaling each one differently.  In the example above, the leftmost 'slice'
> (be it one pixel wide, or more... up to you) is kept at 100% height.
> The middle slice is at 50%.  The rightmost slice diminishes to nothing. :)

This works, but the effect is NOT perspective. The middle slice is half
the size of the original slice but you need to apply a nonlinear
scaling, because distance (Z) is not linear respect to screen x (x') and
screen y (y'). In other words, a 1-pixel increment at the left part of
the polygon doesn't mean the same Z increment that a 1-pixel increment
at the right side. This is essentially the problem which "perspective
correct texture mapping" solves, which involves interpolating u/z, v/z
and 1/z which are linear in x' and y', unlike z (I'll clarify this when
I get to texture mapping in my blog, see signature)

Since in this case he doesn't have z values (I believe), the correct way
to simulate a perspective mapping knowing only the starting and ending
shapes is to calculate a planar homography between the two shapes.


Gabriel Gambetta
Mystery Studio - http://www.mysterystudio.com
Gabriel on Graphics - http://gabrielongraphics.blogspot.com

More information about the SDL mailing list