1

次のように定義された行列タイプがあります。

struct __transform_t
{
    float m11, m12, m13, m14;
    float m21, m22, m23, m24;
    float m31, m32, m33, m34;
    float m41, m42, m43, m44;
};

ある行列を別の行列に連結するにはどうすればよいですか? マトリックスを「マージ」して、両方の変換を組み合わせた結果を得たいと考えています。基本的に、私は単純なレイヤー システムを作成しようとしているので、親レイヤーが変換された場合、子レイヤー (視覚的に親の内部にある) もそれらの変換を継承し、独自の変換を行う必要があります。

以下の例のようにしようとしていますが、それは正しい方法ではないと思います。

void transform_concat(transform_t* orig, transform_t* delta)
{
#define __act(x) orig->m##x += delta->m##x;

    __act(11); __act(12); __act(13); __act(14);
    __act(21); __act(22); __act(23); __act(24);
    __act(31); __act(32); __act(33); __act(34);
    __act(41); __act(42); __act(43); __act(44);

#undef __act
}
4

1 に答える 1

2

これは変換行列の合成のように聞こえるので、行列の乗算を調べてください。行列の各値に対して明示的なフィールドがあるため、ループの実装を記述するのは困難です。

于 2012-08-29T13:12:01.127 に答える