当前位置:网站首页>generate pivot data 1
generate pivot data 1
2022-06-12 16:18:00 【17506331945】
clc;
clear;
close all;
% rng(0);
% rand(1)*2*pi
%% W: world coordinate system
% 尺寸4X4,齐次矩阵,齐次坐标系
W = eye(4);
W(1:3,1:3)=W(1:3,1:3)*200; % 乘以200是为了使得坐标轴变长,便于作图时候显示
%% 变换(零)
% 动态参考坐标系DRF00,初始状态和世界坐标系完全重合
%(1)绕W的X轴旋转,(2)绕W的Y轴旋转,(3)绕W的Z轴旋转,
%(4)相对于W的坐标原点,沿着W的XYZ方向平移
roll_W_WtoDRF00 = pi/2; % Z
yaw_W_WtoDRF00 = 0; % Y
pitch_W_WtoDRF00 = 0; % X
EAZYX_W_WtoDRF00 = [roll_W_WtoDRF00 yaw_W_WtoDRF00 pitch_W_WtoDRF00 ];
TlXYZ_W_WtoDRF00 = [100, 100, -1000]';
HTfM_W_WtoDRF00 = genHTfM_useEularAngle(EAZYX_W_WtoDRF00,TlXYZ_W_WtoDRF00);
DRF00 = HTfM_W_WtoDRF00*W;
%% 变换(一)
% 动态参考坐标系DRF01,初始状态和DRF00坐标系完全重合
%(1)相对于DRF00的坐标原点,沿着DRF00的X方向平移
roll_W_DRF00toDRF01 = 0; % Z
yaw_W_DRF00toDRF01 = 0; % Y
pitch_W_DRF00toDRF01 = 0; % X
EAZYX_W_DRF00toDRF01 = [roll_W_DRF00toDRF01 yaw_W_DRF00toDRF01 pitch_W_DRF00toDRF01 ];
TlXYZ_W_DRF00toDRF01 = [500,0,0]';
HTfM_W_DRF00toDRF01 = genHTfM_useEularAngle(EAZYX_W_DRF00toDRF01,TlXYZ_W_DRF00toDRF01);
% 右乘(先相对于W变换,然后再做W到DRF00的变换)
HTfM_DRF00_DRF00toDRF01 = HTfM_W_WtoDRF00*HTfM_W_DRF00toDRF01;
DRF01 = HTfM_DRF00_DRF00toDRF01*W;
%% 变换(二)
% 动态参考坐标系DRF02TMP,初始状态和DRF01坐标系完全重合
%(1)DRF02TMP绕着DRF00的Y轴旋转,得到最终的DRF02
roll_W_DRF01toDRF02 = 0; % Z
yaw_W_DRF01toDRF02 = -pi/4; % Y
pitch_W_DRF01toDRF02 = 0; % X
EAZYX_W_DRF01toDRF02 = [roll_W_DRF01toDRF02 yaw_W_DRF01toDRF02 pitch_W_DRF01toDRF02];
TlXYZ_W_DRF01toDRF02 = [0,0,0]';
HTfM_W_DRF01toDRF02 = genHTfM_useEularAngle(EAZYX_W_DRF01toDRF02,TlXYZ_W_DRF01toDRF02);
EAZYX_W_DRF00toW = inv(HTfM_W_WtoDRF00);
% (1)我们要求得一个变换矩阵HTfM_DRF01_DRF01toDRF02,使得DRF02 = HTfM_DRF01_DRF01toDRF02*W
% 由于变换矩阵最终是左乘坐标系W,所以此处需要目标坐标系DRF02的初始状态DRF02TMP00和坐标系W重合
% (2)把坐标系DRF02TMP00变换到和坐标系DRF01完全重合,得到DRF02TMP01
% {DRF02TMP01 = HTfM_DRF00_DRF00toDRF01*W}
% (3)把坐标系DRF00和坐标系DRF02TMP01,看作一个整体,同时变换。
% 对坐标系DRF02TMP01做,把坐标系DRF00变换到坐标系W的变换,左乘inv(HTfM_W_WtoDRF00),得到DRF02TMP02
% {DRF02TMP02 = inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF00toDRF01*W}
% (4)此时坐标系W和坐标系DRF00完全重合,在坐标系W处 做DRF02TMP02绕着DRF00的Y轴旋转DRF01到DRF02的变换,得到DRF02TMP03
% 此时坐标系W和坐标系DRF00完全重合,所以相对于W做变换等价于相对于DRF00做变换
% {DRF02TMP03 = HTfM_W_DRF01toDRF02*inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF00toDRF01*W}
% (5)对此时的坐标系做从W到DRF00的变换,即过程(3)的逆变换,变换矩阵左乘HTfM_W_WtoDRF00
% {DRF02 = HTfM_W_WtoDRF00*HTfM_W_DRF01toDRF02*inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF00toDRF01*W}
HTfM_DRF00_DRF01toDRF02 = HTfM_W_WtoDRF00*HTfM_W_DRF01toDRF02*inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF00toDRF01;
DRF02 = HTfM_DRF00_DRF01toDRF02*W;
%% 变换(三)
% 动态参考坐标系DRF03,初始状态和DRF02坐标系完全重合
%(1)DRF02绕着DRF00的Z轴旋转
roll_W_DRF02toDRF03 = pi/2; % Z
yaw_W_DRF02toDRF03 = 0; % Y
pitch_W_DRF02toDRF03 = 0; % X
EAZYX_W_DRF02toDRF03 = [roll_W_DRF02toDRF03 yaw_W_DRF02toDRF03 pitch_W_DRF02toDRF03];
TlXYZ_W_DRF02toDRF03 = [0,0,0]';
HTfM_W_DRF02toDRF03 = genHTfM_useEularAngle(EAZYX_W_DRF02toDRF03,TlXYZ_W_DRF02toDRF03);
% (1)我们要求得一个变换矩阵 HTfM_DRF00_DRF02toDRF03,使得DRF03 = HTfM_DRF00_DRF02toDRF03*W
% 由于变换矩阵最终是左乘坐标系W,所以此处需要目标坐标系DRF03的初始状态DRF03TMP00和坐标系W重合
% (2)把坐标系DRF03TMP00变换到和坐标系DRF02完全重合,得到DRF03TMP01
% 此处直接借用 变换(二)的结果
% {DRF03TMP01 = HTfM_DRF00_DRF01toDRF02*W}
% (3)把坐标系DRF00和坐标系DRF03TMP01,看作一个整体,同时变换。
% 对坐标系DRF03TMP01做,把坐标系DRF00变换到坐标系W的变换,左乘inv(HTfM_W_WtoDRF00),得到DRF03TMP02
% {DRF03TMP02 = inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF01toDRF02*W}
% (4)此时坐标系W和坐标系DRF00完全重合,在坐标系W处 做DRF03TMP02绕着DRF00的Z轴旋转DRF02到DRF03的变换,得到DRF03TMP03
% 此时坐标系W和坐标系DRF00完全重合,所以相对于W做变换等价于相对于DRF00做变换
% {DRF03TMP03 = HTfM_W_DRF02toDRF03*inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF01toDRF02*W}
% (5)对此时的坐标系做从W到DRF00的变换,即过程(3)的逆变换,变换矩阵左乘HTfM_W_WtoDRF00
% {DRF03 = HTfM_W_WtoDRF00*HTfM_W_DRF02toDRF03*inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF01toDRF02*W}
HTfM_DRF00_DRF02toDRF03 = HTfM_W_WtoDRF00*HTfM_W_DRF02toDRF03*inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF01toDRF02;
DRF03 = HTfM_DRF00_DRF02toDRF03*W;
%% 变换(四)
% 动态参考坐标系DRF04TMP,初始状态和DRF03坐标系完全重合
%(1)DRF04TMP绕着DRF03坐标原点旋转,得到DRF04
roll_W_DRF03toDRF04 = pi/3; % Z
yaw_W_DRF03toDRF04 = pi/4; % Y
pitch_W_DRF03toDRF04 = pi/2; % X
EAZYX_W_DRF03toDRF04 = [roll_W_DRF03toDRF04 yaw_W_DRF03toDRF04 pitch_W_DRF03toDRF04];
TlXYZ_W_DRF03toDRF04 = [0,0,0]';
HTfM_W_DRF03toDRF04 = genHTfM_useEularAngle(EAZYX_W_DRF03toDRF04,TlXYZ_W_DRF03toDRF04);
% (1)我们要求得一个变换矩阵 HTfM_DRF00_DRF03toDRF04,使得DRF04 = HTfM_DRF00_DRF03toDRF04*W
% 由于变换矩阵最终是左乘坐标系W,所以此处需要目标坐标系DRF04的初始状态DRF04TMP00和坐标系W重合
% (2)把坐标系DRF04TMP00相对于坐标系W做旋转变换,得到DRF04TMP01
% {DRF04TMP01 = HTfM_W_DRF03toDRF04*W}
% (3)对坐标系DRF04TMP01,做从坐标系W到坐标系DRF03的变换,得到DRF04
% {DRF04 = HTfM_DRF00_DRF02toDRF03*HTfM_W_DRF03toDRF04*W}
DRF04 = HTfM_DRF00_DRF02toDRF03*HTfM_W_DRF03toDRF04*W;
%%
% 画图
axis_limit = 1200;
axis_limitA = [-axis_limit,axis_limit,-axis_limit,axis_limit,-1500,300];
figure(6)
title("figure(6)");
trplot(W,'frame', 'RW','color','r', 'axis',axis_limitA, 'text_opts',{'FontSize', 10, 'FontWeight', 'light'}, 'view','auto', 'thick',1, 'dispar',0.8);
hold on;
plot3(W(1,4),W(2,4),W(3,4),'ro')
hold on;
trplot(DRF00,'frame', 'R00','color','g', 'axis',axis_limitA, 'text_opts',{'FontSize', 10, 'FontWeight', 'light'}, 'view','auto', 'thick',1, 'dispar',0.8);
% hold on;
% trplot(DRF01, 'frame', 'R01', 'color', 'b', 'axis',axis_limitA, 'text_opts',{'FontSize', 10, 'FontWeight', 'light'}, 'view','auto', 'thick',1, 'dispar',0.8);
% hold on;
% plot3(DRF01(1,4),DRF01(2,4),DRF01(3,4),'bo')
%
% hold on;
% trplot(DRF02, 'frame', 'R02', 'color', 'k', 'axis',axis_limitA, 'text_opts',{'FontSize', 10, 'FontWeight', 'light'}, 'view','auto', 'thick',1, 'dispar',0.8);
% hold on;
% plot3(DRF02(1,4),DRF02(2,4),DRF02(3,4),'ko')
%
% hold on;
% trplot(DRF03, 'frame', 'RDRF03', 'color', 'm', 'axis',axis_limitA, 'text_opts',{'FontSize', 10, 'FontWeight', 'light'}, 'view','auto', 'thick',1, 'dispar',0.8);
% hold on;
% plot3(DRF03(1,4),DRF03(2,4),DRF03(3,4),'mo')
%
%
% hold on;
% trplot(DRF04, 'frame', 'RDRF04', 'color', 'c', 'axis',axis_limitA, 'text_opts',{'FontSize', 10, 'FontWeight', 'light'}, 'view','auto', 'thick',1, 'dispar',0.8);
% hold on;
% plot3(DRF04(1,4),DRF04(2,4),DRF04(3,4),'co')
%% 变换(五)
% 动态参考坐标系DRF0X,初始状态和DRF02坐标系完全重合
%(1)DRF0X绕着DRF00的Z轴旋转
for i=-0.5 : 0.1 : 0
% 变换(二)
% 动态参考坐标系DRF02,初始状态和DRF01坐标系完全重合
%(1)DRF02绕着DRF00的Y轴旋转
roll_W_DRF01toDRF02 = 0; % Z
yaw_W_DRF01toDRF02 = i*pi; % Y
pitch_W_DRF01toDRF02 = 0; % X
EAZYX_W_DRF01toDRF02 = [roll_W_DRF01toDRF02 yaw_W_DRF01toDRF02 pitch_W_DRF01toDRF02];
TlXYZ_W_DRF01toDRF02 = [0,0,0]';
HTfM_W_DRF01toDRF02 = genHTfM_useEularAngle(EAZYX_W_DRF01toDRF02,TlXYZ_W_DRF01toDRF02);
EAZYX_W_DRF00toW = inv(HTfM_W_WtoDRF00);
HTfM_DRF01_DRF01toDRF02 = HTfM_W_WtoDRF00*HTfM_W_DRF01toDRF02*inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF00toDRF01;
DRF02 = HTfM_DRF01_DRF01toDRF02*W;
for j=0 : 0.2 : 2
% 变换(三)
% 动态参考坐标系DRF03,初始状态和DRF02坐标系完全重合
%(1)DRF02绕着DRF00的Z轴旋转
roll_W_DRF02toDRF0X = j*pi; % Z
yaw_W_DRF02toDRF0X = 0; % Y
pitch_W_DRF02toDRF0X = 0; % X
EAZYX_W_DRF02toDRF0X = [roll_W_DRF02toDRF0X yaw_W_DRF02toDRF0X pitch_W_DRF02toDRF0X];
TlXYZ_W_DRF02toDRF0X = [0,0,0]';
HTfM_W_DRF02toDRF0X = genHTfM_useEularAngle(EAZYX_W_DRF02toDRF0X,TlXYZ_W_DRF02toDRF0X);
EAZYX_W_DRF00toW = inv(HTfM_W_WtoDRF00);
HTfM_DRF00_DRF02toDRF0X = HTfM_W_WtoDRF00*HTfM_W_DRF02toDRF0X*inv(HTfM_W_WtoDRF00)*HTfM_DRF01_DRF01toDRF02;
DRF0X = HTfM_DRF00_DRF02toDRF0X*W;
for k=0 : 1 : 2
% 变换(四)
% 动态参考坐标系DRF04TMP,初始状态和DRF03坐标系完全重合
%(1)DRF04TMP绕着DRF03坐标原点旋转,得到DRF04
roll_W_DRF03toDRF04 = k*rand()*pi; % Z
yaw_W_DRF03toDRF04 = k*rand()*pi; % Y
pitch_W_DRF03toDRF04 = k*rand()*pi; % X
EAZYX_W_DRF03toDRF04 = [roll_W_DRF03toDRF04 yaw_W_DRF03toDRF04 pitch_W_DRF03toDRF04];
TlXYZ_W_DRF03toDRF04 = [0,0,0]';
HTfM_W_DRF03toDRF04 = genHTfM_useEularAngle(EAZYX_W_DRF03toDRF04,TlXYZ_W_DRF03toDRF04);
DRF0X = HTfM_DRF00_DRF02toDRF0X*HTfM_W_DRF03toDRF04*W;
hold on;
trplot(DRF0X, 'frame', 'RDRF0X', 'color', 'm', 'axis',axis_limitA, 'text_opts',{'FontSize', 10, 'FontWeight', 'light'}, 'view','auto', 'thick',1, 'dispar',0.8);
hold on;
plot3(DRF0X(1,4),DRF0X(2,4),DRF0X(3,4),'mo');
end
end
end
function HTfM= genHTfM_useEularAngle(eularAngle_zyx,translation)
% HTfM homogeneous transform matrix
rotationMatrix=eul2rotm(eularAngle_zyx,'ZYX');
HTfM = eye(4,4);
HTfM(1:3,1:3) = rotationMatrix;
HTfM(1:3,4) = translation;
end边栏推荐
- Sha6 of D to large integer
- 面试:‘==‘与equals()之间的区别
- Step by step steps to create an ABAP program with a custom screen
- acwing796 子矩阵的和
- 面试:了解装箱和拆箱操作吗?
- Homology? Cross domain? How to solve cross domain problems?
- acwing 790. The cubic root of a number (floating-point number in half)
- The C Programming Language(第 2 版) 笔记 / 8 UNIX 系统接口 / 8.5 实例(fopen 和 getc 函数的实现)
- MySQL blob and text types
- Review of the development of China's medical beauty (medical beauty) industry in 2021: the supervision is becoming stricter, the market scale is expanding steadily, and the development prospect is bro
猜你喜欢

