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