当前位置:网站首页>generate pivot data 0
generate pivot data 0
2022-06-12 16:21:00 【seventeen billion five hundred and six million three hundred an】
clc;
clear;
close all;
% rng(0);
% rand(1)*2*pi
%% W: world coordinate system
% Size 4X4, Homogeneous matrix , Homogeneous coordinate system
W = eye(4);
W(1:3,1:3)=W(1:3,1:3)*200; % multiply 200 To make the axis longer , It is convenient to display
%% Transformation ( zero )
% Dynamic reference coordinate system DRF00, The initial state completely coincides with the world coordinate system
%(1) Around the W Of X Shaft rotation ,(2) Around the W Of Y Shaft rotation ,(3) Around the W Of Z Shaft rotation ,
%(4) be relative to W The origin of the coordinates , Along W Of XYZ Direction translation
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;
%% Transformation ( One )
% Dynamic reference coordinate system DRF01, The initial state and DRF00 The coordinate systems are perfectly coincident
%(1) be relative to DRF00 The origin of the coordinates , Along DRF00 Of X Direction translation
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);
% Take the right ( First relative to W Transformation , And then do it W To DRF00 Transformation of )
HTfM_DRF00_DRF00toDRF01 = HTfM_W_WtoDRF00*HTfM_W_DRF00toDRF01;
DRF01 = HTfM_DRF00_DRF00toDRF01*W;
%% Transformation ( Two )
% Dynamic reference coordinate system DRF02TMP, The initial state and DRF01 The coordinate systems are perfectly coincident
%(1)DRF02TMP Around DRF00 Of Y Shaft rotation , To get the final 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) We require a transformation matrix HTfM_DRF01_DRF01toDRF02, bring DRF02 = HTfM_DRF01_DRF01toDRF02*W
% Because the transformation matrix is ultimately left multiplied coordinate system W, So the target coordinate system is needed here DRF02 Initial state of DRF02TMP00 And the coordinate system W coincidence
% (2) Put the coordinate system DRF02TMP00 Transform to and coordinate system DRF01 Complete coincidence , obtain DRF02TMP01
% {DRF02TMP01 = HTfM_DRF00_DRF00toDRF01*W}
% (3) Put the coordinate system DRF00 And the coordinate system DRF02TMP01, As a whole , Change at the same time .
% For the coordinate system DRF02TMP01 do , Put the coordinate system DRF00 Transform to a coordinate system W Transformation of , Left multiplication inv(HTfM_W_WtoDRF00), obtain DRF02TMP02
% {DRF02TMP02 = inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF00toDRF01*W}
% (4) Now the coordinate system W And the coordinate system DRF00 Complete coincidence , In the coordinate system W It's about do DRF02TMP02 Around DRF00 Of Y Shaft rotation DRF01 To DRF02 Transformation of , obtain DRF02TMP03
% Now the coordinate system W And the coordinate system DRF00 Complete coincidence , So relative to W To make a transformation is equivalent to DRF00 Make a change
% {DRF02TMP03 = HTfM_W_DRF01toDRF02*inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF00toDRF01*W}
% (5) Do the following from the coordinate system at this time W To DRF00 Transformation of , That's the process (3) The inverse transformation of , Transform matrix left multiply 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;
%% Transformation ( 3、 ... and )
% Dynamic reference coordinate system DRF03, The initial state and DRF02 The coordinate systems are perfectly coincident
%(1)DRF02 Around DRF00 Of Z Shaft rotation
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) We require a transformation matrix HTfM_DRF00_DRF02toDRF03, bring DRF03 = HTfM_DRF00_DRF02toDRF03*W
% Because the transformation matrix is ultimately left multiplied coordinate system W, So the target coordinate system is needed here DRF03 Initial state of DRF03TMP00 And the coordinate system W coincidence
% (2) Put the coordinate system DRF03TMP00 Transform to and coordinate system DRF02 Complete coincidence , obtain DRF03TMP01
% Borrow directly here Transformation ( Two ) Result
% {DRF03TMP01 = HTfM_DRF00_DRF01toDRF02*W}
% (3) Put the coordinate system DRF00 And the coordinate system DRF03TMP01, As a whole , Change at the same time .
% For the coordinate system DRF03TMP01 do , Put the coordinate system DRF00 Transform to a coordinate system W Transformation of , Left multiplication inv(HTfM_W_WtoDRF00), obtain DRF03TMP02
% {DRF03TMP02 = inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF01toDRF02*W}
% (4) Now the coordinate system W And the coordinate system DRF00 Complete coincidence , In the coordinate system W It's about do DRF03TMP02 Around DRF00 Of Z Shaft rotation DRF02 To DRF03 Transformation of , obtain DRF03TMP03
% Now the coordinate system W And the coordinate system DRF00 Complete coincidence , So relative to W To make a transformation is equivalent to DRF00 Make a change
% {DRF03TMP03 = HTfM_W_DRF02toDRF03*inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF01toDRF02*W}
% (5) Do the following from the coordinate system at this time W To DRF00 Transformation of , That's the process (3) The inverse transformation of , Transform matrix left multiply 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;
%%
% drawing
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')
%% Transformation ( Four )
% Dynamic reference coordinate system DRF0X, The initial state and DRF02 The coordinate systems are perfectly coincident
%(1)DRF0X Around DRF00 Of Z Shaft rotation
for i=-pi/2 : pi/4 : 0
% Transformation ( Two )
% Dynamic reference coordinate system DRF02, The initial state and DRF01 The coordinate systems are perfectly coincident
%(1)DRF02 Around DRF00 Of Y Shaft rotation
roll_W_DRF01toDRF02 = 0; % Z
yaw_W_DRF01toDRF02 = i; % 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 : pi/2 : 2*pi
% Transformation ( 3、 ... and )
% Dynamic reference coordinate system DRF03, The initial state and DRF02 The coordinate systems are perfectly coincident
%(1)DRF02 Around DRF00 Of Z Shaft rotation
roll_W_DRF02toDRF0X = j; % 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;
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
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
边栏推荐
- acwing 800. Target and of array elements
- acwing 2816. Judgement subsequence
- 线程池执行流程
- acwing 801. Number of 1 in binary (bit operation)
- Project training of Software College of Shandong University rendering engine system basic renderer (IV)
- Postgresql错误码是如何构造的
- 试用期、加班补偿———进厂前后需要了解的知识《劳动法》
- Gopher to rust hot eye grammar ranking
- Recurrent+Transformer 视频恢复领域的‘德艺双馨’
- Acwing 798 two dimensional difference (difference matrix)
猜你喜欢

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

