matlab问题,求高手解答!
.某人以恒定的速率v=1沿椭圆轨迹行走,突然有一只狗以恒定的速率w袭击他,狗的运动方向始终指向他.设椭圆的方程为x=10+20cost,y=20+15sint下列两情况下...
.某人以恒定的速率v=1沿椭圆轨迹行走,突然有一只狗以恒定的速率w袭击他,狗的运动方向始终指向他.设椭圆的方程为x=10+20cost, y=20+15sint下列两情况下狗能攻击到人的时间,并给出运动轨迹图像. (25分)
1)w=20 2)w=5
要过程,谢谢!感激不尽! 展开
1)w=20 2)w=5
要过程,谢谢!感激不尽! 展开
展开全部
人也应该有个起始位置吧 ,还有,人是顺时针还是逆时针?
追问
这个。。。。我也不知道,应该是个变量吧,人是顺时针
追答
clc;
clear;
t = 0 : pi/10000 : 2*pi;
x = 10 + 20 * cos(t);
y = 20 + 15 * sin(t);
fprintf('Input the initial position of human\n');
fprintf('Input t , The position will be: x = 10 + 20 * cos(t),y = 20 + 15 * sin(t)\n');
HumIniPos = input('t = ');
x_Hum = 10 + 20 * cos(HumIniPos);
y_Hum = 20 + 15 * sin(HumIniPos);
x_Dog = 0;
y_Dog = 0;
v_Hum = 1;
v_Dog = 5;
timeInterval = 0.001;
t_Per = HumIniPos;
HumPosPer = [x_Hum y_Hum];
DogPosPer = [x_Dog y_Dog];
figure(1)
plot(x,y);
hold on
time = 0;
while ( norm(HumPosPer - DogPosPer) > 1e-2)
time = time + 1;
DogDirection = HumPosPer - DogPosPer;
DogDirection = DogDirection / norm(DogDirection);
DogPosCurr = DogPosPer + DogDirection * v_Dog * timeInterval;
HumDirection = [20*sin(t_Per) -15*cos(t_Per)];
HumDirection = HumDirection / norm(HumDirection);
TMP = HumPosPer + HumDirection * v_Hum * timeInterval;
t_Curr = angle( (TMP(1)-10)/20+i*(TMP(2)-20)/15);
HumPosCurr = [10+20*cos(t_Curr) 20+15*sin(t_Curr)];
HumPosPer = HumPosCurr;
DogPosPer = DogPosCurr;
if mod(time, 100)==0
figure(1)
plot(HumPosPer(1),HumPosPer(2),'kv');
plot(DogPosPer(1),DogPosPer(2),'ro');
legend('Ellipse','Hum','Dog');
pause(0.01)
end
end
fprintf('\nCose time: %f s\n', time*timeInterval);
****************************************************
狗速选5还是选10,在那个v_Dog里面改变,人的初始位置,会在一开始叫你输入,输入的是参数t。
****************************************************
程序没写注释,要详解再问。想交差就直接交给好老师好了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询