如果我知道圆心的像素坐标、圆的半径和垂直角度,如何找出圆周上某个角度的像素值?基本上,我正在尝试在不同时间(1点钟,2点钟等)绘制时钟的指针。
假设小时的浮点数为 h
(例如h=2.25
代表02:15等),范围在0到12之间。坐标为(cX,cY)
的点是时钟的中心,hLength
和mLength
分别表示时针和分针的长度。
// 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);
圆心坐标为 (X0, Y0)
,半径为 R
,与x轴夹角为theta:
X1 = (R * cos theta) + X0
并且
Y1 = (R * sin theta) + Y0
如果 (x1,y1) 是圆周上的一个点,(x,y) 是圆心,则 x1 = x + r * cos(angle)
,且 y1 = y + r * sin(angle)
如果中心点位于x0,y0处,而0,0位于左下角,则1点钟位置为x0 + rsin(2π/3),y0+rcos(2π/3)。