function main()
r=8; % 定义圆的半径
line_angle=30; % 定义直线的倾角,角度制(-90°至90°)
line_distance=1; %定义直线的间距
figure
set(gcf,'Unit','normalized')
set(gca,'Position',[0 0 1 1])
hold on
plot([-r/2,r/2],[0,0],'Color','w','LineWidth',2) %绘制十字中心线
plot([0,0],[-r/2,r/2],'Color','w','LineWidth',2) %绘制十字中心线
axis([-10 10 -10 10]) % 设置x轴和y轴的坐标范围
axis equal
set(gcf,'Color','black') % 设置背景为黑色
set(gca,'Color','black') % 设置背景为黑色
set(gcf,'InvertHardcopy','off')
print('-dbmp',gcf) % 保存成bmp图片
figure
set(gcf,'Unit','normalized')
set(gca,'Position',[0 0 1 1])
circle_plot(r,line_angle,line_distance) % 绘制第一张图
axis([-10 10 -10 10]) % 设置x轴和y轴的坐标范围
set(gcf,'Color','black') % 设置背景为黑色
set(gca,'Color','black') % 设置背景为黑色
set(gcf,'InvertHardcopy','off')
print('-dbmp',gcf) % 保存成bmp图片
figure
set(gcf,'Unit','normalized')
set(gca,'Position',[0 0 1 1])
circle_plot(r,line_angle,line_distance) % 绘制第二张图
circle_plot(r,line_angle-90,line_distance) % 绘制出垂直的斜线
axis([-10 10 -10 10]) % 设置x轴和y轴的坐标范围
set(gcf,'Color','black') % 设置背景为黑色
set(gca,'Color','black') % 设置背景为黑色
set(gcf,'InvertHardcopy','off')
print('-dbmp',gcf) % 保存成bmp图片
figure
set(gcf,'Unit','normalized')
set(gca,'Position',[0 0 1 1])
circle_plot(r,line_angle-90,line_distance) % 绘制第三张图,垂直的斜线
axis([-10 10 -10 10]) % 设置x轴和y轴的坐标范围
set(gcf,'Color','black') % 设置背景为黑色
set(gca,'Color','black') % 设置背景为黑色
set(gcf,'InvertHardcopy','off')
print('-dbmp',gcf) % 保存成bmp图片
msgbox('MATLAB编程答疑,请加QQ: 1530497909','MATLAB答疑','help')
web http://url.cn/NSFcAs -browser
end
function circle_plot(r,line_angle,line_distance)
% 该函数用于绘制圆形以及斜线
% r:定义半径
% line_angle:定义直线角度
% line_distance:定义直线距离
if (line_angle==90)||(line_angle==-90) % 如果直线的倾角为90°或者-90°
theta=0:0.001:2*pi;
x=r*cos(theta);
y=r*sin(theta);
plot(x,y,'Color','w','LineWidth',2) % 绘制圆形
axis equal
hold on
for x=-r:line_distance:r % 每条斜线与圆的交点x坐标
y1=sqrt(r^2-x^2); % 计算出每条斜线与圆的交点y坐标
y2=-sqrt(r^2-x^2); % 计算出每条斜线与圆的交点y坐标
plot([x,x],[y1,y2],'Color','w','LineWidth',2) % 绘制斜线
end
else % 直线倾角不为90°或者-90°
theta=0:0.005:2*pi;
x=r*cos(theta);
y=r*sin(theta);
plot(x,y,'Color','w','LineWidth',2) % 绘制圆形
axis equal
hold on
line_angle=deg2rad(line_angle);
k=tan(line_angle);
max_b=r/abs(sin(line_angle-pi/2));
line_distance=line_distance/(abs(sin(line_angle-pi/2)));
for b=-max_b:line_distance:max_b
A=k^2+1;
B=2*k*b;
C=b^2-r^2;
x1=(-B+sqrt(B^2-4*A*C))/(2*A); % 计算出每条斜线与圆的交点x坐标(求解一元二次方程得到)
x2=(-B-sqrt(B^2-4*A*C))/(2*A); % 计算出每条斜线与圆的交点x坐标(求解一元二次方程得到)
y1=k*x1+b; % 计算出每条斜线与圆的交点y坐标
y2=k*x2+b; % 计算出每条斜线与圆的交点y坐标
plot([x1,x2],[y1,y2],'Color','w','LineWidth',2) % 绘制斜线
end
end
end
阿里matlab建模师
- 粉丝: 3724
- 资源: 2812
最新资源
- 此存储库适用于 Linkedin Learning 课程学习 Java.zip
- (源码)基于STM32和AD9850的无线电信标系统.zip
- (源码)基于Android的新闻推荐系统.zip
- 本资源库是关于“Java Collection Framework API”的参考资料,是 Java 开发社区的重要贡献,旨在提供有关 Java 语言学院 API 的实践示例和递归教育关系 .zip
- 插件: e2eFood.dll
- 打造最强的Java安全研究与安全开发面试题库,帮助师傅们找到满意的工作.zip
- (源码)基于Spark的实时用户行为分析系统.zip
- (源码)基于Spring Boot和Vue的个人博客后台管理系统.zip
- 将流行的 ruby faker gem 引入 Java.zip
- (源码)基于C#和ArcGIS Engine的房屋管理系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