Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

orthoOffCenter #5

Open
RobDangerous opened this issue Feb 10, 2012 · 4 comments
Open

orthoOffCenter #5

RobDangerous opened this issue Feb 10, 2012 · 4 comments

Comments

@RobDangerous
Copy link

The orthoOffCenter matrices are either more clever than I can grasp or they are a little broken. They multiply y with zNear but not x - it should be either both or none. Also, they apply the x/y-translations in the addend which is multiplied with z, but for that to work correctly they should set w to z to cancel out the multplication with z.

Changing those, the orthoOffCenterLH matrix looks like this:

2.0_zNear/(right-left), 0.0, 0.0, 0.0,
0.0, 2.0_zNear/(top-bottom), 0.0, 0.0,
-1.0-2.0_left/(right-left), 1.0+2.0_top/(bottom-top), 1.0/(zFar-zNear), 1.0,
0.0, 0.0, zNear/(zNear-zFar), 0.0

@RobDangerous
Copy link
Author

The matrix I use now (which I think makes more sense, but is very different from the original):

tx = -(right + left) / (right - left);
ty = -(top + bottom) / (top - bottom);
tz = -zNear / (zFar - zNear);

2.0 / (right - left), 0.0, 0.0, 0.0
0.0, 2.0 / (top - bottom), 0.0, 0.0
0.0, 0.0, 1.0 / (zFar - zNear), 0.0
tx, ty, tz, 1.0

@nshen
Copy link

nshen commented Oct 14, 2014

public function orthoOffCenterLH(left:Number,right:Number, bottom:Number, top:Number, zNear:Number, zFar:Number):void {
            this.copyRawDataFrom(Vector.<Number>([
                    2.0/(right-left), 0.0, 0.0, 0.0,
                    0.0, 2.0*/(top-bottom), 0.0, 0.0,
                    0.0, 0.0, 1.0/(zFar-zNear), 0.0,
                    (left+right)/(left-right), (bottom+top)/(bottom-top), zNear/(zNear-zFar), 1.0
        ]));
    }

@nshen
Copy link

nshen commented Oct 19, 2014

right hand also have some problem. I think It should be like this.

public function orthoOffCenterRH(left:Number,  right:Number,bottom:Number,top:Number,zNear:Number, zFar:Number):void {
            this.copyRawDataFrom(Vector.<Number>([
                2.0/(right-left), 0.0, 0.0, 0.0,
                0.0, 2.0/(top-bottom), 0.0, 0.0,
                0.0, 0.0, 1.0/(zNear-zFar), 0.0,
                (left+right)/(left-right), (bottom+top)/(bottom-top), zNear/(zNear-zFar), 1.0
            ]));
        }

@nshen
Copy link

nshen commented Oct 19, 2014

The row 3 and col 3 of orthoRH matrix should be 1.0/(zNear-zFar)

public function orthoRH(width:Number,height:Number,zNear:Number,zFar:Number):void {
       this.copyRawDataFrom(Vector.<Number>([
        2.0/width, 0.0, 0.0, 0.0,
        0.0, 2.0/height, 0.0, 0.0,
        0.0, 0.0, 1.0/(zNear-zFar), 0.0,
        0.0, 0.0, zNear/(zNear-zFar), 1.0
       ]));
      }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants