gpt4 book ai didi

c++ - 使 Eigen::Vector 看起来像点 vector

转载 作者:行者123 更新时间:2023-11-30 04:29:59 28 4
gpt4 key购买 nike

我想以这样一种方式表示 2D 形状,它可以像点 vector 一样与之交互,特别是我希望能够调用 operator[]at() 并返回对类似于 2D 点的事物的引用。目前我只使用一个类,它的唯一成员变量是一个点 vector ,并且在其元素上逐点定义了各种算术和几何运算。

但是,在我代码的其他部分,我需要将 n 个点的 vector 视为 2n 维空间的一个元素,并对其执行基本的线性代数(例如,将 vector 投影到 R^2n 的给定子空间)。目前,每次我想执行此操作时,我都会创建一个 Eigen::VectorXd 对象,然后在执行这些操作后转换回来。我不想这样做,因为我经常进行转换,以至于所有复制都是效率低下的明显来源。

如果我将数据存储为 double / float /整数的平面数组,我可以将指向其第 n 个元素的指针转换为指向点的指针(其成员只是一对 double / float /整数) .但是,由于我不知道 Eigen 用于 vector 的内部表示(并且它很可能会改变),所以这是不可能的。

有解决这个问题的明智方法吗?我可以到处使用 Eigen::Vector,但我真的希望大部分代码能够假装它正在处理一组点。

最佳答案

However, as I don't know the internal representation that Eigen uses for vectors (and it may well change), this isn't possible.

Eigen 提供了 Map 类,允许将普通数组映射到 Eigen 结构。例如:

double numbers[2];
Eigen::Vector2f::Map( numbers ).dot( Eigen::Vector2f::Constant(1) );

关于c++ - 使 Eigen::Vector 看起来像点 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9002373/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com