一行代码让圆周运动不依赖于三角函数

想在AS3里实现圆周运动,我们一般都这么写:

var centerX:Number = 300;
var centerY:Number = 200;
var radius:Number = 20;
var degree:Number = 0;
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
function enterFrameHandler(event:Event):void{
  display.x = centerX + radius * Math.cos(degree * Math.PI / 180);
  display.y = centerY + radius * Math.sin(degree * Math.PI / 180);
  degree += 5;
}

  其中centerX和centerY分别是圆心的x坐标和y坐标,radius为圆周的半径,degree是当前角度。

代码中出现了cos和sin两个三角函数,可别觉得这些中学的基础知识大家都懂,没准就在高中毕业当天,就有不少人把这些函数都还给老师了。就像iloveas,除了“欲穷干里日”一句外,小学课本里教过的古诗词都早给我忘的一干二净了。

那么,有没办法不通过这些蛋疼的三角函数来实现同样的效果呢?说到这里,大神们估计很容易想到向量、矩阵等高端货,不过今天iloveas给大家分享一个更简单的做法,只要一行代码,什么弦什么切的都可以一边凉快去了:

var pt:Point = Point.polar(radius, degree * Math.PI / 180);
display.x = centerX + pt.x;
display.y = centerY + pt.y;

  如果你喜欢装逼,那以下写法会更适合你:

var pt:Point = Point.polar(radius, degree * Math.PI / 180).add(new Point(centerX, centerY));
display.x = pt.x;
display.y = pt.y;

  不可否认的是,iloveas今天介绍的方法在运行效率方面比自己写三角函数要差的多,但它很适合像iloveas这样的数学白痴们入门编程这一行。在这点上,AS3确实做的比其他语言好,所以不管AS3的明天何去何从,大家都来多多支持AS3吧。

原文地址:https://www.cnblogs.com/fengziwu/p/10914972.html

时间: 2024-10-24 09:00:41

一行代码让圆周运动不依赖于三角函数的相关文章

一行代码解决IE兼容性问题

在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案百度也应用了这种方案去解决IE的兼容问题 百度源代码如下 <!Doctype html><html xmlns=http://www.w3.org/1999/xhtml xmlns:bd=http://www.baidu.com/2010/xbdml>;<head><meta http-equiv=Content-Type content="text/h

一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10 http://www.jb51.net/css/383986.html

在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案百度也应用了这种方案去解决IE的兼容问题 百度源代码如下 复制代码 代码如下: <!Doctype html> <html xmlns=http://www.w3.org/1999/xhtml xmlns:bd=http://www.baidu.com/2010/xbdml>; <head> <meta http-equiv=Content-Type conten

怎么用一行代码解决CSS各种IE各种兼容问题

用一行代码来解决CSS在,IE6,IE7,IE8,IE9,IE10 中的各种兼容性问题. 在网站前端写代码的过程中,很多时间IE各个版本的兼容问题很难整.现在百度与谷歌都有了一行解决这种兼容性的代码了.如下面的. 办法一 百度也应用了这种方案去解决IE的兼容问题 百度源代码如下 1 <!Doctype html> 2 <htmlxmlns=http://www.w3.org/1999/xhtmlxmlns:bd=http://www.baidu.com/2010/xbdml> 3 

有一个NSStirng类型,retain方式声明的name属性的setter方法内部每一行代码的作用?

- (void)setName:(NSString *)name { 判断原有对象和新对象是否是同一个对象,如果是同一个,就没有必要再重新赋值,否则会先release 再retain,就会变成野指针 if (_name != name) { 释放保有之前对象的所有权 [_name release]; 让实例变量 _name保有新的对象的所有权 _name = [name retain]; } } 有一个NSStirng类型,retain方式声明的name属性的setter方法内部每一行代码的作用

C++ - 删除文本的最后一行 代码(C++)

删除文本的最后一行 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 读取文本的每行("\n"), 存储入数组vector<string>, 输出时, 少输出最后一行, 即可. 代码: /* * main.cpp * * Created on: 2014.06.08 * Author: Spike */ /*vs 2012*/ #include <windows.h> #include <fstream&g

一行代码的快速排序

1.一维高斯函数: a表示得到曲线的高度,b是指曲线在x轴的中心,c指width(与半峰全宽有关),图形如下: . 2.根据一维高斯函数,可以推导得到二维高斯函数: 在图形上,正态分布是一种钟形曲线,越接近中心,取值越大,越远离中心,取值越小. 计算平均值的时候,我们只需要将"中心点"作为原点,其他点按照其在正态曲线上的位置,分配权重,就可以得到一个加权平均值.常用作图像平滑操作. 例如:通常,图像处理软件会提供"模糊"(blur)滤镜,使图片产生模糊的效果. &q

一行代码提取url中querystring的某个key的值

var itemdata = "OrderFilter=0&ProjectTag=15&DateType=0"; var projectTag = itemdata.replace(/.*projecttag=([\d]+).*/gi, "$1"); 重点就是第二行,用匹配到的括号里的值替换整个文本. 如果用传统方法,肯定要先split"&"符号,再split"="符号,然后再取值. 这样多好,就一行代

Core Graphics快速入门——从一行代码说起

Core Graphics入门 想必每个第一次接触Core Graphics的开发者都被无数的API.混乱的代码逻辑折腾得头疼不已,甚至望而却步.即使是绘制一个简单的矩形也看上去非常繁琐.本文换一个角度,整理一下有关Core Graphics的知识,也算作是这段时间学习的总结. Core Graphics和UIKit的区别 首先从概念上了解一下: 根据苹果的描述,UIKit是我们最容易也是最常接触到的框架.绝大多数图形界面都由UIKit完成.但是UIKit依赖于Core Graphics框架,也

iOS一行代码压缩图片大小

现在基本所有应用都与图片相关联,这就必然涉及到上传下载图片,而用户的流量又迟迟没有被解放,因此图片就不能太大,我们知道iPhone一张照片动辄几M,如果都传原图那流量就会爆炸,粗暴地缩小又会影响图片的分辨率.那有没有办法在保持一定分辨率的情况下压缩图片呢?有的,而且非常简单,一行代码搞定,是苹果自带的压缩函数: UIImageJPEGRepresentation UIImagePNGRepresentation 这两个函数都是iOS自带的图片压缩工具.一个是压成JPEG格式,一个是压成PNG格式