华子吧 关注:3,540贴子:42,266

做了个不同归零点的弹道图,证明20m归零最实用

只看楼主收藏回复





做了个弹道图,初速120,镜子中心高7cm,图从上到下归零点为,15,20,25,30的弹道。
20时候直线重合范围最大,也最经常用。其他感觉没法用啊。
付上python代码,可以修改镜子高,初速,归零点,然后自动出图
import matplotlib.pyplot as plt
import numpy as np
v = int(input("input V"))
g = 9.81
zdis = int(input("input 0 point"))
hd = 0.04
Zx = zdis
Zy = -0.5*g*(zdis/v)**2
time = np.linspace(0, 50 / v, num=500)
aimy = time*v*((hd-Zy)/(0-Zx)) + hd
aimx = time*v
y_displacement = -(1/2) * g * time**2
x_displacement = v * time
plt.figure(figsize=(10, 6))
plt.plot(x_displacement, y_displacement, label="dandao", color='blue')
plt.plot(aimx,aimy, color='red', linestyle='--', label="miaozhunxian")
plt.xlabel("X-m")
plt.ylabel("Y-m")
plt.title(f"{v}m/s dandao")
plt.legend()
plt.grid(True)
plt.xlim(0, 50)
plt.ylim(-1, 0.2)
plt.show()


