Matlab中圆台绘制的实现

作者在 2008-12-19 16:34:34 发布以下内容
 function [Cone,EndPlate1,EndPlate2] = Cone(X1,X2,R,n,cyl_color,closed,lines)
%
%see more information go to www.matlabsky.cn
% This function constructs a cylinder connecting two center points
%
% Usage :
% [Cone,EndPlate1,EndPlate2] = Cone(X1,X2,R,n,cyl_color,closed,lines)
%   
% Cone-------Handle of the cone
% EndPlate1------Handle of the Starting End plate
% EndPlate2------Handle of the Ending End plate
% X1 and X2 are the 3x1 vectors of the two points
% R is the radius of the cylinder/cone R(1) = start radius, R(2) = end radius
% n is the no. of elements on the cylinder circumference (more--> refined)
% cyl_color is the color definition like 'r','b',[0.52 0.52 0.52]
% closed=1 for closed cylinder or 0 for hollow open cylinder
% lines=1 for displaying the line segments on the cylinder 0 for only
% surface
%
% Typical Inputs
% X1=[10 10 10];
% X2=[35 20 40];
% r=[1 5];
% n=20;
% cyl_color='b';
% closed=1;
%
% NOTE: There is a MATLAB function "cylinder" to revolve a curve about an
% axis. This "Cylinder" provides more customization like direction and etc

% Calculating the length of the Cone
length_cyl=norm(X2-X1);
% Creating 2 circles in the YZ plane
t=linspace(0,2*pi,n)';
xa2=R(1)*cos(t);
xa3=R(1)*sin(t);
xb2=R(2)*cos(t);
xb3=R(2)*sin(t);
% Creating the points in the X-Direction
x1=[0 length_cyl];
% Creating (Extruding) the cylinder points in the X-Directions
xx1=repmat(x1,length(xa2),1);
xx2=[xa2 xb2];%xx2=repmat(x2,1,2);
xx3=[xa3 xb3];%xx3=repmat(x3,1,2);
% Drawing two filled cirlces to close the cylinder
if closed==1
    hold on
    EndPlate1=fill3(xx1(:,1),xx2(:,1),xx3(:,1),'r');
    EndPlate2=fill3(xx1(:,2),xx2(:,2),xx3(:,2),'r');
end
% Plotting the cylinder along the X-Direction with required length starting
% from Origin
Cone=mesh(xx1,xx2,xx3);
% Defining Unit vector along the X-direction
unit_Vx=[1 0 0];
% Calulating the angle between the x direction and the required direction
% of Cone through dot product
angle_X1X2=acos( dot( unit_Vx,(X2-X1) )/( norm(unit_Vx)*norm(X2-X1)) )*180/pi;
% Finding the axis of rotation (single rotation) to roate the Cone in
% X-direction to the required arbitrary direction through cross product
axis_rot=cross([1 0 0],(X2-X1) );
% Rotating the plotted Cone and the end plate circles to the required
% angles
if angle_X1X2~=0 % Rotation is not needed if required direction is along X
    rotate(Cone,axis_rot,angle_X1X2,[0 0 0])
    if closed==1
        rotate(EndPlate1,axis_rot,angle_X1X2,[0 0 0])
        rotate(EndPlate2,axis_rot,angle_X1X2,[0 0 0])
    end
end
% Till now Cone has only been aligned with the required direction, but
% position starts from the origin. so it will now be shifted to the right
% position
if closed==1
    set(EndPlate1,'XData',get(EndPlate1,'XData')+X1(1))
    set(EndPlate1,'YData',get(EndPlate1,'YData')+X1(2))
    set(EndPlate1,'ZData',get(EndPlate1,'ZData')+X1(3))
   
    set(EndPlate2,'XData',get(EndPlate2,'XData')+X1(1))
    set(EndPlate2,'YData',get(EndPlate2,'YData')+X1(2))
    set(EndPlate2,'ZData',get(EndPlate2,'ZData')+X1(3))
end
set(Cone,'XData',get(Cone,'XData')+X1(1))
set(Cone,'YData',get(Cone,'YData')+X1(2))
set(Cone,'ZData',get(Cone,'ZData')+X1(3))
% Setting the color to the Cone and the end plates
set(Cone,'AmbientStrength',1,'FaceColor',cyl_color,'FaceLighting','gouraud');%,'EdgeColor','none')
if closed==1
    set([EndPlate1 EndPlate2],'AmbientStrength',1,'FaceColor',cyl_color,'FaceLighting','gouraud');%,'EdgeColor','none')
