Перейти к содержанию
    

плавное изменение коэффициента уравнения от времени

Spoiler
16 minutes ago, adnega said:

2086916634_.thumb.png.5adbf03e3e4207db5f3c1e8a1bc3a620.png

 

15 minutes ago, adnega said:


void __fastcall TForm1::Button1Click(TObject *Sender)
{
  double t = 0.0;
  double a = 0.0;
  double percent = 0.75;
  double n = 0.0005;

  Image1->Canvas->FillRect(Image1->ClientRect);
  while (t < 750.0)
  {
     a += percent;

     if (t > 200.0)
     {
        if (percent > 0.3)
        {
           percent -= n;
           n += 0.00001;
        }
     }
     //txPixel(20.0 + t, 480.0 - a, 255, 0, 0);
     Image1->Canvas->Pixels[0.0 + t][480.0 - a] = clRed;
     //txPixel(20.0 + t, 480.0 - t, 0, 0, 255);
     Image1->Canvas->Pixels[0.0 + t][480.0 - t] = clNavy;

     ++t;
  }
}

 

 

Круто !!!

Спасибо !!!

Выходит, что моя задумка изначально была правильная, только с недочетами.

А коэффициенты 0.00001 0.0005 вы получается из моего первого сообщения взяли ?

Осталось теперь понять как их находить, чтобы время и величина перехода соответствовала заданным требованиям. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, dimka76 сказал:
  Показать содержимое

 

 

 

А коэффициенты 0.00001 0.0005 вы получается из моего первого сообщения взяли ?

Ваши. Исходник привел ранее.

8 минут назад, dimka76 сказал:

Осталось теперь понять как их находить, чтобы время и величина перехода соответствовала заданным требованиям. 

Самый простой вариант - линейное изменение.

Т.е. percent сначала равен 0.75 и сохраняет свое значение до t=200.

Затем percent изменяется на dp пока не станет 0.3

Если на это нужно затратить ровно T времени, то dp = (0.3 - 0.75) / T

Например, при T=100, dp=-0.0045

На графике обозначены моменты:

t=200 когда percent начал изменятся линейно от 0.75

до t=300 когда percent достигнет 0.3

222524381_.thumb.png.2f3b54ff1e341db8e1e9d73d32d86751.png

  while (t < 750.0)
  {
     a += percent;

     if (t > 200.0)
     {
        if (percent > 0.3)
        {
           percent -= 0.0045;
        }
     }
     //txPixel(20.0 + t, 480.0 - a, 255, 0, 0);
     Image1->Canvas->Pixels[0.0 + t][480.0 - a] = clRed;
     //txPixel(20.0 + t, 480.0 - t, 0, 0, 255);
     Image1->Canvas->Pixels[0.0 + t][480.0 - t] = clNavy;

     ++t;
  }

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 minutes ago, adnega said:

Самый простой вариант - линейное изменение.

Спасибо. С таким вариантом все понятно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, dimka76 сказал:

Не работает

Что-то не так делаете. Не может такого графика быть.

Если посмотреть на формулу, то можно увидеть, что (1 - (t - tBase) / tMax) на интервале переходного периода будет принимать значения от 1 до 0, а значит 

(percent + (percentOld - percent) * (1 - (t - tBase) / tMax)) на этом же интервале будет принимать значения от percentOld до percent.

Т.е. - наклон любой касательной проведённой к любой точке на этом интервале, должен быть в диапазоне от наклона percentOld до наклона percent. У Вас же почему-то на переходном интервале наклон касательных выходит далеко за этот диапазон.

График должен быть таким же, как привёл adnega.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, jcxz said:

Что-то не так делаете. Не может такого графика быть.

Я же график вместе с кодом предоставил. Любой желающий может попробовать )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...