标题:抛体运动,C语言,请大神帮小弟一把
只看楼主
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1728
专家分:3216
注 册:2015-12-2
得分:0 
咋做视屏?
2016-01-07 15:33
zxq057
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2016-1-6
得分:0 
回复 31楼 ehszt
用每0.1的数据,得EXCEL的图像,再用movie maker粘贴复制50个图像,完成
2016-01-07 16:40
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:10 
程序代码:
/*
    來源: http://bbs.bccn.net/thread-460884-1-1.html

    作者: TonyDeng
    日期: 2016.01.07.
    編譯: C++14 in VS2015

    原理: 速度變化增量dv根據加速度的定義 a = dv/dt 而來,即 dv = a * dt
          位置增量由速度的定義 v = ds / dt 而來,即 ds = v * dt
          dt 爲時間間隔
*/

#include <cstdio>
#include <cstdlib>

int main(void)
{
    // 取豎直向下爲y軸正向
    double g = 9.8;                    // 加速度
    double dt = 0.0001;                // 微元時間片

    // 開始運動
    size_t count = 0;                // 輸出次數計數器
    double time = 0.1;                // 輸出時間間隔
    double T = 5.0;                    // 計時長度
    double t = 0;                    // 計時時刻
    double y = 0.0;                    // 時刻t物體在y軸上的位置
    double v = 0.0;                    // 時刻t物體在y軸上的速度
    printf_s("%10s  %10s  %10s\n", "t", "v", "S");
    for (t = 0; t <= T; t += dt)
    {
        if (t >= count * time)
        {
            printf_s("%10.4f  %10.4f  %10.4f\n", t, v, y);
            ++count;
        }
        v += g * dt;
        y += v * dt;
    }
    printf_s("%10.4f  %10.4f  %10.4f\n", t, v, y);

    return EXIT_SUCCESS;
}


程序用法:在命令行鍵入指令,比如你編譯出來的程序是test.exe,那麽指令是
test > "13t7032kc46.data" [Enter]

這樣程序在運行後就會生成對應的數據文件,其內容如下:
程序代码:
         t           v           S
    0.0000      0.0000      0.0000
    0.1000      0.9800      0.0490
    0.2001      1.9610      0.1963
    0.3001      2.9410      0.4414
    0.4001      3.9210      0.7846
    0.5001      4.9010      1.2257
    0.6001      5.8810      1.7649
    0.7001      6.8610      2.4020
    0.8001      7.8410      3.1372
    0.9001      8.8210      3.9703
    1.0001      9.8010      4.9015
    1.1001     10.7810      5.9306
    1.2001     11.7610      7.0578
    1.3001     12.7410      8.2829
    1.4001     13.7210      9.6061
    1.5001     14.7010     11.0272
    1.6001     15.6810     12.5464
    1.7001     16.6610     14.1635
    1.8001     17.6410     15.8786
    1.9001     18.6210     17.6918
    2.0001     19.6010     19.6029
    2.1000     20.5800     21.6100
    2.2000     21.5600     23.7171
    2.3000     22.5400     25.9221
    2.4000     23.5200     28.2252
    2.5000     24.5000     30.6262
    2.6000     25.4800     33.1253
    2.7000     26.4600     35.7223
    2.8000     27.4400     38.4174
    2.9000     28.4200     41.2104
    3.0000     29.4000     44.1015
    3.1000     30.3800     47.0905
    3.2000     31.3600     50.1776
    3.3000     32.3400     53.3626
    3.4000     33.3200     56.6457
    3.5000     34.3000     60.0267
    3.6000     35.2800     63.5058
    3.7000     36.2600     67.0828
    3.8000     37.2400     70.7579
    3.9000     38.2200     74.5309
    4.0000     39.2000     78.4020
    4.1000     40.1800     82.3710
    4.2000     41.1600     86.4381
    4.3000     42.1400     90.6031
    4.4000     43.1200     94.8662
    4.5000     44.1000     99.2272
    4.6000     45.0800    103.6863
    4.7000     46.0600    108.2433
    4.8000     47.0400    112.8984
    4.9000     48.0200    117.6514
    5.0000     49.0000    122.5024


如果你使用vs,在菜單的項目【屬性】中位置“命令參數”處寫入如下圖內容:


補充:
1.這個程序使用的是積分法,不論加速度是否恆定,都是可用的,這樣就不必受數學方程限制(有些運動是無法用數學方程描述的)。當然,若已從數學上得到運動方程,直接套公式比這個程序簡單。
2.使用操作系統的重定向功能,不必在程序代碼中寫文件處理過程。

[此贴子已经被作者于2016-1-7 20:01编辑过]


授人以渔,不授人以鱼。
2016-01-07 19:53
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
二維或三維空間,都是一樣的做法,按運動分解和合成原則來就是了。

授人以渔,不授人以鱼。
2016-01-07 21:14
zxq057
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2016-1-6
得分:0 
回复 20楼 demon90s
检验有错误····
2016-01-08 02:19
zxq057
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2016-1-6
得分:0 
回复 33楼 TonyDeng
版主这个没看懂,我这要要求里,是有初速度的抛体运动
2016-01-08 02:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
回复 36楼 zxq057
我注释中写得明白哪里设初速度及起始位置,初始化为零并不表示你不会改和可变。

[此贴子已经被作者于2016-1-8 08:01编辑过]


授人以渔,不授人以鱼。
2016-01-08 08:00
zxq057
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2016-1-6
得分:0 
愁死
2016-01-12 00:01
zxq057
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2016-1-6
得分:0 
回复 32楼 zxq057
您的代码,显示有276 个错误····
2016-01-12 01:06
zxq057
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2016-1-6
得分:0 
回复 20楼 demon90s
有一个错误···
2016-01-12 01:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-460884-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.172869 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved