问题标签 [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 投票
1 回答
1035 浏览

python - Python中numpy叉积的Rollaxis错误

我一直在尝试确定这个简单脚本的错误来源,该脚本将 numpy.array 作为输入并从数据集中生成一个新格

当我尝试改变我的格子,甚至使用精简的例子和多种不同的方式时

喜欢

或者

我只是收到这个错误

rollaxis 在这个问题中做了什么,它在这个问题的容量中做了什么,以及当我分配一个值时我到底在设置什么。如何修复此错误(如何小于 1 且大于或等于 1?)

我的测试矩阵是:

0 投票
0 回答
67 浏览

three.js - 从 Obb3 获取 3D 立方体

给定一个 Obb3(中心、HalfVector 和轴 [3]),
如何创建一个与此 Obb3 具有相同边界的立方体?然后我将使用这个立方体来显示我的 obb3 边界。

我使用vector_math 和three.dart 库
到目前为止,我的代码是:

非常感谢你的帮助 :]

0 投票
2 回答
3433 浏览

c# - 在给定当前角度和目标位置的情况下计算目标角度?

我一直在努力解决我认为应该是一个非常简单的问题:

问题示意图.

我知道当前的航向角(比如 15 度),并且给定目标游戏对象的变换,我想计算我应该朝向目标旋转的角度。在上面的例子中,我想计算 335ish 度。

请注意,我需要计算目标角度,我有另一个类,给定一个角度,负责将航向旋转到所需的角度。我知道 Transform.LookAt() 和其他类似函数,它们不适用于这种情况,因为原因(在其他类中,由于项目限制,我基本上计算欧拉四元数和 Lerp 直到达到目标角度,Transform.LookAt() 不起作用)。

在第一种方法中,我尝试用 Vector3.forward 的点积和方向向量计算角度 theta,但效果不太好(永远旋转或方向错误)

问题示意图

我想也许如果我可以计算当前的航向方向向量,我可以取它和目标方向向量的点积来得到角度 theta,然后使用 theta 和当前角度来计算目标角度(360 - theta 什么的?) 得到我想旋转到的角度。问题是,我只有当前角度和当前位置,我不明白如何根据该信息计算当前航向方向向量。我是否只是在当前位置的 Z 值上添加一些任意常数并从当前位置减去,以获得 dir 向量?看起来很hacky,好像它不应该工作。

问题示意图

欢迎任何想法。

编辑:附加信息

定向代码 /u/Asad 询问:

然后在 FixedUpdate() 我有:

0 投票
0 回答
283 浏览

math - 通过角速度控制火箭在 3D 空间中瞄准目标

我的目标:控制火箭瞄准 3d 空间中的坐标

数据:

  • 目标位置向量 (x, y, z)
  • 当前位置向量 (x, y, z)
  • 电流方向向量 (x, y, z)

问题:我只能通过线速度(推力)和角速度(旋转)来操纵火箭的实体。

只能设置起始位置/方向。发射后,唯一的控制是通过改变角速度来旋转导弹。此外,这些旋转轴被锁定在空间中,而不是相对于火箭。

在生成/渲染每一帧之前,可以更改速度。我希望火箭从每一个可能的发射位置飞到目的地。

我坚持将当前位置矢量和方向矢量以及目标矢量转换为火箭旋转的基本概念。

如何进行?

如何计算火箭在飞行路径上的角速度对目标当前位置和方向的依赖?

更精确:

如何计算必须在哪个方向上设置角速度以最小化方向矢量和(目标矢量 - 位置矢量)=目标航向矢量之间的增量?

0 投票
2 回答
180 浏览

javascript - 如何沿向量移动节点?

我在围绕中心点的圆圈中有一堆节点。我通过首先绘制弧然后使用弧 [X,Y] 位置来获得这些位置,填充了一个用于节点位置的数组。使用来自 javascript 库 D3 的 forcelayout。

我现在要做的是,如果节点满足某个条件,例如名称以 L 开头,则将它们移到更大圆圈的轮廓。我做了一个简单的图表来解释。

我想从 x2,y2 移动到 x3,y3

我希望能够从 [X2,Y2] 移动到 [X3,Y3]。我标记了 [X1,Y1] 因为我确定您需要它来计算从 x1y2 到 x2,y2 的向量,然后希望将用于计算沿该向量的运动,但我不确定如何进行此运动

0 投票
3 回答
220 浏览

c++ - Vector 类的专用构造函数

我正在尝试编写一个数学向量类。第一个版本如下:

我还在类之外声明了运算符(+、* 等),以及其他几个类。

事情是这样的。对于长度为 2、3、4 的向量,我想要一个以 x,y(对于 Vec2)、x、y、z 或 x、y、z、w 作为参数的构造函数(或函数)。

