matlab 回退到上一行,对乒乓球回滚的分析与MATLAB模拟-利用 Mathematica 模拟乒乓球滚动 - PS下...

虽然matlab远多于mathematica。工程系本科会有matlab课,但没注意到有mathematica的课。研究生基本都会matlab,但会mathematica的很少。这这并不代表mathematica不好用,接下来给大家分享一下如何利用 Mathematica 来模拟乒乓球滚动。因为Mathematica相关的练手项目实在太少,所以笔者故作此分享。

先定义变量

R=1;v0=4;w0=10;mu=0.2;g=9.8;\[Delta]=(2(v0+w0R))/(5mug);

然后定义

7da1cb7a4dcd03f0d742a3ed79724fa1.png

location[t_] :=

Piecewise[{{If[t <= \[Delta],

v0 t - 1/2*mu*g*t^2 + R, (3 v0 - 2 w0 R)/5 (t - \[Delta]) +

v0 \[Delta] - 1/2*mu*g*\[Delta]^2 + R], 3 v0 - 2 w0 R < 0},(*<

0 roll back*){If[t <= \[Delta], v0 t - 1/2*mu*g*t^2 + R,

v0 \[Delta] - 1/2*mu*g*\[Delta]^2 + R],

3 v0 - 2 w0 R == 0}, {If[t <= \[Delta],

v0 t - 1/2*mu*g*t^2 + R, (3 v0 - 2 w0 R)/5 (t - \[Delta]) +

v0 \[Delta] - 1/2*mu*g*\[Delta]^2 + R], 3 v0 - 2 w0 R > 0}}]

定义旋转角

zhuanjiao[t_] :=

If[t <= \[Delta], w0 t - (3 mu g)/(4 R) t^2,

w0 \[Delta] - (3 mu g)/(4 R) \[Delta]^2 - (3 v0 -

2 w0 R)/(5 R) (t - \[Delta])]

绘出图形

Manipulate[

Graphics3D[

Rotate[Translate[{Sphere[], Point[SpherePoints[100]]}, {location[t],

R, R}], -zhuanjiao[t], {0, 1,

0},(*changed to get rolling to look right*){location[t], R, R}],

Axes -> True, AxesOrigin -> {0, 0, 0},

PlotRange -> {{0, 10}, {0, 2 R}, {0, 2 R}},

AxesLabel -> {x, y, z}], {t, 0, 5, .01}]

效果如下图

5ad997fc70cea0bfd5e354c4bf241717.gif

仅为练手作品。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值