else
    EndPlate1=[];
    EndPlate2=[];
end
% If lines are not needed making it disapear
if lines==0
    set(Cone,'EdgeAlpha',0)
end
%shading faceted % faceted flat interp;
%camlight;
%light;
%lighting gouraud; %flat gouraud phong none
material shiny; %shiny dull metal
%colormap(bone)
%camlight  headlight;
%light('Style','local','Position',[720 0 500]);
%light('Style','local','Position',[0 480 500]);
源码分享 | 阅读 5848 次
文章评论,共1条
matlabsky(作者)
2009-03-14 16:29
1
薛定宇《高等应用数学问题的MATLAB求解》http://www.matlabsky.com/thread-177-1-1.html<br />
樊京《MATLAB控制系统应用与实例》http://www.matlabsky.com/thread-324-1-1.html<br />
李南南《MATLAB 7简明教程》http://www.matlabsky.com/thread-321-1-1.html<br />
sandy《Matlab与数值分析简明教程》http://www.matlabsky.com/thread-320-1-1.html<br />
满晓宇《战胜MATLAB必做练习50题》http://www.matlabsky.com/thread-319-1-1.html<br />
宋新山《Matlab在环境科学中的应用》http://www.matlabsky.com/thread-303-1-1.html<br />
R. S. Schestowitz《MATLAB GUI Tips》(Matlab GUI编程技巧) http://www.matlabsky.com/thread-275-1-1.html<br />
L. F. Shampine《Solving ODEs with MATLAB》http://www.matlabsky.com/thread-215-1-1.html<br />
周胜军《Matlab web server 开发文档》http://www.matlabsky.com/thread-214-1-1.html<br />
郭毓《MATLAB与SIMULINK基础》讲义--南京理工大学自动化系http://www.matlabsky.com/thread-213-1-1.html<br />
《Matlab在数学规划中的应用》http://www.matlabsky.com/thread-212-1-1.html<br />
《Matlab关于微分方程的解法》http://www.matlabsky.com/thread-211-1-1.html<br />
《先进算法讲义》(中科大) http://www.matlabsky.com/thread-210-1-1.html<br />
乌旭《Matlab基础》实验讲义---大连海事大学http://www.matlabsky.com/thread-209-1-2.html<br />
《Matlab详细手册(web版)》讲义 http://www.matlabsky.com/thread-208-1-2.html<br />
《simulink建模仿真》讲义http://www.matlabsky.com/thread-207-1-2.html<br />
《精通MATLAB综合辅导与指南例程》讲义http://www.matlabsky.com/thread-206-1-2.html<br />
《科学计算与MATLAB语言》讲义 http://www.matlabsky.com/thread-204-1-2.html<br />
《MATLAB 程式设计与应用》讲义(by 张智星)http://www.matlabsky.com/thread-203-1-2.html<br />
《Matlab6.0数学手册》pdf版(by Archan)http://www.matlabsky.com/thread-202-1-2.html<br />
《MATLAB实验仿真与算法设计》教学课件(谢红梅) http://www.matlabsky.com/thread-201-1-2.html<br />
 冈萨雷斯《数字图像处理》中文版http://www.matlabsky.com/thread-180-1-2.html<br />
 雷英杰《MATLAB 遗传算法工具箱与应用》http://www.matlabsky.com/thread-200-1-2.html<br />
 Stephen J.Chapman《Matlab编程(中文版)》http://www.matlabsky.com/thread-141-1-2.html<br />
 Mohand Mokhtari《MATLAB与SIMULINK工程应用》http://www.matlabsky.com/thread-199-1-2.html<br />
