接上文
需要直接建立圆轴矢量与X,Y方向的平面方程,引入X轴同Z轴垂直的约束条件:
假设圆轴矢量在基坐标系下的直线方程为(假设圆轴矢量过某一点p(xp,yp,zp):
圆弧所在平面的的平面方程为:(利用法向量方程)
ax*(x-x1)+ay*(y-y1)+az*(z-z1)=0
那么根据交点可以确定圆心所在点的坐标参数为:t0 = ax*(x1-xp)+ay*(y1-yp)+az*(z1-zp)
那么圆心坐标为:
将上述约束后圆心坐标值代入,同时默认矢量恒通过已知圆心点(x0,y0,z0)即(xp,yp,zp为x0,y0,z0)重新求得x,y,z 为:令C= axx0+ayy0+az*z0
验证:
matlab代码
%% 旋转矩阵法(改进算法) 验证正确
%参数设定
x0 = 1; y0 = 1; z0 = 1;
x1 = 1; y1 = 1 ; z1 = 0;
ax = 1; ay = 1; az = 0;
aa = sqrt(ax^2+ay^2+az^2);
ax = ax/aa ; ay = ay/aa ; az = az/aa;
%绘制三维向量图
quiver3(x0,y0,z0,ax,ay,az);
hold on;
theta1 = pi/8; %输入需要旋转的角度值 %正值顺时针,负值逆时针
%绘制圆弧旋转图
theta = 0:theta1/20:theta1;
K = 1-cos(theta);
M = ax*x0+ay*y0+az*z0;
x = (ax^2*K+cos(theta))*x1+(ax*ay*K-az*sin(theta))