如何计算撞墙的球的反射角

时间:2019-04-11 06:34:55

标签: javascript math game-physics

我有一个球,并且正朝着这样的角度移动它:

with s as (select '<root><node><a>text1a</a><b>text1b</b></node><node><a>text2a</a><b>text2b</b></node></root>' c from dual)
select x.node node_xml, x.node.getclobval() node_clob
from s,
xmltable(
'/root/node'
passing xmltype(s.c)
columns
node xmltype path '.'
) x;

NODE_XML                                   NODE_CLOB                                 
------------------------------------------ ------------------------------------------
<node><a>text1a</a><b>text1b</b></node>    <node><a>text1a</a><b>text1b</b></node>   
<node><a>text2a</a><b>text2b</b></node>    <node><a>text2a</a><b>text2b</b></node>

当球与墙碰撞时,如何计算反射角?(水平或垂直)

类似this

1 个答案:

答案 0 :(得分:1)

对于具有法线向量e_n的任何墙,具有初始速度向量v_i的球在反射后具有速度向量v_f

v_f = v_i - 2 dot( v_i, e_n) e_n

其中dot是矢量点积。

说明:  v_ie_n上的投影为dot( v_i, e_n )。这是朝向墙壁的速度,这是反射时反转的部分。分量p = dot( v_i, e_n )产生向量p e_n。可以通过叉积或简单地v_s = v_i - p e_n来计算剩余分量。最终速度是不变的分量加上反向投影的分量,即v_s - p e_n = v_i - 2 p e_n = v_i - 2 dot( v_i, e_n) e_n