Trying to implement a projection matrix but doesn't seem to work

71 Views Asked by At

So I'm trying to make 3d engine and I'm getting pretty close to making it work but, the project formula I'm using which looks like this: ( axis = axis / (z / 10 * tan(fov * 0.0175) + 0) * 40; isn't cutting it.

I tried to implement a projection matrix in hopes of making the projection look right, but it does not work as intended, I've printed the screen x and y values of a point of a triangle I'm trying to render but it seems to be just of my screen. Here is the projection matrix code.

Vector2f proj()
{

    float nx = x;
    float ny = y;

    float nz = z;
    float nw = 0;

    float pmat[4][4] = {type here

    { (1 / tan(45*180/3.1415)), 0, 0, 0 },
    {0, 1 / tan(45*180/3.1415),  0, 0},
    {0, zfar / (zfar - znear), (-zfar * znear) / (zfar - znear) , 0},
    {0, 0, 1, 0}
    };

    nx = x * pmat[0][0] + y * pmat[1][0] + z * pmat[2][0] + pmat[3][0];
    ny = x * pmat[0][1] + y * pmat[1][1] + z * pmat[2][1] + pmat[3][1];
    nz = x * pmat[0][2] + y * pmat[1][2] + z * pmat[2][2] + pmat[3][2];
    nw = x * pmat[0][3] + y * pmat[1][3] + z * pmat[2][3] + pmat[3][2];

    nx /= nw; ny /= nw; nz /= nw;


    //nx = x / (z / 10 * tan(fov * 0.0175) + 0) * 40;
    //ny = y / (z / 10 * tan(fov * 0.0175) + 0) * 40;
    //float div = (z / 10 * tan(fov * 0.0175) + 0.5);


    return Vector2f(nx, ny);
}
0

There are 0 best solutions below