これは、TransformクラスのROS(リンク)のTransform.hからのコードです。
/**@brief Return the transform of the vector */
TFSIMD_FORCE_INLINE Vector3 operator*(const Vector3& x) const
{
return (*this)(x);
}
誰かがこのコードが何をしているのか説明できますか?これが私が思うことです(文脈上、私はCプログラマーとして数年の経験があり、初めてC ++で開発します)。
この関数は、以下が呼び出されたときに呼び出されます
object_of_type_Transform * object_of_type_Vector3
次に、Vector3オブジェクトをTransformオブジェクトにキャストし、結果としてそれを返します(2つのタイプは互換性がないように見えるため、これがどのように可能になるかについてはかなりわかりません)。
しかし、返される結果はVector3です...そしてこれが私のメンタルモデルが崩壊する場所です。
さらに、この関数はTransformクラスに基づいてVector3ポイントを変換することになっているので、私の理解は間違いなくどこかに欠陥があります。
洞察をいただければ幸いです。
ありがとう
編集
返信いただきありがとうございます!すぐ上の関数は次のとおりです。
/**@brief Return the transform of the vector */
TFSIMD_FORCE_INLINE Vector3 operator()(const Vector3& x) const
{
return Vector3(m_basis[0].dot(x) + m_origin.x(),
m_basis[1].dot(x) + m_origin.y(),
m_basis[2].dot(x) + m_origin.z());
}
/**@brief Return the transform of the vector */
TFSIMD_FORCE_INLINE Vector3 operator*(const Vector3& x) const
{
return (*this)(x);
}
私は今、何が起こっているのか理解しています。再度、感謝します。