2016-04-09 4 views
2

私はC++を使用しており、超平面に関する点の対称性を計算したいと思います。実行時間に与えられたディメンションにあります。ポイントの集合によって形成される超平面に関するポイント(高次元空間)の対称性を計算する方法は?

私は超平面にポイントを持っています。そこで、一連の線形方程式を解くことによって法線ベクトルを計算しました。次に、超平面(法線と点を持つ)を取得するには、最初の点と最後に対称点を投影します。

eigen3ライブラリを使用してみましたが、コンパイル時に指定する必要があるようです。

このライブラリ(または他のもの)の問題を解決するためのあらゆるアイデアは歓迎します。

ありがとうございます。

答えて

1

Eigenは、コンパイル時と実行時の両方のサイズで動作できます。ランタイム・サイズを使用するには、Dynamicを指定するか、事前に定義されたエイリアスを使用します。

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

か、単に

Eigen::VectorXd x(n); 

nは、寸法のランタイムが指定した数です。

参照ドキュメントあなたは法線ベクトルと原点(あなたのポイントの単に1)を計算したらhere


、あなたはこれを行うことができます。

#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

+0

OK。私はキーワードdynamicについて知らなかった。それは1つの問題を取り除くことができます。私は対称の良いものを計算したいのですか? – dev93

+0

@ dev93更新された回答を参照してください。 –

+0

OK。どうもありがとうございます。 – dev93

関連する問題