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

java - 一类任意维度的数学向量

我想为数学向量(保存实数)编写一个类。我认为无论向量的维度如何,向量操作都几乎相同,所以我不想写像Vector2D, Vector3D, Vector4D, ... 这样的类,我只想写一个Vector类。

现在的问题是我不能将 2D 矢量与 4D 相乘,所以我想到了 field dimension。但现在我必须检查每一次手术,所以我问自己是否可以做得更好。这是我想到的泛型。但话又说回来,我必须做类似的事情Vector<? extends Dimension>,其中Dimension​​只是 的一个基类Dimension.OneDimension.Two等等,这意味着我必须为Dimension我想在其中使用 vectos 的每个维度编写一个类。

所以我的问题:

有没有一种方法可以为任意维度的向量编写一个类,而无需在运行时检查维度?

0 投票
1 回答
109 浏览

.net - 处理飞行相机的 LookVector

我正在尝试在 XNA 中设置一个自由飞行的相机。在这种情况下,我主要使用连接到 CLR 的 Lua 来控制相机。

到目前为止,我已经尝试了以下方法:

我显然没有做正确的事情,因为结果变成了相机在同一点的正负形式之间来回弹跳。

这是我在 KeyUp 上使用的代码:

我是否误解了 LookVector 是什么? LocalCamera是当前相机对象,Target它是相机正在查看的位置,也是Position它正在查看目标的点。

0 投票
1 回答
135 浏览

linear-algebra - 找到具有不同方向的任何向量的最简单方法

获取输入向量(给定为 (x,y,z))并找到一些与它不同方向的新向量的最简单方法是什么?任何方向都可以,它必须是与输入不同的方向(除了完全相反的方向,这是微不足道的)。

似乎应该有一个不涉及分支的简单解决方案,但我似乎找不到一个,但经过一番之后,我很想知道是否真的有一个。

0 投票
1 回答
1323 浏览

c# - XNA 矢量数学运动

我正在用 c# xna 为我在大学的游戏设计课制作一个自上而下的 2D rpg 游戏。我正在尝试创建一个简单的 AI,将敌人移向玩家。目前我的代码如下

目标在更新方法中正确传递:

但敌人根本不动。我在构造函数中添加了代码,确保敏捷性和移动速度不为 0。更改这些值没有任何作用。

谢谢你的帮助。

0 投票
2 回答
1242 浏览

algorithm - 了解速度并实施 Boids 算法?

因此,我正在根据此处的伪代码将 Boids 移植到 Brightscript 。

我试图了解所涉及的数据结构,例如 Velocity 是单个值,还是 3D 值?(即velocity={x,y,z}

似乎伪代码似乎混淆了这一点,有时它有一个包含向量和单值项的方程:

如果 Velocity 是一个三方值,那么这是有道理的,但我不确定。

所以,我的第一个问题:基于上面的伪代码,这是单个 boid 的正确数据结构吗?

其中pc= 感知中心,和pv= 感知速度。

我已经实现了一个vector_add、、、vector_subvector_div向量布尔函数。

我从这个伪代码开始的原因是我找不到任何其他可读的东西,但它仍然给我留下了很多问题,因为没有为每个变量明确定义数据结构。

(编辑)这是我正在谈论的一个很好的例子:

如果b.position - b[j].position都是 3D 坐标,除非它们是 3D 坐标,否则它们如何被视为“小于 100” < {100,100,100}

0 投票
2 回答
1194 浏览

math - 给定由法线和点定义的平面时找到下坡方向矢量

因此,我有一个由空间 P 中的一个点和一个法线 N 定义的平面。我想找到直接指向平面上“下山”的法线向量。我将如何解决这个问题?

0 投票
1 回答
2675 浏览

trigonometry - 用任意点找到两条平行线之间的最短距离

我需要编写一个可靠的方法来检索以下场景的答案......

给定一条线段 AB 和一个任意点 C,我将如何在与 AB 平行且穿过点 C 的线上找到离 A 最近的点?(上面提到的可靠是指算法能够找到 D,同时允许 A、B 和 C 的坐标是完全任意且不可预测的。我遇到了很多我无法适应的解决方案可能的情况,可悲的是......)

在下图中显示的数据的情况下,我如何可靠地找到 D 的 x,y 坐标?

知道 AB 和 CD 是平行的,这显然意味着斜率是相同的。

我尝试了许多不同的公式都无济于事,并且已经为此工作了数周。我难住了!

图表

0 投票
1 回答
3169 浏览

directx - 使用几何着色器的广告牌

我正在尝试使用几何着色器渲染广告牌,该几何着色器将点作为输入并输出三角形流(使用 DirectX11)。然而,目前的结果并不是我所期望的。

为了比较,这里有两张截图,渲染了相同的一组粒子,从相同的方向(或多或少,我不得不将相机旋转约 90°)和距离,一次渲染为点,一次用我的广告牌渲染着色器:

使用广告牌着色器渲染的粒子 粒子渲染为点

正如您在第二张图片中看到的那样,当渲染为点时,可以清楚地看到粒子正在远离中心移动,几乎覆盖了整个屏幕,而当使用广告牌着色器渲染时,它们的比例略有变化,但始终保持静止。

不幸的是,我不知道是什么原因造成的。我一直在关注诸如this之类的教程,它解释了应该如何设置矩阵,但是结果表明我的期望或实现是错误的。

下面是广告牌着色器的代码,它构建矩阵来描述粒子的方向,然后为广告牌发射两个三角形:

作为参考,这里是将粒子渲染为简单点的着色器代码:

我注意到的另一个奇怪之处是我的广告牌没有面向相机,至少并非总是如此。但是,从我设置矩阵的方式来看,我希望他们能够这样做。相反,它们仅在从两个相反方向观察时才面向相机,然后在我开始旋转相机时宽度会减小。

这使我相信我在构建矩阵时犯了一个错误,但是我无法发现它。

希望大家能帮我找到问题。在此先感谢您的帮助!

编辑

我似乎已经找到了解决这个问题的方法,但是我不明白为什么会这样。出于某种奇怪的原因,我不能将 localToWorld 矩阵与 ViewProjection 矩阵相乘。相反,我必须将其分为两个步骤,如下所示:

我不明白为什么会这样,也许它与使用 row_major 矩阵而不是默认的 column_major 有关。但就像现在一样,这种行为对我来说根本没有任何意义:矩阵乘法应该是关联的,因此上面的代码片段应该产生与原始代码相同的结果,但显然不是。也许你们中的一些人可以对这里发生的事情有所了解。

0 投票
2 回答
2104 浏览

c++ - 用向量模拟行星轨道

为了更好地理解矢量是如何工作的,我正在尝试创建一个非常简单的地球绕太阳运行的模拟。目前,我只想让地球绕太阳转一圈。没有考虑任何物理定律。

我认为我正在做的事情会奏效,但是它创造了某种进入斐波那契螺旋的运动。

我的计算出了什么问题?

0 投票
3 回答
206 浏览

c++ - 改进数学函数类以提高 C++ 速度

我写了一些数学函数在我的程序中使用,它们会被大量使用。我想提供代码,看看a)是否有逻辑改进,b)是否有更好的方法来做这些。它是一个头文件,包含在需要的地方。

我不是为 c++11 编译的,所以请记住这一点。- 我也知道负数的 rootDouble 在数学上是不正确的。

我认为可能出现的第一件事是将矢量输入转换为通过引用传递,欢迎对此发表评论。

就我接受答案而言,我想知道可以改进哪些功能以及如何改进这些功能以提高速度。

++ 我很快就发布了这个,希望我没有在里面留下任何令人尴尬的错误!