将带有 Vec 的 nalgebra 向量的结构解压缩到矩阵中

Unpack struct with Vec of nalgebra vectors into matrix

提问人:thefrollickingnerd 提问时间:11/17/2023 更新时间:11/17/2023 访问量:20

问:

我有一个数据结构,我正在尝试实现一个方法。目标是得到一个矩阵,该矩阵由具有 vector3 值的结构体组成。

pub struct Body {
    pub pos: Vector3<f64>,
    etc
}

pub struct Data {
    pub system_vec: Vec<Body>,
}

impl Data {
    fn get_spatial_mat<S>(self: Self) OMatrix<f64, U3, Dyn> {

        let n_bodies: &usize = &self.system_vec.len();

        na::OMatrix::<f64, U3, Dyn>::from_columns(
            self.system_vec.iter()
            .map(|body| body.pos.clone()).collect::Vec<Vector3<f64>>()
        )
    }
}

我在 collect 语句中遇到错误

expected `&[Matrix<f64, Const<3>, ..., ...>]`, found `Vec<Matrix<f64, ..., ..., ...>>`

但我不知道如何返回这些结构值的一部分。大概有一种更好的方法可以解决这个问题,但是 nalgebra 中的 From_iterator 采用它看起来像的平面 vec 的迭代器,而不是 vec 的迭代器。

作为第二个问题,我不知道如何将第二个矩阵维度指定为 n_bodies,如果我用它所说的 n_bodies 替换 Dyn

Attempt to use non-constant value in constant
Rust 结构 迭代器 Nalgebra

评论


答: 暂无答案