如何在直角坐标系中描述向量的360°指向角,并编写matlab程序?

img

问题如图,想编写一个matlab程序,实现模拟船只自由航行,起始位置(x0,y0),航行过程中随机转弯5次,但不能朝相反方向回头跑,并提取每次转弯的坐标点(xi,yi)

你好同学,代码供参考,并不需要每一次计算那个角度

% 初始位置
x0=10;
y0=0;
coor = zeros(5,2);
dir = rand(1,2)-0.5;%给定一个随机方向
dir = dir/norm(dir);%变成单位方向向量
d = 3; % 随机走距离为3,假设每次走的距离不变
dis = dir*d;
coor(1,:) = [x0,y0]+dis;
for i = 2:5
    dirold = dir; % 记录上一步方向
    dir = rand(1,2)-0.5;%给定一个随机方向
    while(dir*dirold'<0)%如果跟原方向相反就继续生成随机方向
       dir = rand(1,2)-0.5; 
    end
    dir = dir/norm(dir);
    d = 3; % 随机走距离为3,假设每次走的距离不变,你可以设置随机距离
    dis = dir*d;
    coor(i,:) = coor(i-1,:)+dis;
end
total_coor = [x0,y0; coor];
plot(total_coor(:,1), total_coor(:,2),'r-o','markerfacecolor','r')
axis equal

随机示例

img

有帮助望采纳哟