问题标签 [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.
c# - 检测与 VR 按钮方向相同的控制器移动
我正在做一个 VR 项目,我正在努力做一些不应该那么难的事情,但我真的不擅长数学:x
我想做的是在世界上有“物理”按钮,我可以用手指按下/松开它,这部分效果非常好,感觉很完美,但是:
目前,要“按下”按钮,我使用的是控制器的 z delta 位置,所以我不能从顶部按下按钮,因为我需要 y delta。
我试图让按钮面向任何方向,并能够使用控制器的右轴推动它们,但无法绕开它:x
我需要能够根据它的位置/旋转按下按钮。
我不知道它是否真的可以理解(可能不是),也许我只是错过了一些非常明显的东西。
这是我的按钮代码,枚举部分可能没用,我只是在尝试,哈哈
JVRFingerInteract 在我的手指触摸按钮的每一帧都被调用,我只是在手指上做一个重叠球来获得可交互的对象。
按钮的推动轴是按钮的局部 Z 轴,正 Z 指向按钮表面。
c++ - 从鼠标位置数学设置 Actor 世界位置
不幸的是,我的数学知识非常令人沮丧,但我真的很想了解我必须通过用鼠标拖动来控制 Actor 的代码。此代码还可以用作通过在屏幕上单击鼠标将对象放置在世界中的方式。
首先-代码效果很好,更多的是关于向量代数而不是虚幻引擎的问题。我迷路了,我什至不知道如何正确命名变量哈哈
因此,这是我从我发现的一个蓝图示例转换而来的代码,它实现了我需要的功能:
如果有人能解释一下为什么我需要做这些以//不知道..注释行为主角的操作?如果我能理解如何正确命名“NotSureWhyThisValue”、“WhatDoesItMean”、“WhyThisOperation”和“IsThisNewWorldDirection”?这对我来说将是一个巨大的进步,完美的情况是解释每一行......
提前致谢!
c# - 如何让 Unity 中的 AI 角色在玩家前往某个特定点的途中绕过玩家
当我的玩家进入 AI 的距离内时,AI 将其状态更改为 Flee 并调用此函数:
我正在使用(我相信是)从 ai 到他的“enemyBase”的单位向量和从 ai 到玩家的单位向量的点积。如果它是一个介于 0.5 和 1 之间的值,那么这两个向量的方向相似,所以我们需要围绕玩家进行引导。然而,我的 AI 只在地图的某些部分绕着玩家而不是其他地方
c++ - 四元数,如何将一个旋转轴与另一个四元数合并?
我有两个四元数组成我需要的旋转。但是,其中一个包含 Yaw 旋转,另一个包含 Pitch 和 Roll。
我需要做的是从四元数 A 中提取 Yaw,从四元数 B 中提取 Pitch 和 Roll,然后将它们组合成四元数 C。
我有:
这给了我:
当我期望得到以下结果时:
我怎样才能以这种方式合并四元数轴?我哪里错了?
c++ - 使用 `glm::rotate` 和四元数向上旋转 3D 方向向量
给定以下坐标系1,其中正数z
朝向天花板:
我有一个表示两点之间和3D 空间2glm::vec3
中的(归一化)方向的调用:dir
A
B
两点A
和B
恰好在同一平面上,所以z
坐标dir
为零。现在,给定一个角度α
,我想dir
向天花板旋转指定的量。例如,如果α
是 45 度,我想dir
指向相同x
/y
方向,但指向天花板3 45 度:
我最初的想法是计算 的“右”向量dir
,并将其用作旋转轴。我尝试了以下方法:
我希望调用rotateVectorUpwards(dir, glm::radians(45))
会返回一个代表我想要的新方向的向量,但它总是返回一个z
分量为零的向量。
我还尝试用四元数表示相同的旋转:
但是,再一次,得到的向量似乎总是有一个零z
分量。
我究竟做错了什么?
- 我是否误解了“旋转轴”的含义?
- 我的
right
计算不正确吗?
我怎样才能达到我想要的结果?
python - 如何在 3D 空间中围绕 x 轴旋转正方形
所以我一直在尝试学习 3D 渲染的工作原理。我尝试编写一个脚本,目标是在 3D 空间中旋转一个平面(2D)正方形。我首先在标准化空间 (-1, 1) 中定义一个正方形。请注意,只有 x 和 y 是标准化的。
然后将这些点翻译到屏幕上:
之后的一切都在应用程序循环中完成。我使用以下函数将点缩放到屏幕上:
像这样:
并画出要点:
到目前为止一切正常(我认为),因为它画了一个正方形,正如它应该的那样。
现在轮换。我尝试了所有轴的旋转,但它们都不起作用,但为了具体起见,我将讨论 x 轴。下面是轮换类。我从维基百科复制了旋转矩阵。我不完全确定它们是如何工作的,所以我也不知道它是否与我上面描述的系统兼容。
在将屏幕填充为白色之后,在将点从标准化空间缩放到屏幕空间之前,它是这样调用的。
应用旋转后,它看起来像在移动并围绕 x 轴旋转,但没有旋转。我希望它在原地不动的同时旋转。我究竟做错了什么?
完整的复制粘贴代码供参考:
square-root - 使用常规距离还是平方距离更快?
在向量长度/距离运算中使用平方根然后与某个值进行比较是否更快,或者将比较的值平方然后不使用平方根是否更快?所以基本上在伪代码中,是这样的:
比这个更快:
java - 互联网上所有的叉积代码示例都错了,还是我错了?
背景:我在 fanuc 宏 b 中为带有接触探针的加工中心编写了一些代码,但我想这有点无关紧要......无论如何,我目前正在编写一个小程序来在表面上进行 3 次触摸并输出一个正常的单位向量。
在开始之前,我在其他编程语言中搜索了一些向量叉积的例子,当然,我找到了很多。我感到困惑的是,我发现的所有示例都没有否定 y(或 j)术语。这是我在网络上以各种形式发现的:
x = Ay * Bz - By * Az
y = Az * Bx - Bz * Ax
z = Ax * By - Bx * Ay
我错过了什么吗?我认为它应该是这样的:
x = Ay * Bz - By * Az
y = -1 * (Az * Bx - Bz * Ax)
z = Ax * By - Bx * Ay
我的意思是我觉得我一定是错的,因为整个互联网很少出错..但在纸面上,只有当我按照自己的方式去做时才会奏效......
提前致谢。
java - 顶点数组到浮点数组
我目前正在开发一个游戏引擎,并被要求制作一个接收顶点数组并输出浮点数组的方法。我们有一个为 Vector3 制作的类。Vector3 是 3 个浮点数 x、y 和 z 的包装器。顶点只是 Vector3f 的包装器。所以如果他们是一个顶点数组,我怎么能把它变成一个浮点数组。这就是我到目前为止所拥有的
预期的输出将放在一个顶点数组中以形成一个正方形,例如
你会得到
作为结果