问题标签 [vector]
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.
math - 为相机投影屏幕
我试图通过编写一个简单的光线追踪器来学习更多关于vectormath的知识,并且我一直在阅读它,但我无法找到如何确定主光线的方向。这听起来像一个简单的问题,可能是,但以我目前的知识,我无法弄清楚。
我想我需要一个相机(只不过是一个位置和一个方向作为矢量),然后我从相机将主光线发射到相机前面的屏幕上,它代表最终图像。我无法弄清楚的是屏幕的角坐标。如果我知道屏幕,找到主光线的方向很容易。
我希望可以只使用不需要任何旋转矩阵的简单数学来计算屏幕。我最好的猜测是:
我将相机的方向作为矢量,这个方向等于投影屏幕平面的法线。所以我有屏幕的法线,从那里我可以很容易地计算出屏幕的中心,即:
其中距离是屏幕和相机之间的距离。但是,这就是我迷路的地方,我无法找到一种方法来确定相机任意方向的平面角坐标。
你们有人能帮我吗?如果我的方法不可能奏效,那该怎么办?
c++ - 从字符串到字符串流再到向量
我有一个我想在我的应用程序上实现的步骤的示例程序。我想将字符串上的 int 元素分别 push_back 到一个向量中。我怎样才能?
c++ - 在 C++ 中的多态方法上使用 std::for_each
使用 std::for_each 时,
如果我们有从 A 继承并实现 foo() 的类,并且我们持有指向 A 的指针向量,有没有办法在 foo() 上调用多态调用,而不是显式调用 A::foo()?注意:我不能使用 boost,只能使用标准 STL。
谢谢,盖尔
vector - 系统verilog中的打包与解包向量
查看我在 System Verilog 中维护的一些代码,我看到一些信号定义如下:
以及其他定义如下:
我知道这x
被定义为打包,而y
被定义为未打包。但是,我不知道这意味着什么。
System Verilog 中的压缩向量和非压缩向量有什么区别?
编辑:响应@Empi 的回答,为什么在 SV 中编写的硬件设计师应该关心数组的内部表示?是否有任何时候我不应该或不能使用打包信号?
c++ - 如何在 C++ 中创建高效的二维网格?
我想创建一个非常易于使用的 2D 网格。网格中的每个单元格都需要能够存储大量数据。理想情况下,我希望能够一次遍历一个网格,并获得任何网格单元的直接邻居。
我的第一个想法是存储一个指向 Cell 邻居(总共 4 个)的指针向量,然后为 leftNeighbour、rightNeighbour 等创建便利函数。在初始化后连接网格。
std::vector 应该是一个动态可调整大小的数组,所以如果我只想硬编码指针的位置(0 == 左,1 == 右等),这让我觉得没有必要。但是,它确实允许以更好的方式遍历单元格的邻居。我必须考虑的另一件事是该单元格是否位于网格边缘的边界上(是否对此进行测试或只是隐式地将网格扩展一个单元格,这样就不会发生这种情况)。
谁能提出一个更好的选择,或者这听起来像一个合理的设计?
谢谢,丹
math - 学习游戏编程(第 2 部分)(数学)
所以,距离我写这个问题已经有几个月了,从那以后我玩弄了“原始”C++ D3D、Ogre 和 Irrlicht 图形引擎以及最近的 Microsoft XNA。我已经制作了一些 2D 游戏(主要是俄罗斯方块、小行星等旧东西的复制品),并在上述技术中向 3D 世界迈出了一些(非常)小步。
创建实际的游戏逻辑、抽象出对象交互以允许我插入不同形式的控制(计算机、播放器、网络等)、执行线程或我使用的任何其他东西时,我几乎没有问题从我的日常工作开始——这对我来说感觉非常自然。我很少使用 HLSL 和粒子效果(非常非常基础)。
但是涉及矩阵和向量的 3D 数学(以及 Ogre3D 中的四元数(?),这些真的需要吗?)......真的让我明白,我可以遵循示例(例如,我从 O'Reilly 购买的 Learning XNA 3.0 书,这是一本很棒的书顺便说一句),我理解示例中发生某些事情的原因和方式,但是当我尝试自己做某事时,我觉得我缺乏对这种数学的理解,无法真正理解并使其工作我。
所以我正在寻找学习 3D 数学(主要是)和一些着色器/粒子效果书籍的资源。我更喜欢教育性的资源,并且比诸如向量数学的医生论文之类的东西要慢一点,这将超出我的想象。理想的资源应该是在 D3D 中展示这一切的东西。
c++ - 如何创建对模板类执行操作的静态模板成员函数?
我正在尝试创建一个从 std::vector 中删除重复项的通用函数。因为我不想为每个向量类型创建一个函数,所以我想让它成为一个模板函数,可以接受任何类型的向量。这是我所拥有的:
我不断收到链接器错误,但它编译得很好。关于我做错了什么的任何想法?
更新:根据 Iraimbilanja 给出的答案,我去重写了代码。但是,以防万一有人想让工作代码执行 RemoveDuplicates 函数,这里是:
事实证明,如果我在签名中指定 std::vector,迭代器将无法正常工作。所以我不得不采用更通用的方法。此外,当擦除 compareIter 时,循环的下一次迭代会产生指针异常。擦除后 compareIter 的后减量可以解决该问题。我还修复了迭代器比较和第二个循环中 compareIter 初始化中的错误。
更新 2:
我看到这个问题又得到了赞成票,所以我想用一个更好的算法来更新它,这个算法使用了一些 C++14 的优点。我的前一个只有在向量中存储的类型实现 operator== 并且它需要一堆副本和不必要的比较时才有效。而且,事后看来,没有必要让它成为一个类的成员。这种新算法允许自定义比较谓词,在发现重复项时缩小比较空间,并显着减少副本数量。名称已更改为erase_duplicates
更好地符合 STL 算法命名约定。
c++ - 矢量和倾倒
据我所知,向量保证是连续的,我可以向它写入一大块内存并用它发送 fwrite。我需要做的就是确保我调用 .resize() 来强制它成为我需要的最小长度,然后我可以将它用作普通的 char 数组?这段代码是否正确
请注意,我从不推回或弹出 v2,我只调整一次大小并将其用作 char 数组。这会安全吗?如果我也倾倒了 v 那也是安全的(我确实推回并清除,我可能会倾倒它进行测试)
c++ - 剥离物品的最佳 C++ 容器?
我有一个文件列表(存储为 c 样式字符串),我将对其执行搜索,我将删除那些与我的参数不匹配的文件。用于此目的的最佳容器是什么?我现在正在考虑设置。请注意,文件列表永远不会比初始化时大。我只会从容器中删除。
c# - 如何在 C# 中获取向量类型?
我想在我正在编写的 C# 应用程序中使用 Vectors,特别是 Vector3。
在不编写自己的情况下获得 Vector 类型的最佳方法是什么?