问题标签 [trigonometry]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
8174 浏览

c - sin、cos、tan 和舍入误差

我正在用 C/C++ 进行一些三角函数计算,并且遇到了舍入错误的问题。例如,在我的 Linux 系统上:

该程序给出以下输出:

当正确答案当然是 0 时。

使用三角函数时,我可以预期多少舍入误差?我怎样才能最好地处理这个错误?我熟悉 Bruce Dawson 的Comparing Floating Point Numbers中用于比较浮点数的 Units in Last Place 技术,但这似乎在这里不起作用,因为 0 和 1.22e-16 相隔相当多的 ULP。

0 投票
2 回答
3964 浏览

c++ - c ++ opengl将模型坐标转换为世界坐标以进行碰撞检测

(这都是正交模式,原点在左上角,x 向右为正,y 沿 y 轴为正)

我在世界空间中有一个矩形,它可以有一个旋转 m_rotation(以度为单位)。

我可以很好地处理矩形,它可以旋转、缩放,以及你想要它做的一切。

我真正感到困惑的部分是从其局部坐标计算矩形世界坐标。

我一直在尝试使用以下公式:

我尝试实现这样的公式:

我为平移点创建一个向量,将其存储在矩形 world_vertice 成员变量中。没关系。但是,在我的主绘制循环中,我从 (0,0,0) 到向量 BL 画了一条线,看起来这条线从矩形上的点开始呈圆形(矩形左下角)围绕世界坐标的原点。

基本上,随着 m_orientation 变大,它会在 (0,0,0) 世界坐标系原点周围画一个大圆圈。编辑:当 m_orientation = 360 时,它被设置回 0。

我觉得我做错了这部分:

t 是以弧度为单位从 x 轴测量的角度。

可能我不应该在这个公式中使用 m_orientation (矩形旋转角度)?

谢谢!

编辑:我这样做的原因是为了碰撞检测。我需要知道矩形的坐标(即将成为刚体)在世界坐标位置中的位置以进行碰撞检测。

0 投票
5 回答
3702 浏览

c# - C# - 三角函数代码解释(物理)

这段代码取自使用 XNA 框架构建的游戏。我想从三角和物理方面解释它是如何工作的。

ball.velocity = new Vector2((float)Math.Cos(cannon.rotation), (float)Math.Sin(cannon.rotation));

ball.rotation 是我应该想到的精灵的旋转,弧度。

为什么他们只能使用弧度角来找到 x 位置,然后用同样的方法来找到斜边指向的方向的 y 位置。

我问这个的原因。我想了解一下这个框架如何进行三角计算。我试图让精灵转向鼠标所在的方向,即:x 和 y 是已知的,我只需要角度。

所以这里有2个问题。解释上面的代码并将精灵指向已知点的方向。

更新:

我发现对象所在的点a不是(0,0),因为xna使用逆坐标系。所以现在我拥有的变量是:

对象点。鼠标点。

0 投票
11 回答
9182 浏览

c - 嵌入式系统上的三角函数

sin并且cos功能很慢,需要大量资源才能在嵌入式系统上运行。如何以更节省资源和更快的方式计算sin和运行?cos

0 投票
5 回答
28244 浏览

c++ - 给定角度和长度,如何计算坐标

假设左上角为(0,0),给定30度角,起点(0,300),线长600,如何计算线的终点,使线代表给定的角度。

C伪代码是

0 投票
6 回答
49337 浏览

math - 在Java中计算距离纬度/经度坐标一定距离的边界框

给定一个坐标(纬度,经度),我试图计算一个距离坐标给定距离(例如 50 公里)的方形边界框。因此,作为输入,我有纬度、长距离和距离,作为输出,我想要两个坐标;一个是西南角(左下角),一个是东北角(右上角)。我在这里看到了几个试图在 Python 中解决这个问题的答案,但我特别在寻找 Java 实现。

为了清楚起见,我打算仅在地球上使用该算法,因此我不需要适应可变半径。

它不必非常准确(+/-20% 很好),它只用于计算小距离(不超过 150 公里)的边界框。所以我很乐意为高效的算法牺牲一些准确性。任何帮助深表感谢。

