c# - Discard scale transform of Camera in Viewport3D -


i have main viewport3d mcamera, controlled trackballdecorator. want create viewport3d cube in represent current camera direction on main viewport.

this code:

matrix3d transformationmatrix = mcamera.transform.value; // ? orientationcamera.transform = new matrixtransform3d(transformationmatrix); 

works well, besides fact don't want orientationcamera apply zoom main 1 (i want rotate).

i can see values m11, m22, m33 of matrix changing when operating on zoom main camera, change when i'm rotating it, , change try apply resulted preview cube transform in unexpected way.

does have idea how discard scaletransform transformation matrix? or maybe there way it?

the first 3 rows (or columns) in pure rotation matrix unit vectors. if apply scale, these vectors aren't of unit-length more. can apply inverse scale rid of scale. assuming scale equal in 3 directions:

var m11 = transformationmatrix.m11; var m12 = transformationmatrix.m12; var m13 = transformationmatrix.m13; var length = math.sqrt(m11 * m11 + m12 * m12 + m13 * m13); var factor = 1 / length; transformationmatrix.scale(new vector3d(factor, factor, factor)); 

Comments

Popular posts from this blog

commonjs - How to write a typescript definition file for a node module that exports a function? -

openid - Okta: Failed to get authorization code through API call -

ios - Change Storyboard View using Seague -