最近花了一天時間重寫了 op
engl
o pe
ng
l中矩陣變換的部分函式,主要包含五個: gl
load
iden
tity
()g ll
oadi
dent
ity(
)、gl
uloo
kat(
) glu
look
at()
、glscal
ed()
g ls
cale
d(
)、gl
tran
slat
ed()
g lt
rans
late
d(
)、gl
rota
ted(
) glr
otat
ed()
, 重寫後對應的命名是: lo
adid
enti
ty()
l oa
dide
ntit
y(
)、lo
okat
()l oo
kat(
)、sc
aled
()s ca
led(
)、tr
ansl
ated
()t ra
nsla
ted(
)、ro
tate
d() rot
ated
()
, 另外由於是寫在乙個類中,所以還寫了乙個設值乙個取值函式,並且還寫了兩個 de
bug deb
ug
函式。這裡的矩陣變換函式所用到的變換矩陣都是比較簡單的,網上隨便搜一下或者自己推一下就好了,可能稍微難一些的是旋轉矩陣,這個可以去 le
arno
peng
lcn lea
rnop
engl
cn
入門章節中變換部分看看。主要難點是使用 ei
gen eig
en
有些生疏,初次使用,所以寫起來花了一些功夫,另外需要注意的是,在 op
engl
o pe
ng
l中的矩陣變換使用的不是像 c+
+ c++
等語言中的陣列那樣的以列為主行為輔的布局,而是剛好相反,也就是說要利用這些常規的變換矩陣的轉置矩陣進行操作。
一定要注意是轉置矩陣!!!
#ifndef opengl_transformations_h
#define opengl_transformations_h
#include
#include
#include
#include
#include
class
opengltransformations ;
#endif // opengl_transformations_h
#include "opengl_transformations.h"
#include #include opengltransformations::opengltransformations()
opengltransformations::opengltransformations(gldouble *matrix)
opengltransformations::~opengltransformations()
// set matrix_
void opengltransformations::set_matrix(gldouble *matrix)
}// get matrix_ with gldouble[16]
gldouble *opengltransformations::matrix_1x16()
return
matrix;
}// identity
void opengltransformations::loadidentity() else
// }
// }
}// look at
void opengltransformations::lookat(eigen::vector3d position,
eigen::vector3d target,
eigen::vector3d world_up)
void opengltransformations::scaled(eigen::vector3d zoom)
void opengltransformations::translated(eigen::vector3d move)
void opengltransformations::rotated(gldouble angle, eigen::vector3d axis) else
if (axis(1) > 0) else
if (axis(2) > 0)
// update matrix_
eigen::matrix4d &mat = *matrix_;
mat = rotation * mat;
}void opengltransformations::debugoutputtransposematrix4d(eigen::matrix4d mat,
qstring s)
qdebug() << "debug-";
}void opengltransformations::debugoutputvector3d(eigen::vector3d vec,
qstring s)
有關於 ei
gen eig
en
或者 op
engl
o pe
ng
lgoo
glec
++g oo
glec
++
程式設計規範。
opengl中直接繪畫部分
描述點 openggl中需要提供頂點座標,支援2維,三維等 glvertex2x glvertex3x x可以是d表示正數,f表示32位浮點數等 s表示16位整數 opengl中將這個型別定義為glshort i表示32位整數 opengl中將這個型別定義為glint和glsizei f表示32位浮...
字串部分函式的重寫和memcpy memmov
這裡面的字串有些是沒有進行是否為空的判斷,自行參考一下。assert 斷言是預告版內容,比較草率,沒有詳解 這個函式是乙個複製的作用。在實際運用中應該就是需要需要修改某乙個字串,但是又要保留原有資料,這就需要把它複製到另乙個字串裡面。c語言 模擬實現strcpy strcpy的格式是 strcpy ...
偽靜態和URL重寫以及錨部分簡記
草草的記敘了一下,了解的不是很深刻。現在出現了越來越多的 有些我們根據檔案字尾就能知道它的指令碼型別,有些卻是假的或者根本沒有字尾。今天在查一些資料的時候瞥到了url重寫,就順便了解下並做個記錄。因為了解的目的不同,所以我不會去管如何具體的實現。1轉為 1.html或者 1等等之類的url顯示在我們...