Compartir a través de


Rotación de Single-Finger

En esta sección se explica cómo girar un objeto mediante un punto dinámico.

En la imagen siguiente se muestra la rotación de un solo dedo.

ilustración en la que se muestran dos tipos de rotación de un solo dedo: alrededor del centro o alrededor del borde

En el ejemplo A, el objeto se gira alrededor del punto central del objeto mediante el gesto de rotación. En el ejemplo B, el objeto se gira moviendo un solo dedo alrededor del borde del objeto. El procesador de manipulación habilita esta rotación mediante el uso de valores de radio de punto dinámico y de pivote. En la imagen siguiente se muestran los componentes de rotación de un solo dedo.

ilustración en la que se muestran los componentes de rotación de un solo dedo: pivotpointx, pivotpointy y pivotradius

Después de establecer los valores PivotPointX, PivotPointY y PivotRadius , los mensajes de traducción posteriores incorporarán rotación. Cuanto mayor sea el radio dinámico, mayor será el cambio en x e y para girar el objeto. En el código siguiente se muestra cómo se pueden establecer estos valores en el procesador de manipulación.

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;
}    
     

En el ejemplo anterior, la distancia al borde del objeto (escalado hasta el 40 por ciento) se usa como radio de pivote. Dado que se tiene en cuenta el tamaño del objeto, este cálculo es válido para cada delta de objeto. A medida que el objeto se escala, el radio dinámico crece. Este valor y los valores central x e y del objeto se pasan al procesador de manipulación para girar el objeto alrededor del punto de pivote.

Nota

El valor PivotRadius nunca debe estar comprendido entre 0,0 y 1,0.

 

Manipulaciones

PivotRadius

PivotPointX

PivotPointY