gpt4 book ai didi

c++ - 如何计算一个点(高维空间)相对于由一组点形成的超平面的对称性?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:13:55 33 4
gpt4 key购买 nike

我正在使用 C++,我想计算一个点相对于超平面的对称性。我在执行时给定的维度

我有超平面中的点。所以我通过求解一组线性方程来计算法 vector 。然后得到超平面(有法线和一个点),第一个点的投影,最后是对称的。

我尝试使用 eigen3 库,但它似乎需要在编译时给出维度。

欢迎使用此库(或任何其他库)或快捷方式解决问题的任何想法。

提前谢谢你。

最佳答案

Eigen 可以处理编译时和运行时大小。要使用运行时大小,请指定 Dynamic 或使用预定义的别名:

Eigen::Matrix<double, Eigen::Dynamic, 1> x(n);

或者只是

Eigen::VectorXd x(n);

其中 n 是运行时指定的维数。

参见文档 here


一旦你计算了法线 vector 和原点(只是你的点之一),你可以这样做:

#include <Eigen/Core>

using namespace Eigen;

VectorXd mirror(const VectorXd &normal, const VectorXd &origin, const VectorXd &x)
{
return x - 2.0 * normal * ((x-origin).dot(normal)) / normal.dot(normal);
}

enter image description here

关于c++ - 如何计算一个点(高维空间)相对于由一组点形成的超平面的对称性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36520854/

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