IP属地:广东1楼2024-08-23 07:58回复
    更新版,除了图之外,还输出距离和这个距离下瞄点和蛋点的高度差(1到50米
    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd
    v = int(input("input V"))
    g = 9.81
    zdis = int(input("input 0 point"))
    hd = 0.04
    Zx = zdis
    Zy = -0.5*g*(zdis/v)**2
    time = np.linspace(0, 50 / v, num=500)
    aimy = time*v*((hd-Zy)/(0-Zx)) + hd
    aimx = time*v
    y_displacement = -(1/2) * g * time**2
    x_displacement = v * time
    dif = []
    for i in range(0,51):
    t = i/v
    gap = (t*v*((hd-Zy)/(0-Zx)) + hd - (-0.5*g*t**2))*100
    gap_round = round(gap,1)
    dif.append(gap_round)
    df = pd.DataFrame({
    'Value': dif
    })
    print(df)
    print(dif)
    plt.figure(figsize=(10, 6))
    plt.plot(x_displacement, y_displacement, label="dandao", color='blue')
    plt.plot(aimx,aimy, color='red', linestyle='--', label="miaozhunxian")
    plt.xlabel("X-m")
    plt.ylabel("Y-m")
    plt.title(f"{v}m/s dandao")
    plt.legend()
    plt.grid(True)
    plt.xlim(0, 50)
    plt.ylim(-1, 0.2)
    plt.show()


    IP属地:广东3楼2024-08-23 11:40
    收起回复
      50米归零最顺手


      IP属地:四川来自iPhone客户端4楼2024-08-23 12:16
      收起回复
        抛物线的话算好了能砸瓶盖上嘛


        IP属地:重庆来自Android客户端7楼2024-08-23 14:10
        收起回复
          说明 基线高了 低基线15米归零差不多


          IP属地:江西来自Android客户端8楼2024-08-23 16:49
          收起回复
            持续更新 新加入了角度计算,运行软件会要求输入初速,归零点,角度(水平为0,上抬为正,下压为负)默认镜子高度4cm
            import matplotlib.pyplot as plt
            import numpy as np
            import pandas as pd
            v = int(input("input V"))
            g = 9.81
            zdis = int(input("input 0 point"))
            hd = 0.04
            Zx = zdis
            Zy = -0.5*g*(zdis/v)**2
            k = (hd-Zy)/(0-Zx)
            Angle_aim = np.arctan(k)
            Input_angle = int(input("input angle"))
            Angle_bird = np.radians(Input_angle)
            Angle = Angle_bird + Angle_aim
            time = np.linspace(0, 50 / v, num=50)
            ball_X = v*np.cos(Angle_bird)*time
            ball_y = v*np.sin(Angle_bird)*time - 0.5*g*time**2
            aimy = ball_X*np.tan(Angle) + 0.04*k*np.sin(Angle) + 0.04*np.cos(Angle)
            aimx = ball_X
            dif = []
            for i in range(0,51):
            t = i/v
            gap = (i*np.cos(Angle)*np.tan(Angle) + 0.04*k*np.sin(Angle) + 0.04*np.cos(Angle)) - (v*np.sin(Angle_bird)*t - 0.5*g*t**2)
            gap_round = np.round(gap*100,2)
            dif.append(gap_round)
            df = pd.DataFrame({
            'Value': dif
            })
            print(df)
            plt.figure(figsize=(10, 6))
            plt.plot(ball_X, ball_y, label="dandao", color='blue')
            plt.plot(aimx,aimy, color='red', linestyle='--', label="miaozhunxian")
            plt.xlabel("X-m")
            plt.ylabel("Y-m")
            plt.title(f"{v}m/s shang{Input_angle}du dandao")
            plt.legend()
            plt.grid(True)
            plt.xlim(0, 50)
            plt.ylim(-50, 1)
            plt.show()


            IP属地:广东9楼2024-08-26 15:14
            回复
              效果图,运行之后,弹出轨迹图,下方输出距离和该距离下的瞄点和弹道的偏差值。


              IP属地:广东10楼2024-08-26 15:26
              回复
                继续更新 。 将输出由蛋道和瞄点的距离高度差改成了瞄准镜里需要调整的密位数。
                默认镜子一大格为1mard, 镜子高为4cm。输入初速,归零点,货的倾角,
                就可以输出镜子里从1到50米分别需要抬几格
                import matplotlib.pyplot as plt
                import numpy as np
                import pandas as pd
                v = int(input("input V"))
                g = 9.81
                zdis = int(input("input 0 point"))
                hd = 0.04
                one_click = 0.001
                distance = float(input("input distance"))
                Input_angle = int(input("input angle"))
                Zx = zdis
                Zy = -0.5*g*(zdis/v)**2
                k = (hd-Zy)/(0-Zx)
                Angle_aim = np.arctan(k)
                Angle_bird = np.radians(Input_angle)
                Angle = Angle_bird + Angle_aim
                time = np.linspace(0, 50 / v, num=50)
                ball_X = v*np.cos(Angle_bird)*time
                ball_y = v*np.sin(Angle_bird)*time - 0.5*g*time**2
                aimy = ball_X*np.tan(Angle) + 0.04*k*np.sin(Angle) + 0.04*np.cos(Angle)
                aimx = ball_X
                t = distance/v
                gap = (distance*np.cos(Angle)*np.tan(Angle) + 0.04*k*np.sin(Angle) + 0.04*np.cos(Angle)) - (v*np.sin(Angle_bird)*t - 0.5*g*t**2)
                gap_round = np.round(gap*100,2)
                moa = np.arctan((gap_round/100)/distance)
                modify = moa/one_click
                print(modify)


                IP属地:广东12楼2024-08-29 07:18
                回复
                  继续更新app版代码,删除了输出的估计图,修改为输入参数,只输出一个距离和倾角要抬的格子数,用于下货时候,算一个搞一个
                  import matplotlib.pyplot as plt
                  import numpy as np
                  import pandas as pd
                  v = int(input("input V"))
                  g = 9.81
                  zdis = int(input("input 0 point"))
                  hd = 0.04
                  one_click = 0.001
                  distance = float(input("input distance"))
                  Input_angle = int(input("input angle"))
                  Zx = zdis
                  Zy = -0.5*g*(zdis/v)**2
                  k = (hd-Zy)/(0-Zx)
                  Angle_aim = np.arctan(k)
                  Angle_bird = np.radians(Input_angle)
                  Angle = Angle_bird + Angle_aim
                  time = np.linspace(0, 50 / v, num=50)
                  ball_X = v*np.cos(Angle_bird)*time
                  ball_y = v*np.sin(Angle_bird)*time - 0.5*g*time**2
                  aimy = ball_X*np.tan(Angle) + 0.04*k*np.sin(Angle) + 0.04*np.cos(Angle)
                  aimx = ball_X
                  t = distance/v
                  gap = (distance*np.cos(Angle)*np.tan(Angle) + 0.04*k*np.sin(Angle) + 0.04*np.cos(Angle)) - (v*np.sin(Angle_bird)*t - 0.5*g*t**2)
                  gap_round = np.round(gap*100,2)
                  moa = np.arctan((gap_round/100)/distance)
                  modify = moa/one_click
                  print(modify)


                  IP属地:广东13楼2024-08-29 07:22
                  收起回复
                    继续更新 。 带风阻计算版本电脑版
                    import matplotlib.pyplot as plt
                    import numpy as np
                    import pandas as pd
                    v = int(input("input V"))
                    g = 9.81
                    zdis = int(input("input 0 point"))
                    hd = 0.04
                    mard = 0.001
                    Zx = zdis
                    tzero = (v-(v**2-28*zdis)**0.5)/14
                    Zy = -0.5*g*tzero**2
                    k = (hd-Zy)/(0-Zx)
                    Angle_aim = np.arctan(k)
                    Input_angle = int(input("input angle"))
                    Angle_bird = np.radians(Input_angle)
                    Angle = Angle_bird + Angle_aim
                    t_total = (v-(v**2-50*zdis)**0.5)/14
                    time = np.linspace(0,t_total , num=50)
                    ball_X = ((2*v-14*time)/2)*time*np.cos(Angle_bird)
                    ball_y = ((2*v-14*time)/2)*time*np.sin(Angle_bird) - 0.5*g*time**2
                    aimy = ball_X*np.tan(Angle) + 0.04*k*np.sin(Angle) + 0.04*np.cos(Angle)
                    aimx = ball_X
                    dif = []
                    for i in range(0,51):
                    t = (v-(v**2-28*i)**0.5)/14
                    gap = (i*np.cos(Angle)*np.tan(Angle) + 0.04*k*np.sin(Angle) + 0.04*np.cos(Angle)) - ((v*t-7*t**2)*np.sin(Angle_bird) - 0.5*g*t**2)
                    gap_mard = np.arctan(gap/i)/mard
                    dif.append(gap_mard)
                    df = pd.DataFrame({
                    'Value': dif
                    })
                    print(df)
                    plt.figure(figsize=(10, 6))
                    plt.plot(ball_X, ball_y, label="dandao", color='blue')
                    plt.plot(aimx,aimy, color='red', linestyle='--', label="miaozhunxian")
                    plt.xlabel("X-m")
                    plt.ylabel("Y-m")
                    plt.title(f"{v}m/s {Input_angle}du dandao")
                    plt.legend()
                    plt.grid(True)
                    plt.xlim(0, 50)
                    plt.ylim(-1, 0.2)
                    plt.show()
                    带风阻计算app版
                    import matplotlib.pyplot as plt
                    import numpy as np
                    import pandas as pd
                    v = int(input("input V"))
                    g = 9.81
                    zdis = int(input("input 0 point"))
                    hd = 0.04
                    one_click = 0.001
                    distance = float(input("input distance"))
                    Input_angle = int(input("input angle"))
                    Zx = zdis
                    tzero = (v-(v**2-28*zdis)**0.5)/14
                    Zy = -0.5*g*tzero**2
                    k = (hd-Zy)/(0-Zx)
                    Angle_aim = np.arctan(k)
                    Angle_bird = np.radians(Input_angle)
                    Angle = Angle_bird + Angle_aim
                    t_total = (v-(v**2-50*zdis)**0.5)/14
                    time = np.linspace(0,t_total , num=50)
                    ball_X = ((2*v-14*time)/2)*time*np.cos(Angle_bird)
                    ball_y = ((2*v-14*time)/2)*time*np.sin(Angle_bird) - 0.5*g*time**2
                    aimy = ball_X*np.tan(Angle) + 0.04*k*np.sin(Angle) + 0.04*np.cos(Angle)
                    aimx = ball_X
                    t = (v-(v**2-28*distance)**0.5)/14
                    gap = (distance*np.cos(Angle)*np.tan(Angle) + 0.04*k*np.sin(Angle) + 0.04*np.cos(Angle)) - ((v*t-7*t**2)*np.sin(Angle_bird) - 0.5*g*t**2)
                    gap_round = np.round(gap*100,2)
                    moa = np.arctan((gap_round/100)/distance)
                    modify = moa/one_click
                    print(modify)


                    IP属地:广东14楼2024-08-29 10:32
                    回复
                      普雷德那个弹道系数得多少 楼主 华子的话


                      IP属地:浙江来自Android客户端19楼2024-08-30 09:11
                      收起回复
                        做好的效果,下面五行输入条件,上面输出调整的密位数和高度差


                        IP属地:广东23楼2024-08-30 14:22
                        回复
                          太牛逼了,我找个时间也研究研究代码,python能运行出来吗?


                          IP属地:浙江来自iPhone客户端24楼2024-09-02 01:31
                          收起回复
                            楼主 帮我算算3cm基线高度,120初速 bc0.26大概多少归零呗 我现在第一归点5m 第二15m左右,你那个Python运行下看看多少合适呀


                            IP属地:湖北来自Android客户端27楼2024-09-02 17:28
                            回复
                              小幻影多少米归零好


                              IP属地:广西来自Android客户端28楼2024-09-03 22:58
                              收起回复