javascript - 从圆形边界弹起球

标签 javascript html math canvas vector

enter image description here

这是我发现的公式:

r = v − [2 (n · v) n]

我是这样申请的

    //Calculating normal
    nx = 350 -  SmileyReds[i].xpos ;
    ny = 350 -  SmileyReds[i].ypos ;

  //new calc
   v_newx = SmileyReds[i].xspeed - (2 *( nx * SmileyReds[i].xspeed + ny * SmileyReds[i].yspeed ) ) * nx;
   v_newy = SmileyReds[i].yspeed - (2 *( nx * SmileyReds[i].xspeed + ny * SmileyReds[i].yspeed ) ) * ny;

   SmileyReds[i].xspeed = v_newx;
   SmileyReds[i].yspeed = v_newy;

但是球没有弹跳,而是在碰到边界时消失了:

完整的 src 和预览 http://jsfiddle.net/gj4Q7/4/

感谢您的宝贵时间,欢迎提供任何提示!

最佳答案

我认为你需要规范化 normal :)

之后

//Calculating normal
nx = 350 -  SmileyReds[i].xpos;
ny = 350 -  SmileyReds[i].ypos;

插入

var len = Math.sqrt(nx * nx + ny * ny);
nx = nx / len;
ny = ny / len;

您可以看到,您可以轻松获得 350*350 范围内的速度值,将您的物体弹射到太空...

关于javascript - 从圆形边界弹起球,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19917954/

相关文章:

javascript - [$sce :iequirks] Strict Contextual Escaping does not support Internet Explorer version < 9 in quirks mode

javascript - 如何在单个域上部署自适应 Next Js 网站?

javascript - 对于每种输入类型,使用 javascript 获取值

javascript - 如果未按下按钮,则在 30 秒内自动执行该功能

math - 简单的球形照明

algorithm - 2d 中点之间的反射路径

javascript - 我可以使用 switch 语句来管理 React 中的表单吗?

javascript - 让 JS 检测页面上的位置?

javascript - 正则表达式。只获取标签的文本内容(没有内部标签)

c++ - 如何从中心原点转换为底部原点?