gusucode.com > MATLAB,三维立体曲线仿真源码程序 > MATLAB,三维立体曲线仿真源码程序/code/test11.m
%cornu spiral(euler spiral) % t = -2.5:0.005:2.5; len= length(t); x = zeros(1,len); y = zeros(1,len); %variants of cornu spiral,last one t.^2 is basic liststr = {'(-0.6*t+0.2*t.^5-0.1*t.^3))'; '(t.^7-t.^3-t-2))'; '(t.^5-3*t.^3-t))'; '(t.^7-4*t))'; '(4*t.^5+t.^3-4*t))'; '(t.^7-t.^5-2*t-12))'; '(t.^7-t.^5-2*t.^3-1))'; '(t.^3+t-2))'; '(t.^3-2.335*t))'; '(t.^3-4.27*t))'; '(9*t.^5-18*t.^3+5*t))'; '(t.^2))'; '(t.^5+0.6*t-4*t.^3))'; '(-t.^5-0.6*t+3*t.^3))'; '(-t.^7+0.1*t-3*t))'; '(t.^3-2*t.^5+0.3*t.^9-t))'; '(t.^3-0.2*t.^5+1.5*t))'; '(t.^3-0.1*t.^7+1.5*t))'}; [option_num,v] = listdlg('PromptString','Select',... 'SelectionMode','single',... 'ListString',liststr); if v==1 a = liststr{option_num}; h_wait = waitbar(0,'Please wait...'); s1 = inline(['sin(0.5*pi*' a]); s2 = inline(['cos(0.5*pi*' a]); for n = 2:len x(n) = x(n-1)+quad(s1,t(n-1),t(n)); %evaluation of fresnel integral y(n) = y(n-1)+quad(s2,t(n-1),t(n)); %evaluation of fresnel integral waitbar(n/len,h_wait); end close(h_wait) %simple plot plot(y,x,'LineWidth',2,'Color',[0 0 0.7]); legend([liststr{option_num}]) axis off,box off daspect([1 1 1]) %tube plot figure z = ones(size(t)); verts = {[5*y' 5*x' z']}; daspect([1 1 1]) h1 = streamtube(verts,0.2); set(h1,'Facecolor',[rand(1,3)],'edgecolor','none'); camlight headlight; lighting gouraud axis tight view(-59,21) zoom(1.7) %ribbon plot figure twistangle = {t/20000}; width=0.3; verts = {[5*y' 5*x' z']}; daspect([1 1 1]) h2 = streamribbon(verts,twistangle,width); set(h2,'Facecolor',[rand(1,3)],'edgecolor','none'); camlight headlight; camlight(10,20); camlight(100,40); camlight(51,50); lighting phong material metal axis tight view(-59,21) end