質問を正しく理解していれば、(X 1 ,Y 1 ),...,(X n ,Y n ) というn個の点があり、対応する点は (x 1 ,y 1 ),...,( x n ,y n ) は別の座標系であり、前者は後者から回転、スケーリング、平行移動によって得られると考えられます。
このデータは、回転/スケーリングの固定ポイント、または操作が「適用される」順序を決定しないことに注意してください。一方、これらを事前に知っている場合、または任意に選択した場合は、データを想定どおりに変換する回転、平行移動、およびスケーリング係数が見つかります。
たとえば、任意の点、たとえば p 0 = [X 1 , Y 1 ] T (列ベクトル) を回転とスケーリングの固定点として選び、その座標を他の 2 つの点の座標から差し引いて p 2 =を得ることができます。 [X 2 -X 1 , Y 2 -Y 1 ] T、p 3 = [X 3 -X 1 , Y 3 -Y 1 ] T . 列ベクトル q 2 = [x 2 -x 1 , y 2 -y 1 ] Tも取得します。、q3=[x3-x1、y3-y1]T.ここで、[p 2 p 3 ] = A*[q 2 q 3 ] です。ここで、A はロトスケーリングを表す未知の 2x2 行列です。A = [p 2 p 3 ] * [q 2 q 3 ] -1ここで、-1は逆行列 (2x2 行列 [q 2 q 3の]))。ここで、座標系間の変換が実際に回転スケーリング変換である場合、すべての点は P k = A * (Q k -q 0 ) + p 0を満たす必要があります。ここで、P k = [X k , Y k ] T , Q k = [x k , y k ] T , q 0 =[x 1 , y 1 ] T , k=1,..,n.
必要に応じて、A のコンポーネントからスケーリングと回転パラメーターを非常に簡単に決定したり、b = -A * q 0 + p 0を組み合わせて P k = A*Q k + b を取得したりできます。
上記の方法は、ノイズや縮退ポイントの選択にうまく反応しません。必要に応じて、主成分分析などを適用することでこれを修正できます。これも、MATLAB またはその他の線形代数ツールが使用可能な場合は数行のコードで済みます。