1. 程式人生 > >有向圖扇形,角度調整。

有向圖扇形,角度調整。

clc
clear all
close all
sensingR=18;
coverSector=pi/3;
Coverlength=50;
%x=randi([1 50],1,30);
%y=randi([1 50],1,30);
% save initDeploy
load initDeploy
for i=1:length(x)
    figure(1);
    [center_x(i),center_y(i),tangle(i)]= sector(x(i),y(i),sensingR,coverSector);
    text(x(i),y(i),int2str(i));
    hold on;
end
axis([0 Coverlength 0 Coverlength]) %axis([xmin xmax ymin ymax])
Adjust=[       ];
for i=1:length(x)
    figure(1);
    [center_x(i),center_y(i),tangle(i)]= sectorAdjustment(x(i),y(i),sensingR,coverSector,Adjust(i));
     hold on;
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function [center_x,center_y,tangle]= sector(x0,y0,r,coverSector)
%x0=5;
%y0=10;
%r=3;
%coverSector=pi/3;
while(1)
    Intangle=2*pi*randn(1);
    Endangle=Intangle+coverSector;
    if Endangle<2*pi
        break;
    end
end
theta=Intangle:pi/50:Endangle;
x=x0+r*cos(theta);
y=y0+r*sin(theta);
plot(x,y,'r-',x0,y0,'r.','markersize',16);
% axis square;
hold on                                                %plot([x1,x2],[y1,y2],'r-');
plot([x0,x(length(theta))],[y0,y(length(theta))],'r-');%畫直線連線(x1,y1),(x2,y2)
hold on
plot([x0,x(1)],[y0,y(1)],'r-');
hold off
%axis([0 20 0 20]) %axis([xmin xmax ymin ymax])
center_x = 0.5*(x(length(theta))+x(1)) ;
center_y = 0.5*(y(length(theta))+y(1));
tangle=(atan((center_y-y0)/(center_x-x0))/pi)*180;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function [center_x,center_y,tangle]=sectorAdjustment(x0,y0,r,coverSector,AdjustSector)
Intangle=AdjustSector-0.5*coverSector ;
Endangle=AdjustSector+0.5*coverSector ;    
theta=Intangle:pi/50:Endangle;
x=x0+r*cos(theta);
y=y0+r*sin(theta);
plot(x,y,'r-',x0,y0,'r.','markersize',16);
% axis square;
hold on                                                %plot([x1,x2],[y1,y2],'r-');
plot([x0,x(length(theta))],[y0,y(length(theta))],'r-');%畫直線連線(x1,y1),(x2,y2)
hold on
plot([x0,x(1)],[y0,y(1)],'r-');
hold off
center_x = 0.5*(x(length(theta))+x(1)) ;
center_y = 0.5*(y(length(theta))+y(1));
tangle=(atan((center_y-y0)/(center_x-x0))/pi)*180;