问题如图,想编写一个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
随机示例
有帮助望采纳哟