最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

自學計算機圖形學10: 北太天元幫助我理解pitch-yaw up 確定的矩陣

2023-05-22 08:11 作者:盧朓  | 我要投稿

%對于開始給定的up方向和 direction方向

% 計算出right 方向 : camera_right = direction x up 再normalize

% 然后根據camera_right方向和direction方向計算出camera_up:

% camera_up = right x direction?再normalize

% 最后得到的camera坐標系的三個軸是

%?(right, direction, up)

% 注意: https://learnopengl.com/Getting-started/Camera 這篇文章中的

% direction 不是camera 看向的方向,而是相反的。

% 我們這里和上面的帖子不同,direction 還保持camera 看向的方向

% 也就是 (right, direction, camera_up) 是一個右手系

% https://learnopengl.com/Getting-started/Camera 這篇文章中的

% 的lookat 的矩陣也是怪怪的,可能也會導致模仿者出錯。

function ca_axes = camera_axes(up, direction)

???up = up(:);?% 確保得到的up是一個列向量

???direction = direction(:);?%確保得到的direction 是一個列向量

???%確保輸入的direction是一個單位向量

???norm_d = norm(direction, 2);

???if(norm_d < eps)

??????error('輸入的direction向量接近于0');

???end

???direction = direction /norm_d;


???camera_right =?cross( direction, up ); %?drection 叉乘 up

???% 這個地方要檢查一下 是不是direction 和 up 貢獻

???norm_r = norm(camera_right,2) ; %計算camera_right的2范數

???if(norm_r < eps)

??????error("up 和 direction 共線")

???end

???camera_right = camera_right / norm_r; %把camera_right單位化


???camera_up = cross(camera_right, direction); %?right 叉乘 direction

???camera_up = camera_up / norm(camera_up, 2);


???ca_axes = [ camera_right, direction, camera_up];?

end

%繞著方向 n 的旋轉變換, 逆時針旋轉theta角度

function Mat = glRotate(theta, n)

???n = n(:);

???n = n / norm(n, 2);

???n1 = n(1); n2 = n(2); n3 = n(3);

???theta = deg2rad(theta);?% 角度轉成弧度

???c = cos(theta);

???s = sin(theta);

???Mat = [ ...

??????c + n1^2*(1-c),??????n1*n2*(1-c) - n3*s,?n1*n3*(1-c) + n2*s ;

??????n1*n2*(1-c) + n3*s,??c + n2^2*(1-c),?????n2*n3*(1-c) - n1*s ;

??????n1*n3*(1-c) - n2*s,??n2*n3*(1-c) + n1*s,?c + n3^2*(1-c);

??????];

end


%???^ z 軸

%???|

%???|?????. y 軸

%???|???.

%???|?.?

%???|_________> x 軸

% 開始的時候人眼看的方向是 y 軸正向, 然后 pitch 和 yaw

%根據 pitch 和 yaw 確定 camer 的方向

% 開始的camera的方向是(0,1,0), 首先繞x軸正向逆時針方向旋轉pitch角度

% 然后再繞z軸正向逆時針方向旋轉 yaw 角度

% 最后得到的camera的方向

% 例如 pitch_yaw(-90,0) 得到的方向是 (0,0,-1);

% 不過,最后的向量都寫成了列向量

function direction = pitch_yaw( pitch, yaw)

???direction = [

?????????-cos( deg2rad(pitch) )*sin( deg2rad(yaw) );

?????????cos( deg2rad(pitch) )*cos( deg2rad(yaw) );

?????????sin( deg2rad(pitch) );

??????];

end




自學計算機圖形學10: 北太天元幫助我理解pitch-yaw up 確定的矩陣的評論 (共 條)

分享到微博請遵守國家法律
英吉沙县| 镇原县| 山阳县| 化隆| 宽城| 玛纳斯县| 尚义县| 辉南县| 博野县| 荃湾区| 临沭县| 醴陵市| 临城县| 太康县| 夏邑县| 苗栗县| 理塘县| 琼海市| 盐津县| 金秀| 红桥区| 九龙城区| 科技| 克什克腾旗| 晋城| 高青县| 鹿泉市| 云安县| 酉阳| 阜南县| 航空| 平度市| 开原市| 清河县| 丰台区| 六枝特区| 江源县| 正宁县| 抚州市| 瓮安县| 黄龙县|