Articles of 三角学

屏幕周围的小地图,代码提供

我基本上想要做的就是现在很多FPS的HUD。 当目标不在屏幕上时,屏幕的周边会显示一个小图标/符号,基本上指向目标。 我在2D工作,我试图让屏幕上的敌人(自上而下)通过屏幕周边(矩形视图,非常标准)周围的小点显示其位置。 简单地说,我试图在知道其他一切时发现红点的价值: 这是我的代码,虽然它似乎是一半function,有时它会做有趣的事情。 // Scan through enemiesRef list, and update dots to draw. // —————————————————— Enemy enemyRef; float a, b, x, y; float screenRatio = frustumWidth / frustumHeight; float minX = topLeft.x; float maxX = topLeft.x + frustumWidth; float minY = topLeft.y; float maxY = topLeft.y + frustumHeight; // Loop through each enemy. […]

如何拍摄触摸的方向

我是新来的电晕SDK(我也吸三角),我试图实现这一点: 从玩家射出一颗子弹,朝着用户触摸点的方向射击,但始终以相同的速度射击,无论玩家的触摸距离多远。 我尝试了几个解决scheme。 经过一番研究,我发现我应该用两个三角形来度量角度,然后分别用角度的cos和sin作为x和y的值。 但是当我尝试这样做,我得到相当随机的结果。 从我想要达到的距离越近,就可以使用deltavariables作为X和Y(乘以速度因子)。 它的工作,但速度变化的基础上,我所触摸的球员多远,我希望速度是固定的。 这是我最新的代码(使用罪和COS) local math, physics = require("math"), require('physics') physics.start() physics.setGravity( 0, 0 ) display.setStatusBar( display.HiddenStatusBar ) local screenW, screenH = display.contentWidth, display.contentHeight local playerX, playerY = (screenW / 2), (screenH / 2) local player = display.newRect( 0, 0, 30, 30 ) player.x = playerX player.y = playerY — local […]

如何locking画出的线与现有的线正交?

我在Corona为Android / iPhone制作了一个类似于Volfied的2D游戏。 在我的游戏中,用户必须触摸屏幕为角色画出一条线。 我怎样才能强制直线,而不是自由绘制? 我可以用atan2和X和Y的区别来检测滑动的方向,但是我无法确定线的轴心点。 我怎样才能确定线路何时应该转弯? 你可以看到我想要完成在这个video的Volfied游戏 。

计算弹丸运动

我在制定一个方法时会遇到一些麻烦,这个方法会不断地向同一方向准确地移动一个“子弹”。 这是我迄今为止 public Vector3f moveFromPosition(Vector3f location, float pitch, float yaw, Game game) { Vector3f loc = location; loc.z += 0 * Math.cos(Math.toRadians(yaw – 90)) – 1 * Math.cos(Math.toRadians(yaw)); loc.x -= 0 * Math.sin(Math.toRadians(yaw – 90)) – 1 * Math.sin(Math.toRadians(yaw)); loc.y += 0 * Math.sin(Math.toRadians(pitch – 90)) – 1 * Math.sin(Math.toRadians(pitch)); return loc; } 这种方法在渲染方法中被调用,所以每一帧都会移动子弹1的空间,这取决于子弹被发射的音高,偏航和位置。 俯仰和偏航值保持相同的每一帧,而vector3f“位置”代表子弹当前的位置。 […]

我怎样才能计算出正常情况下与平面的相同部分?

对于A而言,n0,对于B,n1为平面,由平面CD划分。

如何使用atan2来获得正确的角度? (内外角)

