该程序为计算正交位移测量系统中位移传感器触点座标的程序。当被测基准块位姿发生改变时,位移传感器的示值发生改变,通过该程序,可以计算出不同位移传感器触点的新座标。for循环的目的是循环计算15个不同位姿下的位移传感器的座标。三点确定一个平面!有了新的座标,可以进行平面的计算。
主程序如下:
clc; clear all;close all
warning off
P0=[4 5 6;%S1
7 8 9;%S2
10 11 12];%S3
%x y z
v1=[1 1 1];%定义直线向量
L=-10*(rand(15,3)*2-1);%产生15*3的随机位移矩阵,定义不同动点到固定点P的距离,负号表示方向
P2=cell(9,1);P3_1=zeros(3,3);
for q=1:length(L)
P2{q}=func(P0,v1,L(q,:));
end
子程序如下:
function P1=func(P0,v1,L)
syms P01 P02 P03 v11 v12 v13 L1 L2 L3 %定义变量;
S11=P0(1,1);S12=P0(1,2);S13=P0(1,3);S21=P0(2,1);S22=P0(2,2);S23=P0(2,3);S31=P0(3,1);S32=P0(3,2);S33=P0(3,3);
v11=v1(1);v12=v1(2);v13=v1(3);L1=L(1);L2=L(2);L3=L(3);%变量赋值
P1(1,1)=S11+L1*v1(1)/norm(v1);%计算固定点1对应的动点X分量
P1(1,2)=S12+L1*v1(2)/norm(v1);%计算固定点1对应的动点Y分量
P1(1,3)=S13+L1*v1(3)/norm(v1);%计算固定点1对应的动点Z分量
P1(2,1)=S21+L2*v1(1)/norm(v1);%计算固定点2对应的动点X分量
P1(2,2)=S22+L2*v1(2)/norm(v1);%计算固定点2对应的动点Y分量
P1(2,3)=S23+L2*v1(3)/norm(v1);%计算固定点2对应的动点Z分量
P1(3,1)=S31+L3*v1(1)/norm(v1);%计算固定点2对应的动点X分量
P1(3,2)=S32+L3*v1(2)/norm(v1);%计算固定点2对应的动点Y分量
P1(3,3)=S33+L3*v1(3)/norm(v1);%计算固定点2对应的动点Z分量
P1;%程序输出
运行结果如下:
P2 =
[3x3 double]
[3x3 double]
[3x3 double]
[3x3 double]
[3x3 double]
[3x3 double]
[3x3 double]
[3x3 double]
[3x3 double]
[3x3 double]
[3x3 double]
[3x3 double]
[3x3 double]
[3x3 double]
[3x3 double]
每一个 [3x3 double]里面的内容分别为: