opt_rot.m

来自「Matlab实现光线跟踪算法」· M 代码 · 共 45 行

M
45
字号
function out_v = opt_rot(in_v,rot_v,theta)% OPT_ROT - rotate vector IN_V THEDA radians around ROT_V%   % Calling:% out_v = opt_rot(in_v,rot_v,theta)% Version: 1.0% Copyright: Bjorn Gustavsson 20020430transpose_after = 1;if size(in_v)==[3 1]  in_v = in_v';  rot_v = rot_v';  transpose_after = 0;endrotv = rot_v/norm(rot_v);e1 = rotv;out_v = in_v;if norm(in_v)    e2 = cross(e1,in_v/norm(in_v));    if norm(e2)        e2 = e2/norm(e2);    e3 = cross(e1,e2);        trmtr = [e1;e2;e3];        rmatr = [1 0 0;0 cos(theta) -sin(theta);0 sin(theta) cos(theta)];        out_v = trmtr'*rmatr*trmtr*in_v';        if transpose_after            out_v = out_v';          end      end  end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?