高度な拡張
次の図は、オブジェクトを展開する 2 つの方法を示しています。
例 A では、単純な展開の例では、オブジェクトがその中心点を中心に展開されます。 B の例では、オブジェクトは操作の中心点を中心に展開されます。 これを有効にするには、展開中にオブジェクトを翻訳する必要があります。 オブジェクトを移動する量は、オブジェクトの中心からジェスチャの中心点までの距離と同じです。 直感的に、オブジェクトを拡張ジェスチャの中心点から展開し、最初の位置と同じ中心に移動しているかのように直感的に表示されます。 次のコードは、この概念を適用して中心点を中心に展開できるようにする方法の 1 つを示しています。
if(m_fFactor != 1.0f)
{
// We represent our vectors as an array.
// x: vx[0], y: vx[1]
FLOAT v1[2];
v1[0] = this->get_CenterX() - fOffset[0];
v1[1] = this->get_CenterY() - fOffset[1];
FLOAT v2[2];
v2[0] = v1[0] * m_fFactor;
v2[1] = v1[1] * m_fFactor;
m_fdX += v2[0] - v1[0];
m_fdY += v2[1] - v1[1];
}
関連トピック