24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1916  |  回复: 10

zuo19880318

银虫 (小有名气)

[求助] 求高手用MATLAB编写一个画张量积曲面的程序

希望给出16个控制顶点,即4行4列的双三次Bezier网格,画出双三次Bezier曲面。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

wurongjun

专家顾问 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
zuo19880318: 金币+15, ★★★很有帮助 2013-03-30 19:53:46
function bzqum33
clear;
N=30;M=30;
x=[1 2 3 4];y=[1 2 3 4];
n=length(x)-1;
[x y]=meshgrid(x,y);
z=[1 2 2 1;
   2 2.5 2.5 2;
   2 2.5 2.5 2;
   1 2 2 1 ];
t=linspace(0,1,N);
s=linspace(0,1,M);
xst=zeros(M,N);yst=zeros(M,N);zst=zeros(M,N);
xst=T(n,s)'*x*T(n,t);
yst=T(n,s)'*y*T(n,t);
zst=T(n,s)'*z*T(n,t);
axis equal;
axis([0 6 0 6 1 3]);
for i=1:4
    plot3(x(i,,y(i,,z(i,,'-or','LineWidth',2);
    hold on;
    plot3(x(:,i),y(:,i),z(:,i),'-ob','LineWidth',2);
end
axis([0 6 0 6 1 3]);
grid on
mesh(xst,yst,zst);
colormap([1,0,0]);
hold on;
xlabel('X-axis');ylabel('Y-axis');zlabel('Z-axis');
hold off;
function y=T(n,t)
y=zeros(n,length(t));
for i=1:n+1
y(i,=nchoosek(n,i-1)*(1-t).^(n+1-i).*t.^(i-1);
end

qm.jpg

善恶到头终有报,人间正道是沧桑.
2楼2013-03-30 18:12:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zuo19880318

银虫 (小有名气)

引用回帖:
2楼: Originally posted by wurongjun at 2013-03-30 18:12:10
function bzqum33
clear;
N=30;M=30;
x=;y=;
n=length(x)-1;
=meshgrid(x,y);
z=;
t=linspace(0,1,N);
s=linspace(0,1,M);
xst=zeros(M,N);yst=zeros(M,N);zst=zeros(M,N);
xst=T(n,s)'*x*T(n,t);
yst=T ...

请问在此基础上做渐进迭代逼近(PIA),你会嘛?
3楼2013-03-30 19:53:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wurongjun

专家顾问 (职业作家)

好吧!金币要给的!!
好的!
function bzqumnn
clear;
N=30;M=30;%网格大小
x=[1 2 3 4;
   1 2 3 4;
   1 2 3 4;
   1 2 3 4];
y=[1 1 1 1;
   2 2 2 2;
   3 3 3 3;
   4 4 4 5];
z=[1 2 2 1;
   2 2.5 2.5 2;
   2 2.5 2.5 2;
   1 2 2 1 ];%十六个点的坐标,注意排成网格状
[xst,yst,zst]=bezqum(x,y,z,M,N,3);%调用函数
axis equal;
mesh(xst,yst,zst);
xlabel('X-axis');ylabel('Y-axis');zlabel('Z-axis');
function [xst,yst,zst]=bezqum(x,y,z,M,N,n)
t=linspace(0,1,N);
s=linspace(0,1,M);
xst=zeros(M,N);yst=zeros(M,N);zst=zeros(M,N);
xst=T(n,s)'*x*T(n,t);
yst=T(n,s)'*y*T(n,t);
zst=T(n,s)'*z*T(n,t);
function y=T(n,t)
y=zeros(n,length(t));
for i=1:n+1
y(i,=nchoosek(n,i-1)*(1-t).^(n+1-i).*t.^(i-1);
end

qm.jpg

善恶到头终有报,人间正道是沧桑.
8楼2013-03-30 22:35:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zuo19880318

银虫 (小有名气)

引用回帖:
8楼: Originally posted by wurongjun at 2013-03-30 22:35:36
好吧!金币要给的!!
好的!
function bzqumnn
clear;
N=30;M=30;%网格大小
x=;
y=;
z=;%十六个点的坐标,注意排成网格状
=bezqum(x,y,z,M,N,3);%调用函数
axis equal;
mesh(xst,yst,zst);
xlabel('X-axis') ...

昨天金币全给你了。已经40个给完了,现在给不了。。。
9楼2013-03-31 12:07:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wurongjun

专家顾问 (职业作家)

玩笑一下!
希望能帮到你!!
善恶到头终有报,人间正道是沧桑.
10楼2013-03-31 20:52:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

wurongjun

专家顾问 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
zuo19880318: 金币+25, ★★★很有帮助 2013-03-30 20:13:52
你把我给的那个程序成写成函数(输入控制顶点)型!
再根据你的判定准则迭代就行了!
善恶到头终有报,人间正道是沧桑.
4楼2013-03-30 20:08:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zuo19880318

银虫 (小有名气)

引用回帖:
4楼: Originally posted by wurongjun at 2013-03-30 20:08:06
你把我给的那个程序成写成函数(输入控制顶点)型!
再根据你的判定准则迭代就行了!

要不你帮我写成输入控制顶点型吧?,麻烦你了,可以嘛?
5楼2013-03-30 20:14:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wurongjun

专家顾问 (职业作家)

这个很简单!
你自己不会吗?
你是学过这个Matlab吧!
善恶到头终有报,人间正道是沧桑.
6楼2013-03-30 20:59:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zuo19880318

银虫 (小有名气)

引用回帖:
6楼: Originally posted by wurongjun at 2013-03-30 20:59:15
这个很简单!
你自己不会吗?
你是学过这个Matlab吧!

学的只是小小的皮毛啊。。。希望你能帮帮我把。。哈哈
7楼2013-03-30 21:48:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zuo19880318 的主题更新
信息提示
请填处理意见