matlab怎样绘制中心线为曲线的变截面圆柱?如图所示,我想画一个模拟井径的三维图像,其中心轨迹为一条曲线,知道曲线上若干个中心点位置处的圆的半径(点不同时,圆的半径也不同),不知道

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 17:07:50
matlab怎样绘制中心线为曲线的变截面圆柱?如图所示,我想画一个模拟井径的三维图像,其中心轨迹为一条曲线,知道曲线上若干个中心点位置处的圆的半径(点不同时,圆的半径也不同),不知道

matlab怎样绘制中心线为曲线的变截面圆柱?如图所示,我想画一个模拟井径的三维图像,其中心轨迹为一条曲线,知道曲线上若干个中心点位置处的圆的半径(点不同时,圆的半径也不同),不知道
matlab怎样绘制中心线为曲线的变截面圆柱?

如图所示,我想画一个模拟井径的三维图像,其中心轨迹为一条曲线,知道曲线上若干个中心点位置处的圆的半径(点不同时,圆的半径也不同),不知道怎样拟合出一个变形了的圆柱面呢?

matlab怎样绘制中心线为曲线的变截面圆柱?如图所示,我想画一个模拟井径的三维图像,其中心轨迹为一条曲线,知道曲线上若干个中心点位置处的圆的半径(点不同时,圆的半径也不同),不知道
%这里随便给了组数据,中心轨迹(x,y,z)以及对应的圆半径
x=0:0.02:1;y=cos(x*pi/2);z=y.^2;
r=0.15-0.1*x;
%这里x,y,z,r是程度相等的数组,注意相邻两点不能重合
plot3(x,y,z,'b');hold on
dx=gradient(x);dy=gradient(y);dz=gradient(z);%曲线方向增量
deg=0:360;
for ii=1:length(x)
   n=[dx(ii) dy(ii) dz(ii)];  %n是当前点的增量方向,也是圆平面的法向量
   n=n/sqrt(sum(n.^2));        %归一化法向量
   a=zeros(1,3);[ind ind]=min(n);a(ind)=1;%找到和n(ii,:)不共线的向量
   r1=cross(n,a);           %产生圆平面上的一个向量
   r1=r1/sqrt(sum(r1.^2))*r(ii);  %让向量长度等于半径
   r2=cross(n,r1);          %产生另一个与其正交的半径向量
   xx=r1(1)*cosd(deg)+r2(1)*sind(deg)+x(ii); %根据r1和r2,利用角度产生圆数据
   yy=r1(2)*cosd(deg)+r2(2)*sind(deg)+y(ii);
   zz=r1(3)*cosd(deg)+r2(3)*sind(deg)+z(ii); 
   plot3(xx,yy,zz,'r');                      %画一个圆
end
hold off;grid on
 axis equal;





升级版


%这里随便给了组数据,中心轨迹(x,y,z)以及对应的圆半径
x=0:0.02:1;y=cos(x*pi/2);z=y.^2;
r=0.15-0.1*x;
%这里x,y,z,r是程度相等的数组,注意相邻两点不能重合
x=x(:);y=y(:);z=z(:);
plot3(x,y,z,'b','linewidth',2);hold on
n=[gradient(x) gradient(y) gradient(z)];%曲线方向增量
n=bsxfun(@rdivide,n,sqrt(sum(n.^2,2)));
a=zeros(1,3);[ind ind]=min(n(1,:));a(ind)=1;
r1=cross(n(1,:),a);
r1=r1/sqrt(sum(r1.^2));
r2=cross(n(1,:),r1);
deg=0:20:360;
xx=r(1)*(r1(1)*cosd(deg)+r2(1)*sind(deg))+x(1); 
yy=r(1)*(r1(2)*cosd(deg)+r2(2)*sind(deg))+y(1);
zz=r(1)*(r1(3)*cosd(deg)+r2(3)*sind(deg))+z(1); 
d0=[xx(1) yy(1) zz(1)];
for ii=2:length(x)
   r1=cross(r2,n(ii,:));
   r2=cross(n(ii,:),r1);          
   xx=[xx;r(ii)*(r1(1)*cosd(deg)+r2(1)*sind(deg))+x(ii)]; 
   yy=[yy;r(ii)*(r1(2)*cosd(deg)+r2(2)*sind(deg))+y(ii)];
   zz=[zz;r(ii)*(r1(3)*cosd(deg)+r2(3)*sind(deg))+z(ii)];   
end
mesh(xx,yy,zz);colormap([1 0 0]);
hold off;grid on;axis equal;hidden off;
xlabel('X');ylabel('Y');zlabel('Z');

matlab怎样绘制中心线为曲线的变截面圆柱?如图所示,我想画一个模拟井径的三维图像,其中心轨迹为一条曲线,知道曲线上若干个中心点位置处的圆的半径(点不同时,圆的半径也不同),不知道 用MATLAB绘制的曲线,怎样加上曲线名称? 如何用MATLAB绘制多项式曲线比如怎样绘制y=x^3+x的曲线,求程序代码 关于matlab中的plot问题绘制函数y=sin(x)cos(x)在[-2,2]上的曲线 曲线为红实线,怎么绘制 matlab画图题绘制该函数的曲线 matlab函数曲线用MATLAB绘制照片中函数的曲线 谢谢了 Matlab绘制曲线问题请问如何绘制 Cos^2(x) 的曲线,还有Sin^2(x) 等等. 如何用matlab 绘制贝塞尔函数曲线 隐函数 如何用MATLAB绘制曲线 matlab中怎样绘制矩形? matlab怎样绘制如下数据的条形图? MATLAB的nlintool函数怎样绘制二元回归方程? excel2007怎么绘制的曲线曲线怎么将横坐标扩大?如重40变到50 用matlab编程 计算机图形作业(1)简述Bezier曲线的定义和性质(2)以三次Bezier曲线为例,写出三次Bezier曲线的矩阵表达形式(3)绘制一条三次Bezier曲线 水样中六价铬的测定怎样绘制标准曲线? 怎样绘制电机转矩特性,电流特性的曲线 autocad2010绘制的对称中心线没有点……怎么办 MATLAB 绘制开环幅相曲线函数和开环对数幅频渐进特性曲线函数如题 哪位大侠能给我说一下在MATLAB中绘制开环幅相曲线用的函数和开环对数幅频渐进特性曲线用的函数以G(s)=K(s+1)/s(s+2),为例,