当前位置: 首页 > Web前端 > HTML5

学好三角学(函数) — SWIFT和JAVASCRIPT游戏开发的必备技能 iFIERO.com

时间:2023-04-05 20:13:07 HTML5

学习三角函数(函数)——SWIFT和JAVASCRIPT游戏开发必备技能所以小编iFERO认为三角学是必须要掌握的技能之一。先以Javascript为例1.角度和弧度最直观的说,60度角可以用60°表示,也可以用π/3(pi除以3)来表示;同理,一个90度角可以用90°或π/2(pi除以2)来表示;此外,180度角可以用180°或π表示。即[60°=π/3]、[90°=π/2]、[180°=π],等号左边是度,右边是弧度。换句话说,角度可以用度数或弧度表示。但是因为(重要的事情说三遍)弧度更符合电脑的计算模式,弧度更符合电脑的计算模式,弧度更符合电脑的计算模式计算机的,所以Math类的sin(x)、cos(x)、tan(x)中的x参数是弧度类型。那么如何将角度数转换为弧度值呢?公式如下:——————————————度数=弧度180/Math.PI//(角度=弧度180/Math.PI)弧度=度数Math.PI/180//(弧度=角度Math.PI/180)————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————。正弦值(一个角的正弦表示直角边与角对边斜边的比值)varangle=65;//假设角度为65度varradian=angle*Math.PI/180;//计算弧度console.log(Math.sin(radian));//输出sin65度的值Math.sin(30*Math.PI/180)//()括号内的函数是将角度值转换成弧度值2.坐标javascript中的坐标系与标准坐标系。在JavaScript中,使用反正切函数:Math.atan2(y,x)//这个函数接受两个参数:对边(y)和邻边(x)的长度可以计算弧度值,两者之差原因是得到的角度值是从x轴正轴逆时针计算的。在javascript或canvas坐标系中,我们关心的三角形D的角度是-153.43°,而不是26.57°。我们使用Math.atan2(y,x)计算四个三角形A、B、C、D的角度:A:Math.atan2(-1,2)=-26.57°B:Math.atan2(1,2)=26.57°C:Math.atan2(1,-2)=153.43°D:Math.atan2(-1,-2)=-153.43°由此我们很容易分辨出三角形A和C是哪个,B和D!再看一个例子:在javascript坐标系中通过反正切(Math.atan2)计算一个变化点(mouse.x,mouse.y)对应一个固定点(arrow.x,arrow.y)的角度:changepoint(mouse.x,mouse.y)fixedpoint(arrow.x,arrow.y)Math.atan2(y,x)可以正确计算出对应的角度(注:Math.atan2已经被计算机用弧度表示)vardx=Math.abs(mouse.x-arrow.x)vardy=Math.abs(mouse.y-arrow.y)varangle=Math.atan2(dy,dx);console.log('弧度为:'+angle);3.勾股定理在直角三角形中,两条边的平方和等于斜边的平方。A平方+B平方=C平方计算两点之间的距离点1:(x1,y1)点2:(x2,y2)vardx=Math.abs(x2-x1)vardy=Math.abs(y2-y1)vardist=Math.sqrt(dxdx+dydy);console.log('距离为:'+dist);数学是最基础的核心,因此,在使用Swift进行游戏开发时,无非是调用XCode的函数来计算角度,三角学原理不变。如果我们要计算飞船的旋转方向,使飞船的机头转向敌机(图中右上角),我们可以使用下面的函数来获取旋转方向letangle=atan2(playerVelocity.dy,playerVelocity.dx)playerSprite。zRotation=angle//(atan2得到了弧度,但是这里飞船指向敌机的方向不正确)为什么方向(飞船机头指向敌机)不正确?因为0°的数学角度是X-Axis轴的正方向,而航天器图片的机头是在Y轴的正方向,所以需要修正一个90度的圆弧。通俗地说,数学是基础。不知道你飞船图上机头的方向是朝向Y轴还是某个地狱角,因为你是图,所以你要修正一下。letdegreesToRadians=CGFloat.pi/180//MethoddegreesToRedians*角度可以变成弧度。letradiansToDegrees=180/CGFloat.pi//注意先把角度(90)转换成弧度90*degreesToRadiansplayerSprite.zRotation=angle-90*degreesToRadians//这里总结一下机头正确的旋转方向:mastering三角学原理很重要!看一遍不明白,多看几遍,多花点时间,作品自然来了!希望iFIERO能帮到你^_^~以上文章整理自以下两篇文章,感谢分享:http://www.cnblogs.com/eyeear...https://baijiahao.baidu.com/s...更多游戏教学:http://www.iFIERO.com--iFIERO以游戏开发为荣