问题标签 [vectormath]

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 投票
3 回答
380 浏览

scaling - 非轴对齐缩放

找到一个好的方法来做到这一点让我有一段时间感到困惑:假设我有一个包含一组点的选择框。通过拖动角,您可以缩放框中的点(之间的距离)。现在对于轴对齐的盒子,这很容易。取一个角作为锚点(从每个点中减去这个角,对其进行缩放,然后再次将其添加到该点)并将每个点 x 和 y 乘以框变大的因子。

但是现在取一个不与 x 和 y 轴对齐的框。当你拖动它的角时,你如何缩放这个框内的点?

0 投票
3 回答
838 浏览

math - 基于云台的绘画机的数学编程帮助

我是一名参与建造各种计算机控制机器的艺术家。我已经开始制作基于万向节的 XY 绘画机的原型,并且意识到所需的数学运算超出了我的能力范围。我是一个足够体面的程序员,但数学不强。3D 数学。

为了了解我需要做什么,查看装备可能会有所帮助:

早期原型:

http://roypardi.com/gimble/IMG_2803.JPG

http://roypardi.com/gimble/IMG_2805.JPG

http://roypardi.com/gimble/IMG_2806.JPG

http://roypardi.com/gimble/gimbleSmall.MOV (小视频)

http://roypardi.com/gimble/gimbleLarge.mov (更大的视频)

两个内圈代表 X/Y 轴,由步进电机控制。我希望能够同时使用光栅图像和矢量数据(gcode)。所以我需要能够在纸上/从我的数据中找到二维空间中的一个点,并让万向节弄清楚它需要处于什么方向才能到达那里(即每个电机步进多少)。

我一直在寻找 2D > 3D 投影、欧拉角等,但我已经超出了我的深度。任何指针、正确方向的推动或代码片段都将受到欢迎。我可以理解大多数编程语言。

0 投票
4 回答
982 浏览

math - 直观的 3D 数学资源

我最近一直在尝试寻找一些很好的介绍和解释的向量和四元数资源来提高我的 3D 技能,但遇到了一些麻烦。

我发现的大多数资源都倾向于跳过执行特定操作很有用的高级原因,而是直接深入到术语和证明中,这些术语和证明往往会很快分散我的注意力。

我发现更好的解释对各种数学主题有很好的解释,但是没有任何向量或四元数。

有谁知道任何高级向量和/或四元数教程?

0 投票
4 回答
2346 浏览

c++ - 带有 C++ 的 OS X 中的 SIMD 索尼矢量数学库

我目前正在为作业编写一个非常简单的游戏引擎,并且为了使代码更好,我决定使用向量数学库。我的一位讲师向我展示了用于子弹物理引擎的 Sony 矢量数学库,就我所见,它非常棒。我已经让它在 Linux 上运行得很好,但我在将它移植到 OS X(英特尔、雪豹)上时遇到了问题。我已将文件正确包含在我的项目中,但库的 C++ 版本似乎无法编译。我可以让 C 版本的库工作,但与 C++ 版本相比,它的 API 相当糟糕,使用这个库的全部原因是首先整理代码。

http://glosx.blogspot.com/2008/07/sony-vector-math-library.html

我偶然发现的这篇博文似乎暗示编译器出了点问题?它相当短,所以我无法从中获取很多信息。

当我尝试使用 C++ 版本时,我收到以下错误(每个错误的扩展视图):

第二个错误:

最后在 main.cpp 文件末尾出现两个错误:

我已经用谷歌搜索了我的心,但我似乎找不到任何答案或任何东西可以为我指明正确的方向,所以任何帮助都会得到很大的帮助。

谢谢,

0 投票
2 回答
387 浏览

math - 圆到切线映射

假设给定一个圆,线 AB 包含它的中心 O,这样 A 和 B 在圆上(OA=OB=半径)。在点 A 上绘制切线 t,我应该计算圆的某些点 (a,b,c,d...) 到切线上的点 (at, bt, ct, dt, . ..) 使得距离 Aa(沿圆的距离)与距离 Aat(沿切线的距离)相同(距离 Ab、Ac、Ad 也相同)。但是,在这里,应该考虑一定的约束:从圆的一侧从 A 到 B 的圆的那些点(在 (a, b, c, d) 之间)应该放在切线的一侧(较近),从 A 到 B 的圆的另一侧应放在另一侧。基本上,圆应该在 B 处分割,然后映射到切线。