王立宁《Matlab与通信仿真》http://www.matlabsky.com/thread-198-1-2.html<br />
苏金明《matlab7.0使用指南》http://www.matlabsky.com/thread-197-1-2.html<br />
苏金明《Matlab图形图像》http://www.matlabsky.com/thread-196-1-2.html<br />
薛定宇《基于MATLABSimulink的系统仿真技术与应用》http://www.matlabsky.com/thread-195-1-2.html<br />
李显洪《Matlab7.x界面设计与编译技巧》http://www.matlabsky.com/thread-194-1-2.html<br />
飞思科技《MATLAB 7辅助信号处理技术与应用》http://www.matlabsky.com/thread-193-1-2.html<br />
苏金明《Matlab工具箱应用》http://www.matlabsky.com/thread-192-1-2.html<br />
何强《Matlab扩展编程》http://www.matlabsky.com/thread-191-1-3.html<br />
何衍庆《控制系统分析、设计和应用---MATLAB语言的应用》http://www.matlabsky.com/thread-190-1-3.html<br />
李国勇《智能控制及其Matlab实现》http://www.matlabsky.com/thread-189-1-3.html<br />
韩利竹《Matlab电子仿真与应用(第二版)》http://www.matlabsky.com/thread-188-1-3.html<br />
程卫国《Matlab5.3精要、编程及高级应用》http://www.matlabsky.com/thread-187-1-3.html<br />
苏金明《Matlab高级编程》 http://www.matlabsky.com/thread-186-1-3.html<br />
飞思科技《MATLAB6.5应用接口编程》 http://www.matlabsky.com/thread-185-1-3.html<br />
飞思科技《MATLAB6.5辅助小波分析与应用》 http://www.matlabsky.com/thread-184-1-3.html<br />
欧阳黎明《MATLAB控制系统设计》 http://www.matlabsky.com/thread-183-1-3.html<br />
沈辉 《精通simulink系统仿真与控制》 http://www.matlabsky.com/thread-182-1-3.html<br />
网冠科技《MATLAB 6.0时尚创作百例》http://www.matlabsky.com/thread-181-1-3.html<br />
王正林《精通Matlab7》 http://www.matlabsky.com/thread-179-1-3.html<br />
钟麟《Matlab仿真技术与应用教程》http://www.matlabsky.com/thread-178-1-3.html<br />
贾秋玲《基于MATLAB 7.X SIMULINK/STATEFLOW系统仿真/分析及设计》http://www.matlabsky.com/thread-176-1-3.html<br />
陈继光 《Matlab与自适应神经网络模糊推理系统》 http://www.matlabsky.com/thread-175-1-3.html<br />
李强《MATLAB数据处理与应用》 http://www.matlabsky.com/thread-174-1-3.html<br />
闻新《Matlab模糊逻辑工具箱的分析与应用》 http://www.matlabsky.com/thread-173-1-3.html<br />
苏金明《Matlab工程数学》http://www.matlabsky.com/thread-172-1-3.html<br />
飞思科技《Matlab7辅助控制系统设计与仿真》 http://www.matlabsky.com/thread-171-1-3.html<br />
陈杰《Matlab宝典》http://www.matlabsky.com/thread-170-1-3.html<br />
邹鲲《MATLAB6.x信号处理》 http://www.matlabsky.com/thread-169-1-4.html<br />
张志涌《掌握和精通Matlab》 http://www.matlabsky.com/thread-168-1-4.html<br />
张志涌《精通matlab6.5 (北航)》 http://www.matlabsky.com/thread-167-1-4.html<br />
施晓红《精通GUI图形界面编辑》http://www.matlabsky.com/thread-160-1-4.html<br />
蒲俊《Matlab工程数学解题指导 》 http://www.matlabsky.com/thread-159-1-4.html<br />
蒲俊《MATLAB 6.0数学手册》http://www.matlabsky.com/thread-158-1-4.html<br />
陆君安《偏微分方程的MATLAB解法》http://www.matlabsky.com/thread-157-1-4.html<br />
刘宏友《MATLAB6.x符号运算及其应用》http://www.matlabsky.com/thread-156-1-4.html<br />
梁宏《信号与系统分析及MATLAB实现》http://www.matlabsky.com/thread-155-1-4.html<br />
李涛《Matlab工具箱应用指南——应用数学篇》 http://www.matlabsky.com/thread-154-1-4.html<br />
杨高波《精通matlab7.0混合编程》 http://www.matlabsky.com/thread-153-1-4.html<br />
精锐创作组《MATLAB 6.0科学运算完整解决方案》 http://www.matlabsky.com/thread-152-1-4.html<br />
王能超《计算方法:算法设计及其matlab实现》 http://www.matlabsky.com/thread-151-1-4.html<br />
黄文梅《信号分析与处理—MATLAB语言及应用》 http://www.matlabsky.com/thread-150-1-4.html<br />
胡良剑《数学实验:使用MATLAB》http://www.matlabsky.com/thread-149-1-5.html<br />
飞思科技《MATLAB6.5辅助优化计算与设计》 http://www.matlabsky.com/thread-148-1-5.html<br />
飞思科技《MATLAB6.5辅助图像处理》http://www.matlabsky.com/thread-147-1-5.html<br />
陈在平《控制系统计算机仿真与CAD—MATLAB语言应用》http://www.matlabsky.com/thread-146-1-5.html<br />
陈亚勇《MATLAB信号处理详解》http://www.matlabsky.com/thread-145-1-5.html<br />
陈怀琛《MATLAB及其在理工课程中的应用指南》http://www.matlabsky.com/thread-144-1-5.html<br />
车晴《电子系统仿真与MATLAB》http://www.matlabsky.com/thread-143-1-5.html<br />
Steven T. Karris《Signals and Systems(Second Edition)》http://www.matlabsky.com/thread-142-1-5.html<br />
Steven T. Karris《Numerical Analysis Using MATLAB and Spreadsheets》http://www.matlabsky.com/thread-140-1-5.html<br />
Nakamura 梁恒译《科学计算引论--基于MATLAB的数值分析》http://www.matlabsky.com/thread-139-1-5.html<br />
Magrab Edward《MATLAB原理与工程应用》http://www.matlabsky.com/thread-138-1-5.html<br />
Vinay K.Ingle《数字信号处理及其Matlab实现》 http://www.matlabsky.com/thread-137-1-5.html<br />
David McMahon 《Matlab揭秘》http://www.matlabsky.com/thread-136-1-5.html<br />
陆君安《偏微分方程的Matlab解法》http://www.matlabsky.com/thread-135-1-5.html<br />
张国良《模糊控制及其Matlab应用》http://www.matlabsky.com/thread-134-1-5.html<br />
丛爽《面向Matlab工具箱的神经网络理论与应用(第2版)》http://www.matlabsky.com/thread-133-1-5.html<br />
陈仲生 《基于matlab7.0的统计信息处理》http://www.matlabsky.com/thread-132-1-5.html<br />
王正林《过程控制与Simulink应用》 http://www.matlabsky.com/thread-131-1-5.html<br />
施阳《MATLAB语言精要及动态仿真工具SIMULINK》http://www.matlabsky.com/thread-130-1-5.html<br />
王正林《Matlab Simulink与控制系统仿真》 http://www.matlabsky.com/thread-129-1-5.html<br />
孙亮《MATLAB语言与控制系统仿真》http://www.matlabsky.com/thread-128-1-6.html<br />
楼顺天《基于MATLAB 的系统分析与设计——模糊系统》http://www.matlabsky.com/thread-127-1-6.html<br />
王全友《Matlab在工程数学上的应用》http://www.matlabsky.com/thread-126-1-6.html<br />
龚妙昆《现代控制引论教程 Matlab辅助实验》http://www.matlabsky.com/thread-125-1-6.html<br />
Matlab官方教程《Learn Matlab7.0》 http://www.matlabsky.com/thread-124-1-6.html<br />
康永《MATLAB语言与控制系统仿真》 http://www.matlabsky.com/thread-123-1-6.html<br />
Matlab官方教程《MATLAB Start》http://www.matlabsky.com/thread-122-1-6.html<br />
Dave Anderson《Artificial Neural Networks_ Technology》(人工神经网络技术) http://www.matlabsky.com/thread-121-1-6.html<br />
仿真科技论坛《Matlab与VC混合编程》 http://www.matlabsky.com/thread-119-1-6.html<br />
《Matlab神经网络工具箱应用简介》 http://www.matlabsky.com/thread-118-1-6.html<br />
Richard Johnson《MATLAB 编程风格指南》 http://www.matlabsky.com/thread-117-1-6.html<br />
聚类算法综述 http://www.matlabsky.com/thread-93-1-6.html
游客请输入验证码
浏览135102次