Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2012, 07:48   #1
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию Движение стрелки

Ребят, не могу вывести формулы, для вычисления положения стрелки на приборе, а именно, имеется прибор (собственно UDP сервер) и клиент которые посылает ему различные величины целого типа, стрелка должная указывать на текущее значение, которое послал клиент, но по нормальному вычислить положение у меня не получается, собственно вот что я делаю:
Код:
double help;
        double help2=cos(maxHeight*0.017)*355+100;
        if(maxHeight <= 20) help=  sin(maxHeight*0.017)*355-270;
        if((maxHeight > 20 && maxHeight <= 40) || (maxHeight >=75))   help=  sin(maxHeight*0.017)*355-87;
        if(maxHeight >= 60 && maxHeight < 75)   help=  sin(maxHeight*0.017)*355-103;
        if(maxHeight > 180) help=  (sin(maxHeight*0.017)*355 * (-1))-103;
        int yValue=help;
        int xValue=abs(help2);
Длина изображение 400 на 400 пикселей, эллипс которые поменьше и к которому крепится стрелка следующий:
Код:
Form1->Image1->Canvas->Ellipse(190,190,230,230);
Изображения
Тип файла: png image.png (33.2 Кб, 70 просмотров)

Последний раз редактировалось CodeNOT; 28.06.2012 в 07:50.
CodeNOT вне форума Ответить с цитированием
Старый 28.06.2012, 23:50   #2
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

Добрый день, разорбрался, запутался с делениями, так как там цена деления меняется, по-этому стрелка не так сдвигалась. Собственно может у кого-то что-то похожее может быть
Код:
            double pi=3.14;
            double angle=0;
            if(value <= 100) angle= -( ( (float)value / 240.0 ) * 2.0 * pi - pi / 2.0 );
            if(value >100 && value <=200)   angle= -( ( (float)value / 1200.0 ) * 2.0 * pi + pi / 6.0 );
            if(value > 200) angle= -( ( (float)value / 2400.0 ) * 2.0 * pi + pi / 3.0 );
            double x = 203 + 60*cos(angle);
            double y = 200 - 60*sin(angle);
Тут 203 и 200 центр окружность, 60 - длина стрелки, value - собственно значение которое было передано
CodeNOT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение стрелки компаса Gudzik11 Общие вопросы Delphi 9 21.05.2012 22:07
Стрелки на циферблате(СИ) sidestep Помощь студентам 5 09.02.2012 20:25
Движение колец и Движение линий сверху Iren1993 Помощь студентам 2 07.11.2011 19:48
Стрелки ddeman666 Помощь студентам 0 16.05.2010 12:04