问题标签 [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.
java - 一类任意维度的数学向量
我想为数学向量(保存实数)编写一个类。我认为无论向量的维度如何,向量操作都几乎相同,所以我不想写像Vector2D
, Vector3D
, Vector4D
, ... 这样的类,我只想写一个Vector
类。
现在的问题是我不能将 2D 矢量与 4D 相乘,所以我想到了 field dimension
。但现在我必须检查每一次手术,所以我问自己是否可以做得更好。这是我想到的泛型。但话又说回来,我必须做类似的事情Vector<? extends Dimension>
,其中Dimension
只是 的一个基类Dimension.One
,Dimension.Two
等等,这意味着我必须为Dimension
我想在其中使用 vectos 的每个维度编写一个类。
所以我的问题:
有没有一种方法可以为任意维度的向量编写一个类,而无需在运行时检查维度?
.net - 处理飞行相机的 LookVector
我正在尝试在 XNA 中设置一个自由飞行的相机。在这种情况下,我主要使用连接到 CLR 的 Lua 来控制相机。
到目前为止,我已经尝试了以下方法:
我显然没有做正确的事情,因为结果变成了相机在同一点的正负形式之间来回弹跳。
这是我在 KeyUp 上使用的代码:
我是否误解了 LookVector 是什么? LocalCamera
是当前相机对象,Target
它是相机正在查看的位置,也是Position
它正在查看目标的点。
linear-algebra - 找到具有不同方向的任何向量的最简单方法
获取输入向量(给定为 (x,y,z))并找到一些与它不同方向的新向量的最简单方法是什么?任何方向都可以,它必须是与输入不同的方向(除了完全相反的方向,这是微不足道的)。
似乎应该有一个不涉及分支的简单解决方案,但我似乎找不到一个,但经过一番之后,我很想知道是否真的有一个。
c# - XNA 矢量数学运动
我正在用 c# xna 为我在大学的游戏设计课制作一个自上而下的 2D rpg 游戏。我正在尝试创建一个简单的 AI,将敌人移向玩家。目前我的代码如下
目标在更新方法中正确传递:
但敌人根本不动。我在构造函数中添加了代码,确保敏捷性和移动速度不为 0。更改这些值没有任何作用。
谢谢你的帮助。
algorithm - 了解速度并实施 Boids 算法?
因此,我正在根据此处的伪代码将 Boids 移植到 Brightscript 。
我试图了解所涉及的数据结构,例如 Velocity 是单个值,还是 3D 值?(即velocity={x,y,z}
)
似乎伪代码似乎混淆了这一点,有时它有一个包含向量和单值项的方程:
如果 Velocity 是一个三方值,那么这是有道理的,但我不确定。
所以,我的第一个问题:基于上面的伪代码,这是单个 boid 的正确数据结构吗?
其中pc
= 感知中心,和pv
= 感知速度。
我已经实现了一个vector_add
、、、vector_sub
和vector_div
向量布尔函数。
我从这个伪代码开始的原因是我找不到任何其他可读的东西,但它仍然给我留下了很多问题,因为没有为每个变量明确定义数据结构。
(编辑)这是我正在谈论的一个很好的例子:
如果b.position - b[j].position
都是 3D 坐标,除非它们是 3D 坐标,否则它们如何被视为“小于 100” < {100,100,100}
?
math - 给定由法线和点定义的平面时找到下坡方向矢量
因此,我有一个由空间 P 中的一个点和一个法线 N 定义的平面。我想找到直接指向平面上“下山”的法线向量。我将如何解决这个问题?
trigonometry - 用任意点找到两条平行线之间的最短距离
我需要编写一个可靠的方法来检索以下场景的答案......
给定一条线段 AB 和一个任意点 C,我将如何在与 AB 平行且穿过点 C 的线上找到离 A 最近的点?(上面提到的可靠是指算法能够找到 D,同时允许 A、B 和 C 的坐标是完全任意且不可预测的。我遇到了很多我无法适应的解决方案可能的情况,可悲的是......)
在下图中显示的数据的情况下,我如何可靠地找到 D 的 x,y 坐标?
知道 AB 和 CD 是平行的,这显然意味着斜率是相同的。
我尝试了许多不同的公式都无济于事,并且已经为此工作了数周。我难住了!
directx - 使用几何着色器的广告牌
我正在尝试使用几何着色器渲染广告牌,该几何着色器将点作为输入并输出三角形流(使用 DirectX11)。然而,目前的结果并不是我所期望的。
为了比较,这里有两张截图,渲染了相同的一组粒子,从相同的方向(或多或少,我不得不将相机旋转约 90°)和距离,一次渲染为点,一次用我的广告牌渲染着色器:
正如您在第二张图片中看到的那样,当渲染为点时,可以清楚地看到粒子正在远离中心移动,几乎覆盖了整个屏幕,而当使用广告牌着色器渲染时,它们的比例略有变化,但始终保持静止。
不幸的是,我不知道是什么原因造成的。我一直在关注诸如this之类的教程,它解释了应该如何设置矩阵,但是结果表明我的期望或实现是错误的。
下面是广告牌着色器的代码,它构建矩阵来描述粒子的方向,然后为广告牌发射两个三角形:
作为参考,这里是将粒子渲染为简单点的着色器代码:
我注意到的另一个奇怪之处是我的广告牌没有面向相机,至少并非总是如此。但是,从我设置矩阵的方式来看,我希望他们能够这样做。相反,它们仅在从两个相反方向观察时才面向相机,然后在我开始旋转相机时宽度会减小。
这使我相信我在构建矩阵时犯了一个错误,但是我无法发现它。
希望大家能帮我找到问题。在此先感谢您的帮助!
编辑
我似乎已经找到了解决这个问题的方法,但是我不明白为什么会这样。出于某种奇怪的原因,我不能将 localToWorld 矩阵与 ViewProjection 矩阵相乘。相反,我必须将其分为两个步骤,如下所示:
我不明白为什么会这样,也许它与使用 row_major 矩阵而不是默认的 column_major 有关。但就像现在一样,这种行为对我来说根本没有任何意义:矩阵乘法应该是关联的,因此上面的代码片段应该产生与原始代码相同的结果,但显然不是。也许你们中的一些人可以对这里发生的事情有所了解。
c++ - 用向量模拟行星轨道
为了更好地理解矢量是如何工作的,我正在尝试创建一个非常简单的地球绕太阳运行的模拟。目前,我只想让地球绕太阳转一圈。没有考虑任何物理定律。
我认为我正在做的事情会奏效,但是它创造了某种进入斐波那契螺旋的运动。
我的计算出了什么问题?
c++ - 改进数学函数类以提高 C++ 速度
我写了一些数学函数在我的程序中使用,它们会被大量使用。我想提供代码,看看a)是否有逻辑改进,b)是否有更好的方法来做这些。它是一个头文件,包含在需要的地方。
我不是为 c++11 编译的,所以请记住这一点。- 我也知道负数的 rootDouble 在数学上是不正确的。
我认为可能出现的第一件事是将矢量输入转换为通过引用传递,欢迎对此发表评论。
就我接受答案而言,我想知道可以改进哪些功能以及如何改进这些功能以提高速度。
++ 我很快就发布了这个,希望我没有在里面留下任何令人尴尬的错误!