早教吧作业答案频道 -->其他-->
请教matlab变化圆心画圆具体函数如下:R0=100;r=27.5;L1=180;L2=105;du=180/pi;wt3=0:1:75;Y0=(acos((L1^2+L2^2-(R0+r)^2)/(2*L1*L2)))*du;Y1=23.9123*(pi*wt3/75-0.5*sin(2*pi*wt3/75))/pi;Y=Y0+Y1;R=sqrt(L1^2+L2^2-2*L1*L2*cos(Y/du));%以上为公
题目详情
请教matlab变化圆心画圆
具体函数如下:
R0=100;
r=27.5;
L1=180;
L2=105;
du=180/pi;
wt3=0:1:75;
Y0=(acos((L1^2+L2^2-(R0+r)^2)/(2*L1*L2)))*du;
Y1=23.9123*(pi*wt3/75-0.5*sin(2*pi*wt3/75))/pi;
Y=Y0+Y1;
R=sqrt(L1^2+L2^2-2*L1*L2*cos(Y/du));
%以上为公式
x=zeros(1,360);
y=zeros(1,360);
m=zeros(1,360);
n=zeros(1,360);
%以上为缩小范围
for i=0:1:75 %画曲线
x(i+1)=R(i+1)*cos(i*pi/180.0);
y(i+1)=R(i+1)*sin(i*pi/180.0);
for t=0:1:2*pi %画圆
m=x(i+1)+r*cos(t);
n=y(i+1)+r*sin(t);
plot(m,n,'r')
end
end
plot(x,y,'r')
axis equal
hold on
程序运行后是个曲线,我想显示出曲线上每隔i=1,以(x,y)为圆心,r为半径画圆,这样会有76个圆,为什么显示不出来呢,我哪里出错了?
具体函数如下:
R0=100;
r=27.5;
L1=180;
L2=105;
du=180/pi;
wt3=0:1:75;
Y0=(acos((L1^2+L2^2-(R0+r)^2)/(2*L1*L2)))*du;
Y1=23.9123*(pi*wt3/75-0.5*sin(2*pi*wt3/75))/pi;
Y=Y0+Y1;
R=sqrt(L1^2+L2^2-2*L1*L2*cos(Y/du));
%以上为公式
x=zeros(1,360);
y=zeros(1,360);
m=zeros(1,360);
n=zeros(1,360);
%以上为缩小范围
for i=0:1:75 %画曲线
x(i+1)=R(i+1)*cos(i*pi/180.0);
y(i+1)=R(i+1)*sin(i*pi/180.0);
for t=0:1:2*pi %画圆
m=x(i+1)+r*cos(t);
n=y(i+1)+r*sin(t);
plot(m,n,'r')
end
end
plot(x,y,'r')
axis equal
hold on
程序运行后是个曲线,我想显示出曲线上每隔i=1,以(x,y)为圆心,r为半径画圆,这样会有76个圆,为什么显示不出来呢,我哪里出错了?
▼优质解答
答案和解析
第一种和第二种是动态的,第三种是静态的
1、3D版
clear all;
clc;
R0=100;
r=27.5;
L1=180;
L2=105;
du=180/pi;
wt3=0:1:75;
Y0=(acos((L1^2+L2^2-(R0+r)^2)/(2*L1*L2)))*du;
Y1=23.9123*(pi*wt3/75-0.5*sin(2*pi*wt3/75))/pi;
Y=Y0+Y1;
R=sqrt(L1^2+L2^2-2*L1*L2*cos(Y/du));
%以上为公式
%hold on;% 加上hold on使得所有图形都在一张图上,按照matlab顺序执行的特点,hold on不能放在多重绘图语句的最后面,一般放在第一个绘图语句的前面或者第一第二个语句的中间都行,如:a注释所示
%axis equal% 是一种对当前图形句柄的修正命令,放在任意位置都行,注意只对当前图形句柄有效,对于动态图,其用法跟hold on类似
x=zeros(1,76);% 删除m,n的预开辟内存空间的语句,因为他们的长度是由0:0.1:2*pi的长度决定
y=zeros(1,76);% x,y的长度由0:75决定,所以为76
%以上为缩小范围
for i=0:1:75 %画曲线
x(i+1)=R(i+1)*cos(i*pi/180.0);
y(i+1)=R(i+1)*sin(i*pi/180.0);
k=1;
for t=0:0.1:2*pi %画圆
m(k)=x(i+1)+r*cos(t);
n(k)=y(i+1)+r*sin(t);
k=k+1;
end
z=repmat(i,1,k-1);
plot3(m,n,z,'r');
axis([-20 220 -40 200 0 78]);
hold on
plot3(x(1:i+1),y(1:i+1),0:i,'b');
pause(0.1);
% 将绘图语句放在循环外
% hold on % a 如:把hold on语句放在此处也行
end
2、2D版
clear all;
clc;
R0=100;
r=27.5;
L1=180;
L2=105;
du=180/pi;
wt3=0:1:75;
Y0=(acos((L1^2+L2^2-(R0+r)^2)/(2*L1*L2)))*du;
Y1=23.9123*(pi*wt3/75-0.5*sin(2*pi*wt3/75))/pi;
Y=Y0+Y1;
R=sqrt(L1^2+L2^2-2*L1*L2*cos(Y/du));
%以上为公式
hold on;% 加上hold on使得所有图形都在一张图上,按照matlab顺序执行的特点,hold on不能放在多重绘图语句的最后面,一般放在第一个绘图语句的前面或者第一第二个语句的中间都行,如:a注释所示
axis equal% 是一种对当前图形句柄的修正命令,放在任意位置都行,注意只对当前图形句柄有效,对于动态图,其用法跟hold on类似
x=zeros(1,76);% 删除m,n的预开辟内存空间的语句,因为他们的长度是由0:0.1:2*pi的长度决定
y=zeros(1,76);% x,y的长度由0:75决定,所以为76
%以上为缩小范围
for i=0:1:75 %画曲线
x(i+1)=R(i+1)*cos(i*pi/180.0);
y(i+1)=R(i+1)*sin(i*pi/180.0);
k=1;
for t=0:0.1:2*pi %画圆
m(k)=x(i+1)+r*cos(t);
n(k)=y(i+1)+r*sin(t);
k=k+1;
end
plot(m,n,'r');
axis([-20 220 -40 200]);
hold on
plot(x(1:i+1),y(1:i+1),'b');
pause(0.1);
% 将绘图语句放在循环外
% hold on % a 如:把hold on语句放在此处也行
end
3、静态2D版
clear all;
clc;
R0=100;
r=27.5;
L1=180;
L2=105;
du=180/pi;
wt3=0:1:75;
Y0=(acos((L1^2+L2^2-(R0+r)^2)/(2*L1*L2)))*du;
Y1=23.9123*(pi*wt3/75-0.5*sin(2*pi*wt3/75))/pi;
Y=Y0+Y1;
R=sqrt(L1^2+L2^2-2*L1*L2*cos(Y/du));
%以上为公式
hold on;% 加上hold on使得所有图形都在一张图上,按照matlab顺序执行的特点,hold on不能放在多重绘图语句的最后面,一般放在第一个绘图语句的前面或者第一第二个语句的中间都行,如:a注释所示
axis equal% 是一种对当前图形句柄的修正命令,放在任意位置都行,注意只对当前图形句柄有效,对于动态图,其用法跟hold on类似
x=zeros(1,76);% 删除m,n的预开辟内存空间的语句,因为他们的长度是由0:0.1:2*pi的长度决定
y=zeros(1,76);% x,y的长度由0:75决定,所以为76
%以上为缩小范围
for i=0:1:75 %画曲线
x(i+1)=R(i+1)*cos(i*pi/180.0);
y(i+1)=R(i+1)*sin(i*pi/180.0);
k=1;
for t=0:0.1:2*pi %画圆
m(k)=x(i+1)+r*cos(t);
n(k)=y(i+1)+r*sin(t);
k=k+1;
end
plot(m,n,'r');
axis([-20 220 -40 200]);
hold on
plot(x(1:i+1),y(1:i+1),'b');
% 将绘图语句放在循环外
% hold on % a 如:把hold on语句放在此处也行
end
1、3D版
clear all;
clc;
R0=100;
r=27.5;
L1=180;
L2=105;
du=180/pi;
wt3=0:1:75;
Y0=(acos((L1^2+L2^2-(R0+r)^2)/(2*L1*L2)))*du;
Y1=23.9123*(pi*wt3/75-0.5*sin(2*pi*wt3/75))/pi;
Y=Y0+Y1;
R=sqrt(L1^2+L2^2-2*L1*L2*cos(Y/du));
%以上为公式
%hold on;% 加上hold on使得所有图形都在一张图上,按照matlab顺序执行的特点,hold on不能放在多重绘图语句的最后面,一般放在第一个绘图语句的前面或者第一第二个语句的中间都行,如:a注释所示
%axis equal% 是一种对当前图形句柄的修正命令,放在任意位置都行,注意只对当前图形句柄有效,对于动态图,其用法跟hold on类似
x=zeros(1,76);% 删除m,n的预开辟内存空间的语句,因为他们的长度是由0:0.1:2*pi的长度决定
y=zeros(1,76);% x,y的长度由0:75决定,所以为76
%以上为缩小范围
for i=0:1:75 %画曲线
x(i+1)=R(i+1)*cos(i*pi/180.0);
y(i+1)=R(i+1)*sin(i*pi/180.0);
k=1;
for t=0:0.1:2*pi %画圆
m(k)=x(i+1)+r*cos(t);
n(k)=y(i+1)+r*sin(t);
k=k+1;
end
z=repmat(i,1,k-1);
plot3(m,n,z,'r');
axis([-20 220 -40 200 0 78]);
hold on
plot3(x(1:i+1),y(1:i+1),0:i,'b');
pause(0.1);
% 将绘图语句放在循环外
% hold on % a 如:把hold on语句放在此处也行
end
2、2D版
clear all;
clc;
R0=100;
r=27.5;
L1=180;
L2=105;
du=180/pi;
wt3=0:1:75;
Y0=(acos((L1^2+L2^2-(R0+r)^2)/(2*L1*L2)))*du;
Y1=23.9123*(pi*wt3/75-0.5*sin(2*pi*wt3/75))/pi;
Y=Y0+Y1;
R=sqrt(L1^2+L2^2-2*L1*L2*cos(Y/du));
%以上为公式
hold on;% 加上hold on使得所有图形都在一张图上,按照matlab顺序执行的特点,hold on不能放在多重绘图语句的最后面,一般放在第一个绘图语句的前面或者第一第二个语句的中间都行,如:a注释所示
axis equal% 是一种对当前图形句柄的修正命令,放在任意位置都行,注意只对当前图形句柄有效,对于动态图,其用法跟hold on类似
x=zeros(1,76);% 删除m,n的预开辟内存空间的语句,因为他们的长度是由0:0.1:2*pi的长度决定
y=zeros(1,76);% x,y的长度由0:75决定,所以为76
%以上为缩小范围
for i=0:1:75 %画曲线
x(i+1)=R(i+1)*cos(i*pi/180.0);
y(i+1)=R(i+1)*sin(i*pi/180.0);
k=1;
for t=0:0.1:2*pi %画圆
m(k)=x(i+1)+r*cos(t);
n(k)=y(i+1)+r*sin(t);
k=k+1;
end
plot(m,n,'r');
axis([-20 220 -40 200]);
hold on
plot(x(1:i+1),y(1:i+1),'b');
pause(0.1);
% 将绘图语句放在循环外
% hold on % a 如:把hold on语句放在此处也行
end
3、静态2D版
clear all;
clc;
R0=100;
r=27.5;
L1=180;
L2=105;
du=180/pi;
wt3=0:1:75;
Y0=(acos((L1^2+L2^2-(R0+r)^2)/(2*L1*L2)))*du;
Y1=23.9123*(pi*wt3/75-0.5*sin(2*pi*wt3/75))/pi;
Y=Y0+Y1;
R=sqrt(L1^2+L2^2-2*L1*L2*cos(Y/du));
%以上为公式
hold on;% 加上hold on使得所有图形都在一张图上,按照matlab顺序执行的特点,hold on不能放在多重绘图语句的最后面,一般放在第一个绘图语句的前面或者第一第二个语句的中间都行,如:a注释所示
axis equal% 是一种对当前图形句柄的修正命令,放在任意位置都行,注意只对当前图形句柄有效,对于动态图,其用法跟hold on类似
x=zeros(1,76);% 删除m,n的预开辟内存空间的语句,因为他们的长度是由0:0.1:2*pi的长度决定
y=zeros(1,76);% x,y的长度由0:75决定,所以为76
%以上为缩小范围
for i=0:1:75 %画曲线
x(i+1)=R(i+1)*cos(i*pi/180.0);
y(i+1)=R(i+1)*sin(i*pi/180.0);
k=1;
for t=0:0.1:2*pi %画圆
m(k)=x(i+1)+r*cos(t);
n(k)=y(i+1)+r*sin(t);
k=k+1;
end
plot(m,n,'r');
axis([-20 220 -40 200]);
hold on
plot(x(1:i+1),y(1:i+1),'b');
% 将绘图语句放在循环外
% hold on % a 如:把hold on语句放在此处也行
end
看了 请教matlab变化圆心画圆...的网友还看了以下:
1.因为l1⊥l3,l2⊥l3,所以l1⊥l2()2.因为∠1∠2互余,所以∠1+∠2=90°() 2020-05-14 …
请教matlab变化圆心画圆具体函数如下:R0=100;r=27.5;L1=180;L2=105; 2020-05-16 …
灯泡L1和L2上标有“36V12W"和“36V8W"的字样,现将L1和L2并联在电压是27伏的点路 2020-05-22 …
已知直线l1,l2的解析式分别是y=k1x+3,y=k2x-2,其中l1与x轴的交点为A(二分之三 2020-06-02 …
MATLAB求解符号线性方程组时,结果误差很大?symsF1F2F3F4F5C1C2C3C4EID 2020-06-04 …
直线方程的概念与直线的斜率直线l1和l2都过点M,l1的倾斜角为a1 l2的倾斜角为a2,下列四个 2020-06-27 …
则l0+l1+l2=0,否则η0将是Ax=0的解,矛盾什么意思啊1.设η0是非齐次线性方程组Ax= 2020-07-31 …
标有“口V口W”、“口V5W”的灯泡L1和L2,串联在某电源上.设灯丝电阻不变,则()A.通过灯L1 2020-11-04 …
kQ1Q2/L1^2=kQ1Q3/(L1+L2)^2kQ2Q3/L2^2=kQ1Q3/(L1+L2) 2020-11-07 …
如图所示用剪刀剪断物体,已知剪断物体需要120N的力.图甲L1:L2=2:1,则在手柄处至少应施加N 2020-11-28 …