我想旋转一个对象(白色矩形)朝另一个对象(黑色矩形)。 编辑:白色的矩形(在顶部)有一个相机。 我最后把相机在“y”轴周围旋转了180度,因为它正在向右看图像。 现在,我们的目标是围绕“x”轴旋转相机,绿色的角度。 我发现了一些解释atan2的图像: 我试图做的是: 编辑:绿色的角度似乎是错误的,这里是一个新的: 如果我指的是三角环,我应该有一个-120左右的值: 会有人知道发生了什么? 这是我正在使用的代码: //boxNode is the black rectangle, boxYellow is the white rectangle at the top //163 degrees let opposite = boxNode.position.z – boxYellow.position.z let adjacent = boxNode.position.y – boxYellow.position.y //-73 degrees //let opposite = boxNode.position.y – boxYellow.position.y //let adjacent = boxNode.position.z – boxYellow.position.z camRadians = atan2(opposite, adjacent) […]

在LimeJS的一个旋转的表面“走”

我试图让一个人物沿着一个像跷跷板一样工作的木板(一个细长的长方形)行走,通过box2d物理(落下的物体)围绕一个中心点旋转。 我希望左右箭头键可以上下移动播放器,不管斜率如何,我也不想用真实的物理学来播放播放器。 我的想法是根据板的旋转和当前位置“上”或“下”棋盘来计算坐标。 我的math是从这里派生的: https : //math.stackexchange.com/questions/143932/calculate-point-given-xy-angle-and-distance 这是我迄今为止的代码: movement = 0; if(keys[37]){ // Left movement = -3; } if(keys[39]){ // Right movement = 3; } // this.plank is a LimeJS sprite. // getRotation() Should return an angle in degrees var rotation = this.plank.getRotation(); // this.current_plank_location is initialized as 0 this.current_plank_location += movement; var x_difference = […]

如何使用atan2在游戏开始点附近进行操作?

我想移动一个操纵杆,并且能够超出圆的极限,操纵杆应该跟随触摸的角度(触摸正在移动),但是它应该停留在圆上。 它不应该超越这个圈子。 我用atan2计算角度,然后从起点将游戏杆放在特定的半径处。 问题是这些值只有正值,所以操纵杆只停留在右上角:触摸下去时,操纵杆一直到y = 0,然后上升,而触摸仍然下降。 你会知道如何解决这个问题吗? 操纵杆应该沿着与触摸相同的角度,围绕起点: 这里是代码: func moveJoystick(touch:CGPoint){ let invY : Float = Float(self.view!.frame.size.height) – Float(touch.y) let dy : Float = Float( fabs( invY – Float(startPosFrontJoystick.y) ) ) let dx : Float = Float ( fabs( touch.x – startPosFrontJoystick.x ) ) //find angle when more than limit of radius //** HERE ** […]

桥接两个圆的矩形的角的坐标

我正在实施一个涉及弹弓和圆形物体的游戏。 我已经获得了弹弓的基本“几何”构造,但是在我的游戏中(在js中编写,尽管任何语言的解释都将被理解),我无法实现这一点。 以下是所需结构图: 我知道(cx,cy),这是我正在“启动”的圆的中心,圆的半径以及鼠标在任何给定时间(mx,my)的位置。 围绕(mx,my)的第二个圆包含与以(cx,cy)为中心的圆相同的半径。 线ST和QP是平行的。 我必须find点P,Q,S和T的坐标。任何有效的方法来解决这个问题? (我会使用三角,vectormath,代数?)具体的例子表示赞赏。 谢谢。

日/夜 – 从正弦波旋转

我最近在堆栈交换中发现了一个很好的答案,这个问题展示了如何将游戏时间压缩成正弦波,其中1 =中午和-1 =午夜 将时间转换为平滑的日/夜variables? 我已经实现了这个罚款,据我所知,但我有点困惑,如何得到一个干净的旋转从此驱动一个定向灯。 目前,我正在使用弧正弦将波转换为弧度,然后将其转换为度,但是我觉得这是违背获取正弦的整个过程。 它实际上并没有正确的工作,因为我们无法知道我们正在使用的单位圆的哪一侧,至less不能用我目前的设置。 有没有一种干净的方法可以让我从这个正弦值中提取一个旋转角度,这样太阳就能平稳地旋转了? 谢谢!