使特征向量看起来像点的向量
Making an Eigen::Vector look like a vector of points
我希望以这样一种方式表示2D形状,即它可以像点的向量一样与之交互,特别是我希望能够调用它上的运算符[]
和at()
,并返回对类似2D点的事物的引用。目前,我只使用一个类,它的唯一成员变量是点的向量,并且在其元素上逐点定义了各种算术和几何运算。
然而,在我的代码的其他部分中,我需要将n个点的向量视为2n维空间的元素,并对其执行基本线性代数(例如,将向量投影到R^2n的给定子空间上)。目前,每当我想这样做时,我都会创建一个Eigen::VectorXd
对象,然后在执行这些操作后转换回来。我不想这样做,因为我经常进行转换,所以所有的复制都是效率低下的一个明显来源。
如果我将数据存储为doubles/floats/ints的平面数组,我可以将指向其第n个元素的指针强制转换为指向Point的指针(其成员将只是一对double/foats/ints)。然而,由于我不知道Eigen用于向量的内部表示(它很可能会改变),这是不可能的。
有合理的方法来解决这个问题吗?我可以在任何地方使用Eigen::Vector
,但我真的希望大多数代码能够假装它处理的是一组点。
然而,由于我不知道Eigen用于向量的内部表示(它很可能会改变),这是不可能的。
Eigen提供了Map
类,允许将平面阵列映射到Eigen结构。例如:
double numbers[2];
Eigen::Vector2f::Map( numbers ).dot( Eigen::Vector2f::Constant(1) );
相关文章:
- std::vector的包装器,使数组的结构看起来像结构的数组
- 看起来is_nothrow_constructible_v()在MSVC中被破坏了,我错了吗
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- 尽管一切看起来都很好,但值不会交换
- 自制的上衣:看起来一样,但不完全相同
- 如何使它看起来像正在下的雪
- 如何用逗号分隔输出?如何改进此代码以使其看起来更体面?
- 我的代码看起来不错,但某些输入会导致不需要的输出
- 为什么这个结构的大小是 40,而它看起来应该是 12/24?
- 我需要将阵列样式的邻接矩阵转换为矢量样式(以使其看起来更好)
- 结构化绑定:当某些内容看起来像引用并且行为类似于引用,但它不是引用时
- 如何使QTextEdit看起来被禁用
- 在正确性或良好的代码结构方面,这种动态对象创建看起来如何
- 看起来如此主要的错误.cpp:(.text.startup+0xd6):未定义对"vtable for Counter"的引用?
- C 时间测量看起来太慢了
- 我应该如何使 std::filesystem 看起来符合 Visual Studio 2015 的标准
- 将两个向量与另一个向量连接起来
- 写入.ini文件 - SimpleIni SetValue 尽管看起来成功了,但什么也没做
- 如果我有一个向量(或类似的东西)成员变量,那么move构造函数看起来怎么样
- 使特征向量看起来像点的向量