алгоритм определения координат пикселей по окружности круга - PullRequest
8 голосов
/ 29 мая 2009

как узнать значение пикселя в определенной степени по окружности круга, если я знаю координаты пикселя центра круга, радиуса круга и перпендикулярного угла. По сути, я пытаюсь нарисовать стрелки часов в разное время (1 час, 2 часа и т. Д.)

Ответы [ 5 ]

19 голосов
/ 29 мая 2009

Пусть 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);
9 голосов
/ 29 мая 2009

Если центр круга равен (X0, Y0), радиус равен R, а угол с осью x равен тета:

X1 = (R * cos theta) + X0

и

Y1 = (R * sin theta) + Y0
4 голосов
/ 29 мая 2009

Если (x1, y1) - точка на окружности, а (x, y) - центр, то x1 = x + r * cos(angle) и y1 = y + r * sin(angle)

0 голосов
/ 29 мая 2009

Нарисуйте линии от центра к координатам, вычисленным с помощью sin для координат y и cos для координат x (оба умножены на длину руки).

В Википедии есть больше информации о том, как "грешит" и "как работает" .

0 голосов
/ 29 мая 2009

, если центр находится в x0, y0, и 0,0 из в нижнем левом углу, то 1 час находится в x0 + r sin (2π / 3), y0 + r cos ( 2π / 3).

...