Corners of a sprite, without matrices

Blitz3D Forums/Blitz3D Programming/Corners of a sprite, without matrices

JoshK(Posted 2003) [#1]
Let's say we have a quad we want to face the camera. Given the position of the camera, and the position of the quad, we can calculate a vector we want to align the quad to.

The quad is defined as four vertices at (-1,-1,0),(-1,1,0),(1,1,0), and (1,-1,0). Now, what is the fastest way to calculate the new coordinates, hopefully without using matrices?


sswift(Posted 2003) [#2]
Take your normal which points in the direction your object faces. We'll call this NormalX.

This is the hard part:

Calculate normals which are 90 degrees to this normal. Call these NoralY and NormalZ.

This is hard because you may have a normal which points towards the camera, but you have no defined up/down left/right. You'll have to decide how you're going to determine those directions for yourself.

Once you've done that, all you need do is this:


Multiply NormalX by the new point's X coordinate.
Multiply NormalY by the new point's Y coordinate.
Multiply NormalZ by the new point's Z coordinate.

Add the three normals.

The result is the location of your transformed point.


You can imagine this like moving a knight on a rotated chessboard. First you move it along the transformed X axis, then along the transformed Y axis, and finally you move it along the transformed Z axis because I just took it with that pawn you failed to notice.