2009-05-29 38 views

Respuesta

18

Vamos h ser la hora como una el número de coma flotante (h=2.25 sería 02:15, etc.) entre 0 y 12. (cX,cY) son las coordenadas del centro. hLength y mLength son las longitudes de las manecillas de la hora y mín.

// Hour hand 
hAngle = 2.0*Pi*h/12.0; // 0..12 mapped to 0..2*Pi 
hX = cX + hLength * sin(hAngle); 
hY = cY - hLength * cos(hAngle); 

// Min hand 
mAngle = 2.0*Pi*h; // 0..1 mapped to 0..2*Pi, etc. 
mX = cX + mLength * sin(mAngle); 
mY = cY - mLength * cos(mAngle); 
3

Si (x1, y1) es un punto en la circunferencia y (x, y) es el centro, entonces x1 = x + r * cos(angle) y y1 = y + r * sin(angle)

+0

Tenga en cuenta que esto supone el sistema de coordenadas "matemático" estándar, donde Y aumenta hacia arriba. En gráficos de computadora 2D típicos, eso se invierte (para hacer que Y crezca con la dirección del píxel). – unwind

+0

Esto solo es válido para un círculo con centro en origo. – ralphtheninja

+0

Solo agrega las coordenadas del centro. – Svante

0

si el centro es en x0, y0, y 0,0 iz en la esquina inferior izquierda, a continuación, una es en x0 + r sin (2π/3), y0 + r cos (2π/3).

8

Cuando el centro del círculo es (X0, Y0), el radio es R y el ángulo con el eje x es theta:

X1 = (R * cos theta) + X0 

y

Y1 = (R * sin theta) + Y0 
+0

Esto no debería votarse tan alto. Él no parece saber el valor de theta. La respuesta de Eric Bainville es más completa. – jmucchiello

+0

@jmucchiello - No estoy seguro de que te entiendo ... nos pidieron un algoritmo y di la descripción de una función con parámetros formales. En esta etapa, ¡nadie conoce el 'valor' de theta! Si quiere decir que no calculé los factores de escala para el movimiento de las manecillas de un reloj, y el ángulo en radianes para cada una de las marcas de hora, tiene toda la razón, no lo hice. ¡Tengo trabajo para escribir mi propio código! – avstrallen

+1

Sí, creo que hice 2 preguntas en una. Tu respuesta es perfecta para la primera parte. Gracias. – Surya

Cuestiones relacionadas