题目传送门:
Step 1:前置芝士
您需要知道并了解以下芝士:
- 数学:
- 三角函数;
- 物理:
- 加速度公式;
- 位移公式;
那么如果您并不了解以上芝士,那么请继续向下看;如果您已经掌握以上芝士,那么请跳至“Step 2”。
三角函数讲解:
注意,本题为物理题解,故不会放出三角函数作图过程、函数图像、拓展公式、常考题型、易错题型等,若需要请参考以下链接:
Bilibili: Link
WeChat: Link
如图,三角形ABC为直角三角形,∠B为直角,∠A为θ
。其中线段AB
长为c
,线段BC
长为a
,线段AC
长为b
。
那么对于直角三角形,它有六种三角函数:
- 正弦(sin)
- 余弦(cos)
- 正切(tan)
- 余切(cot)
- 正割(sec)
- 余割(csc)
那他们都等于什么呢:
好了,关于三角函数知道这么多已经足够我们做这道题了。
加速度公式:
其中,(a)为加速度;(v_t)为最终速度;(v_0)为初始速度;(t)为运动时间;
位移公式:
其中,(a)为加速度;(v_0)为初始速度;(t)为运动时间;(s)为位移;
Step 2:正文
先看题目:
一个可以视为质点的小球在点 (A(x_0, y_0)) 沿 (x) 轴负方向以某速度抛出,无视除重力外的所有阻力,最后恰好以速度 (v) 砸到 (B(0, 0)) 点。
易知,小球是在做平抛运动(看题目就知道了,那么我们可以将平抛运动看做一个水平方向的匀速直线运动(只因无视所有阻力,则在水平方向不受力)和一个竖直方向的匀加速运动。在这个匀加速运动中,它的初速度为零,并且只受重力作用,所以是在做自由落体运动。
那么,我们就把题目给出的速度分成两个速度:水平方向的速度与竖直方向的速度。对于水平方向的速度,它是恒不变的,因为本题目无视所有阻力;而对于竖直方向的速度,它是在匀速增加的(重力加速度)。
看到题目是给的角度那么我们就应该想到三角函数。就按题目中最后一个图:
按上图说,我们可以求出竖直方向的最终速度vy
:
又有重力加速度的公式:
题目已经求出了竖直方向最终速度,那么我们就可以用它求出时间,设重力加速度为g
,则有:
酱紫我们就可以这么表示时间t
:
再由位移公式求出竖直方向的位移即纵坐标就好啦:
分析完竖直方向,我们再看看水平方向。上面已经解释过了水平方向是在做匀速直线运动,那最终的水平方向位移即横坐标sx
:
同时它也可以酱紫表示:
我们再去分析水平方向的速度,继续按介个图说:
显然良心出题人已经帮我们标出来了:
那我们再将这个式子代入sx
的式子中:
我们就又可以表示出横坐标啦!下面就是码代码就好啦。
Step 3:代码
直接放代码了就:
Link
#include <bits/stdc++.h>
using namespace std;
double sx,sy;
double vx,vy;
double v,d,g,t;
int main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
cin>>v;
cin>>d;
g=10.0;
t=v*cos(d)*1.0/g;
sy=(g*t*t)/2;
sx=v*sin(d);
sx*=t;
cout<<sx<<" "<<sy;
//fclose(stdin);
//fclose(stdout);
return 0;
}
建议不要在使用double
类型时使用pow
,就是TM
这么写炸的。
就酱紫吧。
文章来源: 博客园
原文链接: https://www.cnblogs.com/xinao2186182144/p/17237773.html
- 还没有人评论,欢迎说说您的想法!