应该注意的是,我有关于 A、B、O、a、b、c、d 坐标的信息。我应该计算(at,bt,ct,dt)。为了解决这个问题,我有两种方法,但我不确定如何确保它们始终正常工作。

1)我计算点A的切线方程。然后对于每个点(a,b,c,d)我计算到A的距离(沿着圆),并使用这些距离来计算(at,bt,ct , dt...) 沿切线。我在这里不知道如何计算从 A 到 (a, b, c, d) 的距离。问题是“正确的一侧”确定,这意味着我应该如何确定该点应该映射在切线的一侧还是另一侧。确定这一点的方法是什么。

2)我计算点A的切线方程。然后对于每个点(a,b,c,d)我计算到A的距离(沿着圆),并使用这些距离来计算(at,bt,ct , dt...) 沿切线。为了确定给定点的“正确的一侧”,我可能会使用该点到切线的投影。但是,即使这样,我怎么知道“哪一边是哪一边”?也许有更简单的方法可以做到这一点。

欢迎任何有关如何执行此操作的建议。如果我不够精确,我会详细说明。

0 投票
2 回答
167 浏览

instruction-set - AMD Open64:优化的数学函数

Open64 是否有与Intel Short Vector Math Library Operations等价的东西。

谢谢你。

0 投票
1 回答
1959 浏览

lua - 3d 中圆上的最近点。少了什么东西?

我希望我能清楚地解释这一点。我正在尝试计算 3D 圆上的最近点。我找到了以下解决方案: http ://www.geometrictools.com/Documentation/DistancePoint3Circle3.pdf

我的代码如下(用 Lua 编写)。主要问题是投影Q似乎不正确,或者我不明白如何正确计算它。正如您在论文中看到的那样,Q 应该是圆平面上点的投影。

例如圆的法线是{0,1,0},它的中心位于{3,3,3}。我试图计算到圆的最近距离的点 (p) 位于 {6, 3, 2}。然后,在我的计算中,在圆平面上的投影 Q 是 {6, 0, 2}。

为了使算法工作,我似乎必须用平面的位置偏移 Q,例如在其法线方向上的圆心分量。在这种情况下,y 方向的值为 3。

我可以破解这个普通的 {0,1,0} 因为它很容易,但是一旦圆将面对任何任意位置,我不知道如何计算它。

我错过了什么,我哪里出错了?

0 投票
1 回答
370 浏览

lua - 在光线平面相交之前选择边界框的相关平面

我正在跟踪需要测试它们是否位于立方体/边界框内部或外部的对象。如果它们在外面,我会做一个射线平面相交来计算立方体的一个平面上的一个点。光线从盒子的中心开始,指向物体。该平面是构成立方体的 6 个平面之一。

我想避免的是,我一直在测试 6 个平面中的每一个平面上的射线平面交叉点。所以我想我会很聪明,首先计算每个平面法线和射线之间的点积。然后选择角度最小的那个(最接近 1)。

这只工作了一半。当对象与其中一个平面对齐时,有些位置我的函数选择了错误的平面。但大多数时候它都有效,我想知道为什么会这样。我认为我的方法一定存在根本性错误。

这是我定义的平面,每个都有一个标签。坐标系的 0,0,0 是立方体的一个角。

然后我使用以下功能:

我在这里想念什么?

我想我可以在每个平面上进行碰撞测试,然后选择最接近立方体中心的点,但这似乎是一种浪费。

0 投票
1 回答
360 浏览

xna-4.0 - XNA Vector2 路径包含在矩形内

您好,我是 XNA 的新手,正在尝试开发一个游戏原型,其中角色使用鼠标单击从一个位置移动到另一个位置。

我有一个代表当前位置的矩形。我使用玩家鼠标输入将目标位置作为 Vector2。我通过 Vector2 减法提取从源到目标的方向向量。

我使用平铺地图表示世界,每个单元格都是 32x32 像素。

我想要做的是检查上面的方向矢量是否穿过地图上的任何蓝色瓷砖。蓝色瓷砖在地图上等于 1。

我不知道该怎么做。我考虑过使用线性线方程和三角公式,但我发现它很难实现。我尝试对向量进行归一化并乘以 32 以获得沿向量路径的 32 个像素长度间隔,但它似乎不起作用。谁能告诉我它是否有任何问题,或解决此问题的其他方法?谢谢

0 投票
4 回答
14735 浏览

math - 如何用 glm 计算 vec4 叉积?

为什么这会引发编译错误:没有匹配函数调用 'cross(glm::vec4&, glm::vec4&)'</p>

但它适用于 vec3?