javascript - 如何反弹一个点以击中某个角度的线
问题描述
我有一条线和一个点,线有一个角度,{ angle }
点有一个速度{ x, y }
,点移动到这条线并击中它。在这一点上,我想改变点的速度,就好像点相对于线的角度从线反弹一样。如何根据线角计算点的新速度?
解决方案
没有“重力”?完美的弹性?
a = angle
b = atan(y/x) -- angle of 'velocity'
c = 2a-b -- angle of new velocity
r = sqrt(x*x + y*y) -- scaling of x,y
v = r * cos(c)
w = r * sin(c)
new velocity = {v, w}
(警告:我不知道什么a
是相对的 - 垂直或水平,也不知道哪个方向。可能还有其他问题。)
推荐阅读
- node.js - MongooseError:`openUri()` 的`uri` 参数必须是字符串,得到“未定义”
- java - sendRedirect(test.jsp) 和 sendRedirect(/test.jsp) 的区别
- python - 如何在 Django 模板语言中优雅地表示负美元金额?
- python - 有没有办法用python修改一个url上的json文件
- grpc - gRPC-go 服务器变得无响应并在一段时间后开始备份请求
- javascript - React 状态值在通过 console.log() 打印时显示,但不在网页上
- html - 为什么添加不透明度会破坏 3D CSS 动画?
- netlogo - 在 NetLogo 中存储和调用策略的输出
- python - 有没有办法将输入变成列表?
- vhdl - 错误 (10327) 无法确定运算符 ""="" 的定义