Difference between revisions of "Other Problems"

From Hawk Wiki
Jump to: navigation, search
(Local Translation to World Translation)
(Local Translation to World Translation)
Line 32: Line 32:
 
All Matrixes are 4x4
 
All Matrixes are 4x4
 
===Local Translation to World Translation===
 
===Local Translation to World Translation===
WorldVec = LocalVec * ParentWorldMat
+
WorldVec = LocalVec * ParentWorldMat<br>
In ParentWorldMat we will only use the rotation info.
+

Revision as of 18:20, 19 February 2013

Compile glui in windows

download:
http://glui.sourceforge.net/#download
Go to msvc folder and build. A problem you may met:

"There is an incompatibility between glut.h and Visual Studio .NET. that results in compile errors: error C2381: 'exit' : redefinition; __declspec(noreturn) differs error C3861: 'exit': identifier not found, even with argument-dependent lookup

To fix the error, right click on the project name in the Solution Explorer tab and select Properties -> C/C++ -> Preprocessor -> Preprocessor definitions and append GLUT_BUILDING_LIB to the existing definitions, seperated by semicolons. "

Calculate 3D projection 在三维空间中,点到平面的投影

空间点Po(X,Y,Z),以及空间平面(Pp, Np) 其中Pp是平面上任意一点,Np是平面的单位法向量,那么 Po在平面(Pp,Np)上的投影点坐标P = Po - Np * ((Po-Pp)*Np) 理由就是Po到平面的距离就是D=((Po-Pp)*Np),把Po沿着法向量的反方向移动D就可以了

MatLab Code

Po=[5.116,3.769,0.851];
Pa=[3.351,1.419,-1.669];
Pb=[-1.249,2.196,0.851];
Pc=[2.646,0.2,4.054];
Np = cross((Pa-Pb),(Pc-Pb));
Np = Np / norm(Np);
P = Po - Np * ((Po-Pb) * Np');
//P =
//
//    4.1833    0.7237    0.0875

3D Transformation matrix math

Local mat to world Mat

WorldMat = LocalMat * ParentWorldMat
All Matrixes are 4x4

Local Translation to World Translation

WorldVec = LocalVec * ParentWorldMat