想在3维空间中任意画一个2维曲线(这里我们以圆为例方便理解,该圆可处于空间中任意姿态任意位置),其数学公式可能是难以简单给出的。不过基于机器人学中的坐标变换,我们倒是可以用机器人工具箱(由Peter Corke开发)轻松实现。
我们先来回顾一下《机器人学导论》中的理论基础:
现在让我们先考虑2维坐标系下圆的参数方程:
;
我们接下来所要做的只是给它们引入Z方向上的坐标,再让这个坐标系做平移和旋转变换。注意Pos是个4*1的列向量,最后一个元素1是为了矩阵相乘而引入的。在指定半径和圆心坐标后,我们利用左乘旋转矩阵设定圆的姿态(即trotx,troty,trotz函数),再引入坐标系的平移(P):
clc;
clear;
%指定圆心半径
radius = 3;
%指定圆心坐标
P = [0; 0; 0; 0];
x=P(1);y=P(2);z=P(3);
for a = 0: pi/20 : 2*pi %利用坐标变换求出圆上的一系列点并保存在x,y,z中
Pos = [radius*cos(a); radius*sin(a); 0; 1];
A = trotz(0)*troty(0)*trotx(0)*Pos + P;
x = [x;A(1)];
y = [y;A(2)];
z = [z;A(3)];
end
plot3(x,y,z);
结果如图: