Partager via


rotation Single-Finger

Cette section explique comment faire pivoter un objet à l’aide d’un point croisé dynamique.

L’image suivante illustre la rotation d’un doigt unique.

illustration montrant deux types de rotation à doigt unique : autour du centre ou autour du bord

Dans l’exemple A, l’objet est pivoté autour du point central de l’objet à l’aide du mouvement de rotation. Dans l’exemple B, l’objet est pivoté en déplaçant un seul doigt autour du bord de l’objet. Le processeur de manipulation active cette rotation à l’aide de valeurs de point croisé dynamique et de rayon de tableau croisé dynamique. L’image suivante illustre les composants de la rotation d’un seul doigt.

illustration montrant les composants de la rotation à un doigt : pivotpointx, pivotpointy et pivotradius

Après avoir défini lepivotPointX, PivotPointY et valeurs de PivotRadius, les messages de traduction suivants incorporent la rotation. Plus le rayon de tableau croisé dynamique est grand, plus le changement de x et y doit être modifié pour faire pivoter l’objet. Le code suivant montre comment ces valeurs peuvent être définies dans le processeur de manipulation.

HRESULT STDMETHODCALLTYPE CManipulationEventSink::ManipulationDelta( 
    /* [in] */ FLOAT x,
    /* [in] */ FLOAT y)
{
    m_cStartedEventCount ++;

    // Set the pivot point to the object's center and then set the radius 
    // to the distance from the center to the edge of the object.
    m_pManip->put_PivotPointX(m_objectRef->xPos);
    m_pManip->put_PivotPointY(m_objectRef->yPos);
    
    float fPivotRadius = (FLOAT)(sqrt(pow(m_dObj->get_Width()/2, 2) + pow(m_dObj->get_Height()/2, 2)))*0.4f;
    
    m_pManip->put_PivotRadius(fPivotRadius);
  

    return S_OK;
}    
     

Dans l’exemple précédent, la distance vers le bord de l’objet (mise à l’échelle à 40 pour cent) est utilisée comme rayon de tableau croisé dynamique. Étant donné que la taille de l’objet est prise en compte, ce calcul est valide pour chaque delta d’objet. À mesure que l’objet est mis à l’échelle, le rayon du pivot augmente. Cette valeur et les valeurs x et y centre de l’objet sont transmises au processeur de manipulation pour faire pivoter l’objet autour du point de tableau croisé dynamique.

Note

La valeur PivotRadius ne doit jamais être comprise entre 0,0 et 1,0.

 

manipulations

PivotRadius

PivotPointX

pivotPointY