专栏首页python3AS3 斜坡角度反弹【算法】

AS3 斜坡角度反弹【算法】

1.公式

坐标旋转:

x1 = Math.cos(angle) * x - Math.sin(angle) * y;

y1 = Math.cos(angle) * y + Math.sin(angle) * x;

反坐标旋转:

x1 = Math.cos(angle) * x + Math.sin(angle) * y;

y1 = Math.cos(angle) * y - Math.sin(angle) * x;

2.原理

先把斜面旋转成平面,然后执行反弹,最后再把它旋转回去。

3.实例

var ball:MovieClip; var line:MovieClip; var gravity:Number=0.3; var bounce:Number=-0.6; init(); function init():void {   ball = new Ball();   addChild(ball);   ball.x=100;   ball.y=100;   ball.vy=1;   ball.vx=0;   line = new MovieClip();   line.graphics.lineStyle(1);   line.graphics.lineTo(300, 0);   addChild(line);   line.x=50;   line.y=200;   line.vy=0;   line.vx=0;//   line.rotation=30;   addEventListener(Event.ENTER_FRAME, onEnterFrameHd); } function onEnterFrameHd(event:Event):void {// 普通的运动代码       ball.vy+=gravity;   ball.x+=ball.vx;   ball.y+=ball.vy; // 获得角度及正余弦值       var angle:Number=line.rotation*Math.PI/180;   var cos:Number=Math.cos(angle);   var sin:Number=Math.sin(angle); // 获得 ball 与 line 的相对位置       var x1:Number=ball.x-line.x;   var y1:Number=ball.y-line.y; // 旋转坐标       var y2:Number=cos*y1-sin*x1; // 实现反弹 if (y2>- ball.height/2) { // 旋转坐标         var x2:Number=cos*x1+sin*y1; // 旋转速度向量         var vx1:Number=cos*ball.vx+sin*ball.vy;     var vy1:Number=cos*ball.vy-sin*ball.vx;     y2=- ball.height/2;     vy1*=bounce; // 将一切旋转回去         x1=cos*x2-sin*y2;     y1=cos*y2+sin*x2;     ball.vx=cos*vx1-sin*vy1;     ball.vy=cos*vy1+sin*vx1;     ball.x=line.x+x1;     ball.y=line.y+y1;   } }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ExtJS样例总结 -3

    http://tianya23.blog.51cto.com/1081650/813863

    py3study
  • H3C交换系列之Super VLAN

      Isolate-user-vlan成功地解决了降低VLAN数量的问题,同时在一定程度上也实现了三层网关的共享。但它也存在MAC地址复制而消耗MAC地址表项的...

    py3study
  • Python之双色球选购和三级菜单问题

    1:双色球选购 # 1 双色球(假设一共八个球,6个红球,球号1-32、2个蓝球,球号1-16) # 2 确保用户不能重复选择,不能超出范围 # 3 用户输入...

    py3study
  • 字节码编程,Javassist篇一《基于javassist的第一个案例helloworld》

    在字节码编程方面有三个比较常见的框架;ASM、byte-buddy、Javassist,他们都可以对这字节码进行操作,只是操作方式和控制粒度不同。

    小傅哥
  • 字节码编程,Javassist篇一《基于javassist的第一个案例helloworld》

    在字节码编程方面有三个比较常见的框架;ASM、byte-buddy、Javassist,他们都可以对这字节码进行操作,只是操作方式和控制粒度不同。

    小傅哥
  • 基础知识 | 每日一练(82)

    士人有百折不回之真心,才有万变不穷之妙用。立业建功,事事要从实地着脚,若少慕声闻,便成伪果;讲道修德,念念要从虚处立基,若稍计功效,便落尘情。 ...

    C语言入门到精通
  • 【干货】2020史上最全自动驾驶资源大合集!

    【导读】本文为大家整理了自动驾驶方面的一些资源,主要包括视频课程学习、书籍资料、顶会论文、开源项目、常用数据集等等!下图是自动驾驶的技术栈展示:

    深度学习技术前沿公众号博主
  • 一带一路成港股新机遇,哪些互联网公司吃上头啖汤?

    近日,香港证券及期货事务监察委员会(证监会)发表声明鼓励“一带一路”企业到香港上市。香港证监会认为,“一带一路”是中央政府倡议,旨在促进亚洲、非洲和欧洲地区的互...

    罗超频道
  • Spiral Matrix II

    问题:蛇形矩阵 分析:设置变量dir,0123分别代表方向右下左上 class Solution { public: int num[300][300]...

    用户1624346
  • 使用DOM动态创建标签

    本文是参考《javascript Dom 编程艺术》第八章的内容所写,用到的知识点,就是关于创建平稳的web页面。 使用DOM方法:   getEleme...

    用户1154259

扫码关注云+社区

领取腾讯云代金券