电子产业一站式赋能平台

PCB联盟网

搜索
查看: 1485|回复: 3
收起左侧

老师作业做不懂

[复制链接]

657

主题

1025

帖子

5598

积分

四级会员

Rank: 4

积分
5598
发表于 2023-3-23 16:43:42 | 显示全部楼层 |阅读模式
clear %清除所有已定义的变量
clc  %清空命令窗口
clf   %清空图形窗口

grid on  %显示绘图网格线
hold on
axis([-1,1,-1,1]) %设置绘图区坐标范围
x=[]; %初始化坐标数组
y=[];
[px,py,button]=ginput(1);%拾取第一个点
while button==1  %当鼠标按键是左键则重复拾取,其它按键则退出循环
    plot(px,py,'ro'); %绘制拾取的点
    x=[x;px]; %保存拾取点坐标
    y=[y;py];
    [px,py,button]=ginput(1);
end
plot(x,y,'b-') %绘制通过拾取点的连线
daspect([1 1 1]) %确保绘图区的坐标比例为1
hold off
% 计算以这两个点为端点且角度为60°的NURBS圆弧
t = linspace(0,1,100);
P = [x';y';zeros(1,2)]; % 控制点矩阵
w = [1,sin(pi/6)/cos(pi/6),1]; % 权重向量
k = [0,0,0,1,1,2,2,2]; % 节点向量
n = length(k) - 4;
N = zeros(n,length(t));
for i = 1:n
    N(i,:) = bspline_basis(i-1,3,k,t);
end
W = repmat(w',1,length(t));
Q = P'.* W;
B = (N .* W) ./ sum(N .* W);
C = Q * B;
X = C(1,:);
Y = C(2,:);

% 绘制圆弧和控制多边形
plot(X,Y,'-');
plot(P(1,:),P(2,:),'ro');
plot(P(1,:),P(2,:),'--');
title('NURBS圆弧');
legend('NURBS圆弧','控制点','控制多边形');

function N = bspline_basis(i,p,k,t)
% B样条基函数的递归定义
if p == 0
    if k(i+1) <= t & t < k(i+2)
        N = 1;
    else
        N = 0;
    end
else
    alpha = (t - k(i+1)) ./ (k(i+p+1) - k(i+1));
    beta = (k(i+p+2) - t) ./ (k(i+p+2) - k(i+1));
    N = alpha .* bspline_basis(i,p-1,k,t) + beta .* bspline_basis(i+1,p-1,k,t);
end
end

在计算60度nurbs曲线之前的是老师给的ginput代码,后面的Q=P'.*W一直报错,请问下怎么改
老师的原话:拾取两个不重合的点,计算以这两个点为端点且角度为60°的NURBS圆弧,并将控制点、控制多边形和圆弧绘制在同一张图中。提示:可采用88页的公式绘制。(10分)
回复

使用道具 举报

591

主题

1772

帖子

5770

积分

四级会员

Rank: 4

积分
5770
发表于 2023-3-23 16:44:13 | 显示全部楼层
clear %清除所有已定义的变量
回复 支持 反对

使用道具 举报

0

主题

875

帖子

675

积分

二级会员

Rank: 2

积分
675
发表于 2023-3-23 16:45:03 | 显示全部楼层
晚上帮你研究一下
回复 支持 反对

使用道具 举报

2851

主题

4614

帖子

2万

积分

官网认证

Rank: 3Rank: 3

积分
25793

活跃会员热心会员推广达人优秀版主

发表于 2023-3-23 16:45:51 | 显示全部楼层
我这不要钱
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表