我们看下我们通过三角函数要做出来的效果

sin、cos、tan概念

为了直观,我们引入一个三角形

概念如下:

sinα = b / ccosα = a / ctanα = b / a

javascript中的表示方法


π ---> Math.PIsinα ---> Math.sin(α)cosα ---> Math.cos(α)tanα ---> Math.tan(α)

我们已经角度α和其中c边的长度,我们如何求出a边和b边的长度呢?
聪明的你已经想到了:b = sinα * c,其他的边依此类推。

圆周运动分析

圆周运动最终要找的还是那个灰三角形的left和top值,我们已经的条件有角度(随时间变大,初始为0)和c边(圆的半径),那根据上面的公式,a边和b边也就可以求得,那么,瞬时的left和top也就可以取得。

角度与弧度

我们现实生活中使用的大都是角度,比如:30度、60度,但在计算机中的语言中,使用的都是弧度。啥是弧度呢,我们先看个图

当α对着的扇形的周长和圆的半径相等时,那么α就等于1弧度。咋推导出来的呢,我们知道圆的周长为:2πr,一周为360度,所以2πr = 360,根据上面的定义,一个半径的长度为一弧度,所以1弧度 = 180 / π 度,反过来1度= π / 180 弧度
我们在程序中,每次加的都是角度,所以需要转化成弧度才能让js中三角函数中使用,代码如下:

var ang = 60var a = Math.cos(ang * (Math.PI / 180)) * r

源码及实现,请移步GitHub

javascript与三角函数之二:圆周运动相关推荐

  1. 从头开始学JavaScript (五)——操作符(二)

    原文:从头开始学JavaScript (五)--操作符(二) 一.乘性操作符 1.乘法:*      乘法操作符的一些特殊规则: 如果操作数都是数值,按照常规的乘法计算,如果乘积超过了ECMAscri ...

  2. Android WebView 和 javaScript的互相调用(二)

    原文出处:http://blog.csdn.net/wangtingshuai/article/details/8635787 WebView相关阅读 Android WebView 和 javaSc ...

  3. JavaScript实现数乘以二multiplyByTwo算法(附完整源码)

    JavaScript实现数乘以二multiplyByTwo算法(附完整源码) multiplyByTwo.js完整源代码 multiplyByTwo.js完整源代码 /*** @param {numb ...

  4. JavaScript实现数除以二divideByTwo算法(附完整源码)

    JavaScript实现数除以二divideByTwo算法(附完整源码) divideByTwo.js完整源代码 divideByTwo.js完整源代码 /*** @param {number} nu ...

  5. Javascript基础回顾 之(二) 作用域

    本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...

  6. JavaScript学习(九十二)—关联数组的基本操作

    JavaScript学习(九十二)-关联数组的基本操作 王同学的每天进步一点点系列!!! 一.关联数组的定义 定义:所谓关联数组,就是指数组元素的下标为字符型 二.关联数组的创建方式 1)定义一个空数 ...

  7. JavaScript学习(十二)—removeAttribute方法、hasAttribute方法、createAttribute方法以及setAttributeNode方法

    JavaScript学习(十二)-removeAttribute方法.hasAttribute方法.createAttribute方法以及setAttributeNode方法 (一).removeAt ...

  8. JavaScript的事件系列二keydown,keypress,获取键码------JavaScript学习之路4

    JavaScript的事件系列二 判断热键shift,ctrl,alt,win shiftkey 当shift按下时为true,默认为false var v = ev || window.event; ...

  9. JavaScript 高级编程(二)

    JavaScript 高级编程(二) BOM 一套操作浏览器的API. 常见对象 window: 代表整个浏览器窗口 注意: window是BOM中的一个对象, 并且是一个顶级的对象(全局) Navi ...

最新文章

  1. 重现2篇Nature中GraPhlAn绘制的超高颜值物种树Cladogram
  2. 这是我看过最好的Java编程入门视频教程!
  3. linux 串口驱动(二)初始化 【转】
  4. 钉钉密聊安不安全 钉钉密聊别人能看到吗
  5. ubuntu16.04下wifi上网速度很慢的解决方案
  6. 从事前端开发,日常工作中必备的工具有哪些?
  7. 平安夜 送自己一个小博客
  8. BNNVGG3-BNN Net
  9. Pycharm2017补丁破解
  10. 基于Arduino的超声波悬浮
  11. 解决win10系统不能打开.chm类型的文件
  12. php:php-fpm平滑重启为什么无效
  13. “英制长度单位”的由来
  14. Scrapy中的item和pipline
  15. 对话霍金弟子:AI能帮助人类到其他星球进行时空旅行 | AI英雄
  16. 红黑树与平衡二叉树_百图详解红黑树
  17. 小黑抱紧沛奇老师课程的大腿,继续学习git的日常积累:沛奇老师git笔记(git命令与分支)
  18. dvd-rom属于什么
  19. 如何修改Microsoft edge浏览器主页?
  20. 创新触手可及: 为使用企业级 OSGi 做好准备了吗?

热门文章

  1. boost::fibers模块实现异步调度的测试程序
  2. boost::container模块实现插入和放置的测试程序
  3. ITK:计算图像在特定方向上的导数
  4. VTK:PolyData之ThinPlateSplineTransform
  5. VTK:Rendering之Model
  6. VTK:图片之ImageMapToColors
  7. OpenCV创建自己的corner检测器
  8. Qt Creator在多个平台上运行
  9. c++STL容器的Vector
  10. 第十天:估算活动持续时间