Thinking about the probability of drawing cards in the duel link of game king

acwing 800. Target and of array elements

Servlet API

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

Let's talk about events. Listen to those things. - Part one

acwing 803. Interval merging

acwing 803. 区间合并

Kill program errors in the cradle with spotbugs

< 山东大学软件学院项目实训 > 渲染引擎系统——基础渲染器(五)
随机推荐
acwing 801. Number of 1 in binary (bit operation)
acwing788. 逆序对的数量
Acwing 798 two dimensional difference (difference matrix)
批量--04---移动构件
Project training of Software College of Shandong University rendering engine system radiation pre calculation (VIII)
h t fad fdads
5-5 configuring MySQL replication log point based replication
Nacos Config 动态刷新源码剖析
Project training of Software College of Shandong University rendering engine system basic renderer (IV)
超详细干货!Docker+PXC+Haproxy搭建高可用强一致性的MySQL集群
【DSP视频教程】DSP视频教程第8期:DSP库三角函数,C库三角函数和硬件三角函数的性能比较,以及与Matlab的精度比较(2022-06-04)
acwing 800. Target and of array elements
Project training of Software College of Shandong University rendering engine system point cloud processing (10)
leetcode-54. Spiral matrix JS
Interview: why do integer wrapper classes try to use equals() to compare sizes
使用 .NET 升级助手将NET Core 3.1项目升级为.NET 6
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
The C Programming Language(第 2 版) 笔记 / 8 UNIX 系统接口 / 8.4 随机访问(lseek)
Acwing 797 differential
The C Programming Language(第 2 版) 笔记 / 8 UNIX 系统接口 / 8.3 open、creat、close、unlink