但是,您似乎无法为此目的制作专门的构造函数。在这种情况下我应该如何进行?我必须完全专门化三个案例吗?这不是意味着我必须重写代码块吗?

我也有一个类似的 Matrix 类(Matrix),我很确定我需要一些用于旋转、平移、缩放等的构造函数。我假设我需要克服类似的问题。

如果你看到

我还在类外声明了运算符(+、* 等),以及一些其他函数(点、十字等)。

事情是这样的。对于长度为 2、3、4 的向量,我想要一个以 x,y(对于 Vec2)、x、y、z 或 x、y、z、w 作为参数的构造函数(或函数)。

但是,您似乎无法为此目的制作专门的构造函数。在这种情况下我应该如何进行?我必须完全专门化三个案例吗?这不是意味着我必须重写代码块吗?

我也有一个类似的 Matrix 类(Matrix),我很确定我需要一些用于旋转、平移、缩放等的构造函数。我假设我需要克服类似的问题。

如果您在代码中看到任何对您来说似乎错误的地方,请随时指出。

编辑:如果我不够清楚,数组应该是一维的,并且它的所有组件都是相同的类型。专门针对具有 2、3 和 4 个元素的数组。

0 投票
1 回答
64 浏览

c - vectormath 库和矩阵运算

我在 github 上找到了此副本以链接到,但我使用的是从 sourceforge 下载的副本。

我对他们设计矩阵运算的方式的问题对我来说似乎很奇怪。

例如,如果我创建一个 4×4 矩阵并设置它的比例。然后我想使用vectormath矩阵库旋转之前的矩阵似乎将矩阵重置回单位矩阵然后应用旋转这没有任何意义为什么会发生这种情况。

看看这个函数做一个旋转

这个库是否希望您保留多个矩阵,使用一个来应用旋转然后相乘?

编辑

这是我以前用来旋转矩阵的一些矩阵数学代码,它看起来像这样。

这是我必须采取的过程才能让 vectormath 做同样的事情。

乘法代码是相当标准的,但 vmathM4MakeRotationY 看起来像这样:

只是为了完整性, vmathV4Make_Axis 看起来像这样:

vmathV4MakeFromElms 看起来像这样:

0 投票
1 回答
1578 浏览

python - 沿任意平面平移 3D 点

我正在使用 3D PDB 坐标。我首先使用 numpy.linalg.lstsq 来求解最小二乘方程,基本上给了我平面的系数(我认为)。我可以使用 matplotlib 查看飞机,它似乎是正确的。我希望能够沿最小二乘解决方案给出的平面平移我的 3D 坐标。例如,我希望能够在新平面的 (X,Y) 上平移点。将点旋转到 (0,0,1) 为法线的平面上会更容易吗?我对我正在努力完成的事情的拙劣说明

0 投票
0 回答
432 浏览

c++ - 计算顶点法线奇怪的结果

我知道这已经被问过几次了,但我的问题不在于如何去做。我知道这是如何工作的(或者至少我是这么认为的^^),但我的实现似乎有问题,我无法支持它。我有一个程序生成的地形网格,我试图通过平均这个顶点连接到的所有三角形的法线来计算每个顶点的法线。当将法线 xyz 设置为 rgb 顶点颜色时,它看起来好像是随机的黑色 (0, 0, 0) 或蓝色 (0, 0, 1)。

}

也许有人可以看看并告诉我我做错了什么。谢谢你。

编辑:感谢 molbdnilo 的评论,我终于明白出了什么问题。索引数组有问题,我的两个循环也有点混乱,也许我应该休息一下;)我最终想出了这个,减少到一个循环:

0 投票
1 回答
119 浏览

c# - 旋转 2 向量,向后移动和跳过区域。C#

我正在尝试使用 2 向量的旋转,但我遇到了两个问题。首先,向量似乎在向后旋转,其次,向量在旋转时会在两个区域之间跳跃。

这是我用于旋转的代码(在矢量类中,带有 adouble xdouble y):

当我使用这些来旋转矢量时,它会逆时针旋转,而不是我认为应该的顺时针旋转。为了演示,一张图片:

金色的原始矢量,蓝色旋转

它的旋转也比我认为的要多得多。另一个更难解释的问题是,旋转在大约四分之二的跨度上平稳运行,但跳过了另外两个。我发现的另一个问题是,如果我旋转矢量的角度很小(在我的测试中,任何超过 (1, 10) 的角度),旋转开始时很强烈,但会减慢并最终停止。这在我看来像是 C# 的精度问题double,但我试图通过确保旋转矢量的长度不会改变来解决它。

无论如何,如果您能发现我的一个或所有问题的原因,那将不胜感激。