从图形来看,一共n个同心圆,外面大圆n等分,然后从每个等分点作所有同心圆的两条切线
如果用极坐标表示,可以很容易求解切点,直接上画图的代码
n = 10 %同心圆数量m = 40 % 等分点数
R = 1 % 外圆半径
s = 0:0.01*pi:2*pi % 控制圆的光滑程度的极坐标角度
t = 0:2*pi/m:2*pi % 等分点极坐标角度
x0 = R*cos(t)y0 = R*sin(t) % 等分点直角坐标
color=['r','g','c','k','m','y'] % 画图颜色
lc = length(color) % 颜色数组长度,超出后从头开始
for i = 1:n % 开始同心圆循环
r = R/n*i % 当前同心圆半径
a = acos(r/R) % 切线与圆心线角度(弧度制)
x1 = r*cos(t-a)y1 = r*sin(t-a) % 任意等分点相对当前同心圆的第一个切点坐标
x2 = r*cos(t+a)y2 = r*sin(t+a) % 任意等分点相对当前同心圆的第二个切点坐标
plot(r*cos(s),r*sin(s),color(mod(i,lc)+1))hold on % 画同心圆
for j = 1:m % 对每一个等分点循环
plot([x0(j),x1(j)],[y0(j),y1(j)],color(mod(i,lc)+1))hold on % 第一条切线
plot([x0(j),x2(j)],[y0(j),y2(j)],color(mod(i,lc)+1))hold on % 第二条切线
end
end
axis equal % 横纵坐标轴比例一致
圆环:function yuanhuan(R,r)
syms u v
ezmesh((R+r*cos(u))*cos(v),(R+r*cos(u))*sin(v),r*sin(u))
axis equal
例子
yuanhuan(6,2)
圆盘:
function yuanpan(R,r)
theta=linspace(0,2*pi,90)ph=linspace(r,R,30)
[t,p]=meshgrid(theta,ph)
r=t*0
[x,y,z]=pol2cart(t,p,r)
mesh(x,y,z)
axis equal
例子
yuanpan(5,2)
利用圆环1的参数方程:x=2*(8+cos(v))*cos(u),y=2*(8+cos(v))*sin(u)+10,z=4*sin(v)和圆环2的参数方程:x=4*sin(v),y=2*(8+cos(v))*sin(u),z=2*(8+cos(v))*cos(u),再利用surf和mesh绘制其三维曲面。实现代码及运行结果。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)