编辑:我应该更清楚,我真的在追求一个正方形,而不是一个圆圈。我知道正方形的中心与正方形周边的各个点之间的距离不是一个恒定值,就像圆形一样。我想我的意思是一个正方形,如果你从中心画一条线到周长上的四个点中的任何一个,导致一条垂直于周长一侧的线,那么这 4 条线的长度相同。

0 投票
3 回答
1352 浏览

c# - Easy Trig - 将对象移动到某个位置

我知道这是很简单的三角学,但是我从来没有被介绍过向量等,而且我不知道它是如何工作的。

给定一个位于 XY 点的物体和一个方向 N,你如何在那个方向上移动那个物体?

另外,给定 XY 点的对象和 XY 点的目的地,如何将对象移向目的地?

我知道有一些需要添加向量等。

有人可以请我参考一些容易消化的材料吗?

谢谢。

0 投票
25 回答
1349663 浏览

c++ - 如何在 C++ 中使用 PI 常量

我想在一些 C++ 程序中使用 PI 常数和三角函数。我得到三角函数include <math.h>。但是,此头文件中似乎没有 PI 的定义。

如何在不手动定义的情况下获得 PI?

0 投票
2 回答
1133 浏览

algorithm - 定点反正弦

有谁知道一种(最好是快速)计算 4.12 固定点角度正弦的方法?(结果是圆的 32768 度或度数)

4.12定点表示数字为16位,左移12位,所以1.0变为(1 << 12)或4096。0.5为(0.5 << 12) == 2048,以此类推。

0 投票
1 回答
8361 浏览

opengl - 如何在 3d 中挤出路径?

我正在尝试在 3d 中挤出一条路径。还没有什么花哨的,只是遵循一些要点并使用正多边形作为“管道”。我现在使用 Processing 来快速原型化,但稍后会将代码转换为 OpenGL。

我的问题是以直角旋转“关节”。我想我对如何获得角度有一个粗略的想法,不确定。

我从 Simon Greenwold 的示例开始(处理 > 文件 > 示例 > 3D > 表单 > 顶点)。这是我迄今为止的尝试:

更新 > 重构/简化代码

这是挤出类:

导入处理.core.PMatrix3D;

更新

这是我的草图的样子:

加工挤压 http://doc.gold.ac.uk/~ma802gp/extrude.gif

问题是接头的角度不正确,所以拉伸看起来不对。这不是一个很好的例子,因为这可以通过车床实现。如果我能得到一台车床来处理任意一组点和一个轴,那就太好了。我正在使用挤压,因为我正在尝试根据 Liviu Stoicoviciu 的艺术创建几何体。

以下是一些示例:

星画 http://doc.gold.ac.uk/~ma802gp/star_painting.jpg

星星纸雕塑 http://doc.gold.ac.uk/~ma802gp/star_paper_sculpture.jpg

三角形 http://doc.gold.ac.uk/~ma802gp/triangles_pencil.jpg

对不起质量差。

正如您在三角形图像中看到的那样,这将通过挤压来实现。

更新

这是我在 draw 方法中使用 drhirsch 帮助的尝试:

我已经重构了代码,所以现在曾经被称为 CShape 的类被称为 Extrude,代码更少并且希望更简单,并且我使用 PVector 对象数组而不是 PVector 对象的 Vector,这可能会令人困惑。

这是我的又一次尝试,得到了一些埃舍尔式的结果:

上调平局

fix_test http://doc.gold.ac.uk/~ma802gp/extrude2.gif

由 drhirsch 编辑这应该有效:

更新

这是我的问题的简单说明:

说明 http://doc.gold.ac.uk/~ma802gp/description.gif

蓝色路径相当于我的代码中的 points[] PVector 数组,如果 pointsNum = 6。红色路径是我正在努力解决的,绿色路径是我想要实现的。

更新

我认为顶点顺序的一些小问题。下面是一些使用 6 个点且没有(if/else % 2)星条件的打印屏幕。

点1 http://doc.gold.ac.uk/~ma802gp/points1.gif

替代文字 http://doc.gold.ac.uk/~ma802gp/points2.gif