matlab竖直上抛运动程序

matlab竖直上抛运动程序,第1张

%斜抛物体射程,射高和最高点的分布

clear %清除变量

theta=0:90 %物体射角的度数向量

th=theta*pi/180 %物体射角的弧度数

x=sin(2*th) %水平射程(以最大射程为单位)

y=sin(th).^2/2 %竖直射高(以最大射程为单位)

figure %创建图形窗口

plot(theta,x,theta,y,'--','linewidth',2)%画射程和射高曲线

grid on%加网格

legend('射程\itX/X\rm_M','射高\itY/X\rm_M')%图例

fs=16%字体大小

title('斜抛物体的水平射程和竖直射高','FontSize',fs)%标题

xlabel('射角\it\theta/\rm(\circ)','FontSize',fs)%横坐标标签

text(0,0.5,'\itX\rm_M=\itv\rm_0^2/\itg','FontSize',fs)%说明最大射程

theta=15:10:75 %物体射角的度数向量

th=theta*pi/180 %物体射角的弧度数

x=linspace(0,1,40) %水平坐标向量(以最大射程为单位)

[TH,X]=meshgrid(th,x)%水平坐标和角度和矩阵

Y=X.*tan(TH)-X.^2/2./cos(TH).^2 %高度位置矩阵

figure %创建图形窗口

%plot(x,Y,'LineWidth',2)%画斜抛运动曲线族

plot(x,Y(:,1),'o-',x,Y(:,2),'d-',x,Y(:,3),'s-',x,Y(:,4),'p-',...

x,Y(:,5),'h-',x,Y(:,6),'<-',x,Y(:,7),'>-','LineStyle','--')%画斜抛运动曲线族

grid on%加网格

axis equal %使坐标刻度相等

axis([0 1 0 0.5]) %曲线范围

n=length(th) %射角的个数

h=legend([num2str(theta'),repmat('\circ',n,1)])%插入角度图例

set(h,'FontSize',fs-2) %放大图例

y0=zeros(size(th)) %落点纵坐标向量

x0=sin(2*th) %落点横坐标向量(射高的横坐标的两倍)

text(x0,y0,num2str(x0',3),'FontSize',fs)%标记射程(保留3位)

ym=sin(th).^2/2 %射高

text(x0/2,ym,num2str(ym',3),'FontSize',fs)%标记射高(保留3位)

hold on%保持图像

你这公式对不?我咱觉得好像有个符号错了,是s(t)=y0+v0*t-1/2*g*t^2

程序如下:

function Thrw(N,y0,v0)

t=1:0.01:N%你觉定计时的长短

s=y0+v0.*t-4.9.*t.^2

plot(t,s)

很简单的程序啊LZ加油学习

clc,clear

%一个三维随机运动的小球

r=0.5%球的半径

%运动的范围

x1=0x2=30

y1=0y2=30

z1=0z2=30

%初始位置  随机生成

x0=rand(1)*(x2-x1-2*r)+x1

y0=rand(1)*(y2-y1-2*r)+y1

z0=rand(1)*(z2-z1-2*r)+z1

pos=[x0y0z0]

figure(1)

[x,y,z]  = ellipsoid(pos(1),pos(2),pos(3),r,r,r)

surf(x,y,z,ones(size(x))) %画出来球

n=200%随机运动的次数

p=1  %p可以用来控制每次运动距离的大小

for i=1:n

    %产生运动的方向与运动距离,用一个随机向量表示

    s=0

    while(s==0)

        direct=rand(3,1)-0.5

        dd=direct/norm(direct,2)

        dd=dd*p

        post=pos+dd

        if (post(1)>=x1+r&&post(1)<=x2-r)&&(post(2)>=y1+r&&post(2)<=y2-r)&&(post(3)>=z1+r&&post(3)<=z2-r)

            s=1

        end

    end

    pos=pos+dd

    [x,y,z]  = ellipsoid(pos(1),pos(2),pos(3),r,r,r)

    surf(x,y,z,ones(size(x))) %画出来球

    axis([x1 x2 y1 y2 z1 z2])

    pause(0.1)  %设置暂停时间

end

因为是随机运动   如果每次运动的距离设置的不大,小球基本上是在初始位置的范围内运动


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8176623.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存