matlab中Nurbs库的简单使用


前言

只是为方便学习,不做其他用途,记录matlab中Nurbs的使用,好像记得是添加的matlab中的一个Nurbs库来着。前一段使用,现在不记得了,使用这个程序得先安装好那个Nurbs库

安装Nurbs库可以参考博客 Matlab-NURBS工具箱简要教程及实例

一、简单例子

clear;
clc;
%% 直线
coef = [0.0 1.5; 0.0 3.0];    % 控制顶点
konts = [0.0 0.0 1.0 1.0];    % 节点向量
line = nrbmak(coef,konts);    % nrbmak(coef,konts)--给定控制顶点和节点向量,构造NURBS结构
figure(1)
nrbplot(line, 2);

%% 平面
coefs = cat(3,[0 0; 0 1],[1 1; 0 1]); % 控制顶点
knots = {[0 0 1 1]  [0 0 1 1]};       % 节点向量
plane = nrbmak(coefs,knots);          % nrbmak(coef,konts)--给定控制顶点和节点向量,构造NURBS结构
figure(2)
nrbplot(plane, [2 2]);  
%% 加载测试用的nurbs曲线
crv = nrbtestcrv; 			%加载测试用的nurbs曲线
rcrv=nrbreverse(crv);		%反转
figure(3)
nrbplot(crv, 350);
%% 曲线     
coef = [0.0 1.0  3.0 4.0; 0.0 2.50 2.0 0.0];    % 控制顶点
konts = [0  0  0  0.5  1  1  1];    % 节点向量
line2 = nrbmak(coef,konts);    % nrbmak(coef,konts)--给定控制顶点和节点向量,构造NURBS结构
figure(4)
plot(coef(1,:),coef(2,:));  %画控制网格
hold on;
nrbplot(line2, 50);   % nrbplot(NURBS结构, 画的点的个数); 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二、复杂一点的NUrbs曲面

代码:
%例子1
clear;clc;
% 控制顶点
pnts(:,:,1) =[2 3 4 5 6 7;
           	  0 0 0 0 0 0;
           	  4 4 4 4 4 4];
pnts(:,:,2) =[2 3 4 5 6 7;
           	  1 1 1 1 1 1;
           	  4 4 4.1 4 4 4];
pnts(:,:,3) =[2 3 4 5 6 7;
           	  2 2 2 2 2 2;
           	  4 4 4 4.2 4 4];
pnts(:,:,4)= [2 3 4 5 6 7;
           	  3 3 3 3 3 3;
           	  4 4 4.3 4 4 4];
pnts(:,:,5)= [2 3 4 5 6 7;
           	  4 4 4 4 4 4;
           	  4 4 4.4 4 4 4];
% 节点向量
knots{1} = [0 0  1/5 2/5 3/5 4/5  1 1]; %u
knots{2} = [0 0  1/4 2/4 3/4      1 1]; %v
plane = nrbmak(pnts,knots); 
nrbplot(plane, [60 64]); 
hold on;
for i = 1:5
    a = plane.coefs(:,:,i);
    plot3(a(1,:),a(2,:),a(3,:),'ro');
    plot3(a(1,:),a(2,:),a(3,:));
end

% 两个单元的IGA
clear;clc;
%控制顶点
pnts(:,:,1) =[0 0 0 ;
           	  0 1 2 ;
           	  0 0 0 ];
pnts(:,:,2) =[0.5 0.5 0.5 ;
           	  0 1 2 ;
           	  0 0 0 ];
pnts(:,:,3) =[1.5 1.5 1.5 ;
           	  0 1 2 ;
           	  0 0 0 ];
pnts(:,:,4)= [2 2 2 ;
           	  0 1 2 ;
           	  0 0 0 ];
coefs = pnts; 
%节点向量
knots = {[0 0 0 1 1 1] [0 0 0 0.5 1 1 1]};
plane = nrbmak(coefs,knots);             %生成nurbs曲面
figure(2)
nrbplot(plane, [1 2]);

运行结果:

在这里插入图片描述

在这里插入图片描述

nrbeval函数

crv = nrbtestcrv; 			%加载测试用的nurbs曲线
p1 = nrbeval(crv,ut); %参数域上ut 对应的x,y,z的坐标值
nrbplot(crv, 20);

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值