Project training of Software College of Shandong University rendering engine system radiation pre calculation (VIII)

Project training of Software College of Shandong University rendering engine system basic renderer (V)

< 山东大学软件学院项目实训 > 渲染引擎系统——基础渲染器(四)

小飞页升级变智能修复Bug更快速了

Project training of Software College of Shandong University rendering engine system point cloud processing (10)

Office VR porn, coquettish operation! The father of Microsoft hololens resigns!

acwing 802. Interval sum (discretization)

盒马,最能代表未来的零售
![In 2020, the demand for strain sensors in China will reach 9.006 million, and the market scale will reach 2.292 billion yuan [figure]](/img/a8/dd5f79262fe6196dd44ba416a4baac.jpg)
In 2020, the demand for strain sensors in China will reach 9.006 million, and the market scale will reach 2.292 billion yuan [figure]

acwing 800. 数组元素的目标和
随机推荐
Interview: difference between '= =' and equals()
Match single character
D structure as index of multidimensional array
Development status of China's pig breeding industry in 2021 and comparative analysis of key enterprises: 671million pigs were sold [figure]
(四)GoogleNet复现
同源?跨域?如何解决跨域?
Acwing788. number of reverse order pairs
连续八年包装饮用水市占率第一,这个品牌DTC是如何持续增长的?
IDEA中文棱形乱码错误解决方法--控制台中文输出棱形乱码
[tool recommendation] personal local markdown knowledge map software
acwing796 子矩阵的和
acwing 790. 数的三次方根(浮点数二分)
批量--03---CmdUtil
Office VR porn, coquettish operation! The father of Microsoft hololens resigns!
Project training of Software College of Shandong University rendering engine system basic renderer (IV)
Step by step to create a trial version of ABAP program containing custom screen
Reprise de Google net
位运算例题(待续)
acwing 802. 区间和 (离散化)
看《梦华录》上头的人都该尝试下这款抖音特效