Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Алгоритм расчета миллисекунд Формула [D7, 2003]


Страницы:   1 2 3

Иупштук ©   (2013-10-18 18:41:00) 

Подскажите пожалуйста алгоритм расчета миллисекунд.

Вот псевдокод, на самом деле я пока незнаю как его оформить, но смысл не в нем а в формуле расчета для переменной Pause


procedure Calk;
begin
 rim := Random(6000)+1000;
 Pause := ???
end;

procedure Blink;
begin
 F := True;   //зажгли лампочку
 Sleep(100);
 F := False;  //потушили лампочку
 Sleep(Pause);
end;



не соображу как лучше спросить.
Собс-но нужно как-то раcсчитать Pause так, что бы если процедура Blink будет вызываться как-то так
while true do Blink; и при rim = 1000 то Pause должно ровняться 900, при rim = 2000 -- Pause = 400
т.е. цикл блинк должен быть 1000 миллисекунд. При rim = 1000  -- лампочка должна моргнуть 1 раз в секунду 100 (горит) + 900 (не горит)
при rim=2000 лампочка моргает два раза 100+100 - и не горит 400+400 = 1000 миллисекунд.
при rim=3000 лампочка моргает три раза 100+100+100 и не горит 700/3 = 233 мск

Как-то вот так. как расчитать Pause? расчет должен быть актуальный и для например rim = 1678 или rim = Random(6000)+1000;

на самом деле rim не скачет по рандому, но меняется плавно или более резко в указанных пределах - типа спидометра на авто (скорость) или тахометра.
лампочка как бы должна моргать чем выше rim тем чаще.
Pause расчитывается как бы для цикла мигания лампочки в течении секунды, но на самом деле ждать секунду и моргать нет смысла. Просто от текущего значения rim расчитать новую pause и один раз моргнуть. Но если представить что rim замер то для его значения pause должна быть такая, чтобы подходило условию 1 мырг в секунду для 1000 rim

не знаю, понятно объяснил или нет. но если что поясню или отвечу на уточняющие вопросы. Заранее спасибо за понимание.


Inovet   (2013-10-18 23:49:00) [41]

> [9] Иупштук   (18.10.13 23:16)

Какая разница дисплей или глаз циклопа. Ты написал многа букафф, а не понятно из писанного, что надо. Ты же приводишь какие-то соотношения, вот и объясни внятно - что там от чего зависит. Дисплей... Вот читай:

http://ru.wikipedia.org/wiki/%D0%A1%D0%BA%D0%B2%D0%B0%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C
и это читай
http://ru.wikipedia.org/wiki/%D0%A7%D0%B0%D1%81%D1%82%D0%BE%D1%82%D0%B0


Иупштук   (2013-10-18 23:16:00) [42]


> Широтно-импульсная модуляция (ШИМ) — один из способов снижения
> воспринимаемой яркости в дисплеях, работающий путём быстрого
> циклического включения и выключения подсветки.

нет, мне просто необходимо моргать лампочкой прпорционально числу rim


Inovet   (2013-10-18 22:59:00) [43]

Может ШИМ хочешь?


все арамисы, а я Дартаньян   (2013-10-18 20:12:00) [44]

на бумажке нарисуй график, чего ты хочешь, а из него и выводи формулы.


Иупштук   (2013-10-18 19:49:00) [45]

Хм.. вроде вот так получилось
procedure Calk;
begin
 rim:=Random(6000)+1000;
 fcnt:= rim / 1000;
 cnt:=trunk(fcnt)*100;
 Pause:= (1000 - cnt) / fcnt;
end;

Спасибо за помощь. но если будут комментарии - давайте


Иупштук   (2013-10-18 19:18:00) [46]

по математике двойка была..... шутка. Не, ну серьезно, что-то никак не соображу. Самому стыдно.
Для rim = 1500 pause должна быть такой, что бы лампочка моргнула три раза за две секунды


Иупштук   (2013-10-18 19:02:00) [47]

Да я в курсе.... мне просто алгоритм нахождения данного числа нужен :)
А объяснил как смог) Спасибо.


Ega23   (2013-10-18 18:58:00) [48]

Windows не является системой реального времени.


Иупштук   (2013-10-18 18:56:00) [49]

представьте моргающую лампочку.
чем больше rim тем чаще моргает лампочка... т.е. меньше Pause
как для текущего rim вычислить Pause для одно вызова Blink;


Вова   (2013-10-18 18:48:00) [50]

я ничо не понял )


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо