• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Программа расчета биоритмов

  • Автор темы Автор темы Debianer
  • Дата начала Дата начала

Debianer

Новые
Регистрация
7 Авг 2012
Сообщения
336
Реакции
13
Баллы
0
Программа расчета биоритмов

Доброго времени суток всем!
Попросили меня давеча на работе тетушки наши сделать им утилитку для расчета биоритмов. Поскольку иногда у меня есть на работе и свободное время, просьба была уовлетворена. Хочу поделиться с вами исходниками на Delphi.
Итак, при запуске программа ищет Ini-файл с настройками; в случае его отсутствия вызывается окно с настройками программы.
Программа "висит" в трее, иконка представляет из себя три бара с физическим, эмоциональным и интеллектуальным уровнями. Отрисовывается иконка динамически - возможно, кому-то и пригодится как пример создания динамической иконки. Ниже приведена процедура отрисовки динамической иконки (использовался компонент TTrayIcon):
procedure TSettingsForm.CreateIcon(Phys, Intellect, Emotion: Integer);
var
Bmp: TBitmap;
Icon: TIcon;
IconInfo: TIconInfo;
begin
//Создаем битмап с рисунком баров
Bmp:=TBitmap.Create;
with Bmp do
begin
Width:=GetSystemMetrics(SM_CXICON);//Ширина иконок в трее
Height:=GetSystemMetrics(SM_CYICON);//Высота иконок в трее
Transparent:=True;
Canvas.FillRect(Rect(0,0,Width,Height));
//Отрисовываем физический уровень
Canvas.Brush.Color:=clGreen;
Canvas.FillRect(Rect(0,Height-Height*Phys div 100,Width div 3,Height));
//Отрисовываем эмоциональный уровень
Canvas.Brush.Color:=clBlue;
Canvas.FillRect(Rect(Width div 3,Height-Height*Emotion div 100,Width*2 div 3,Height));
//Отрисовываем интеллектуальный уровень
Canvas.Brush.Color:=clRed;
Canvas.FillRect(Rect(Width*2 div 3,Height-Height*Intellect div 100,Width,Height));
end;
//Создаем иконку
Icon:=TIcon.Create;
IconInfo.fIcon:=True;
IconInfo.xHotspot:=0;
IconInfo.yHotspot:=0;
IconInfo.hbmMask:=Bmp.Handle;
IconInfo.hbmColor:=Bmp.Handle;
Icon.Handle:=CreateIconIndirect(IconInfo);
//Уничтожаем битмап
Bmp.Free;
//Иконку назначаем компоненту TrayIcon
TrayIcon.Icon:=Icon;
//Перерисовываем иконку
InvalidateRect(Application.Handle,nil,True);
TrayIcon.Refresh;
Icon.Free;
end;

Левый клик мыши вызывает всплывающую подсказку, правый - контекстное меню. При клике на пункте "Показать" вызывается окно, в котором динамически (на Canvas) рисуются три графика с биоритмами за период +/- 5 дней. Обновление (пересчет) производится каждый час.

Сама формула расчета биоритмов проста:
B = (sin (2pi*t/P))*100%
B — состояния биоритма в %,выражается как состояние относительно нуля(+/-100%).
t — количество дней, прошедших с даты рождения до текущего (нужного) момента.
P — фаза биоритма: 23 - физич. цикл, 28 - эмоциональный, 33 - интеллектуальный.

Надеюсь, кому-то пригодится. С исходником можете делать что угодно
 

Вложения

Как раз формула расчета и не совсем правильна. Когда-то лет 30 назад мне попался какой-то журнал, вроде "Природа и человек" со статьёй одного товарища, который работал в Центр подготовки космонавтов. Он писал, что они использовали биоритмы, основанные на периоде вращения Луны, но каком именно не написал, а их 3 штуки. Я написал программу на бейсике, заодно и научился слегка:). В результате экспериментов выяснил, что наиболее достоверные данные получаются, если взять среднее арифметическое от трех периодов, примерно 28.426125. Все остальные ритмы- физический, интеллектуальный - несущественны, а этот прямо в точку.
 
Проверенная программа расчета биоритмов

С 1980г пользуюсь программой описанной в книге "Ваша работоспособность сегодня" (1978г). Отличие от других -нецелочисленное значение периодов. Адекватность проверена на личных совпадениях критических дней и простудных заболеваний и отрицательных
последствий даже взятие крови из пальца в критический день. Для меня окончательно все решило совпадение с критическими днями дат смерти родственников по отцу и матери.
 
Как у ксеноморфа
 
Назад
Сверху