Про это(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено cout 25 июня 2003 г. 15:18
В ответ на: Господа, осветите вопрос pls(+) отправлено Hole 25 июня 2003 г. 11:47


Программку дать не смогу, но разжевать проблему - пожалуйста.
Изменение ориентации.Вращение.
Пусть точку (x,y) надо переместить на угол A по дуге окружности с центром вращения (x0,y0) в точку (xr,yr).
Найденная точка (xr,yr) будет новым концом Вашей стрелки.

1.Для Вашего манометра надо посчитать "A":
Пусть для всей шкалы в 10 атм надо найти угол поворота стрелки для 0.5 атм (цифры от потолка).
10 атм = 2*PI рад (полный оборот стрелки),
0.5 атм = A рад (искомая величина).
2. Найти координаты нового конца стрелки и нарисовать стрелку.
Есть формулы, уже заточенные для таких вещей:
xr = x0 + ( (x-x0)* cos(A) ) + ( (y-y0)*sin(A) * Q1 )
yr = y0 + ( (y-y0)* cos(A) ) - ( (x-x0)*sin(A) * Q2 )

Q1 и Q2 служат для устранения геометрических искажений по осям экрана.
Для различных мониторов они ~ 6/5 и 5/6. Для Вашего ЖКИ, скорее всего == 1. Короче, чтобы круглО было. Хотя кто знает, как Вам надо.

Примечания:
Центр вращения (x0,y0) может находиться в любом месте экрана и даже за пределами экрана, т.к. эта точка не высвечивается и служит только как опорная. В-частности, она может совпадать с "неподвижным" концом Вашей стрелки манометра.
Диапазон изменения "А" 0...2*PI.
Если нулевая координата слева вверху, то отсчет против часовой стрелки.
Ложка дегтя:
Ув.Bill прав: все это только для понта. (Если точки крупные, то стрелка "ломаться" будет на некоторых углах поворота). Но и такие знания - глядишь - пригодятся.

Все.Устал.Удачи.


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru