Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 11.05.2015
Сообщений: 5

Не получается сделать движение графика

19.03.2016, 15:34. Показов 1303. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.В builder c++ мне надо сделать синусоидальный график,который будет двигаться,но не изменяться по координате Х. Сам график то получается и кое-какое движение получается,но он сдвигается по Х,а мне надо чтобы он просто двигался и значения Х и Y не менялись.Внизу я скинул пример, по которому делаю. Там график двигается,но Х и Y не меняются.Именно так мне и надо тоже,но ни как не выходит.
Вложения
Тип файла: rar Архив WinRAR.rar (772.6 Кб, 8 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.03.2016, 15:34
Ответы с готовыми решениями:

Пишу игру PAC-MAN не получается сделать движение врагу
Нужно сделать движение врагу с приоритетом на героя, и чтобы не мог проходить сквозь стены. Буду благодарен за помощь! #include...

Графика. Не получается сделать нормальный квадрат
public partial class Form1 : Form { public Form1() { InitializeComponent(); } ...

графика.движение "машинки". как сделать трапецию
надо из етого сделать машинку. немогу понять как трапецию нарисовать, у меня все криво получается. нубас в паскале( uses GraphABC; var...

7
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
20.03.2016, 13:29
Наработки можно посмотреть?
0
1 / 1 / 0
Регистрация: 11.05.2015
Сообщений: 5
20.03.2016, 15:37  [ТС]
Толку от них всё равно мало,так как скорее всего всё не верно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Timer1->Enabled = false;
 
  double tmpX = Series1->XValues->Value[0]
  -Series1->XValues->Value[0];
  Series1->Delete(0);
  Series1->AddXY(
  Series1->XValues->Last() + tmpX,random(10),"",clTeeColor);
 
Timer1->Enabled = true;
Timer1->Interval = 20;
}
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
21.03.2016, 14:55
Вот тебе для "затравки" синусоидальный график. Остальное сам.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
const init = 20, shift = 10, scale = 20;
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
  TBfreq->Position = init;
  TBamp->Position = init;
  Timer->Enabled = 1;
  Timer->Interval = 1;
}
//---------------------------------------------------------------------------
float freq = 1, amp = 1;
void __fastcall TForm1::TimerTimer(TObject *Sender)
{
  static int x = 0;
  x += shift;
  Image->Canvas->FillRect(Image->Canvas->ClipRect);
 
  Image->Canvas->Pen->Color = clGreen;
  for (float a = 0; a <= Image->Width; a += Image->Width * 1.0 / scale)
  {
    Image->Canvas->MoveTo(a, 0);
    Image->Canvas->LineTo(a, Image->Height);
  }
  for (float b = 0; b <= Image->Height; b += Image->Height * 1.0 / scale)
  {
    Image->Canvas->MoveTo(0, b);
    Image->Canvas->LineTo(Image->Width, b);
  }
 
  Image->Canvas->Pen->Color = clBlue;
  Image->Canvas->MoveTo(0, Image->Height/2);
  Image->Canvas->LineTo(Image->Width, Image->Height/2);
 
  for (float i = 0; i < Image->Width; i += 0.01)
    Image->Canvas->Pixels[i][Image->Height / 2 * (1.0 - amp*sin((i+x)/180*freq*M_PI))] = clRed;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TBfreqChange(TObject *Sender)
{
  freq = TBfreq->Position * 1.0 / init;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TBampChange(TObject *Sender)
{
  amp = TBamp->Position * 1.0 / init;
}
//---------------------------------------------------------------------------
Миниатюры
Не получается сделать движение графика  
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
21.03.2016, 15:21
Цитата Сообщение от Elknar Посмотреть сообщение
Именно так мне и надо тоже,но ни как не выходит.
А у тебя эти ползунки что регулируют частоту / амплитуду самого сигнала или частоту/ амплитуду строба осциллографа?
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
21.03.2016, 16:07
Регулируется сигнал, а масштаб уже подстраивается под полное отображение сигнала, насколько я понял из примера.
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
21.03.2016, 16:19
Цитата Сообщение от gunslinger Посмотреть сообщение
а масштаб уже подстраивается под полное отображение сигнала, насколько я понял из примера.
Ну как TeeChart подстраивает понятно. Но совсем не как оссцилограф. для того чтобы было то что ему надо нужно еще такие же движки оссицилографа смоделировать, а у него только оссцилятора. хотя суть то осциллографа получить неподвижную картинку сигнала с удобной для его разглядения амплитудой и масштабом по x. Т.е. если настройка осцилограва идеальная просто получится статичный график.
Цитата Сообщение от Elknar Посмотреть сообщение
который будет двигаться,но не изменяться по координате Х.
А это вообще как? двигаться но не изменяться?
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
22.03.2016, 02:32
Решил немного "доделать".
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
const init = 20, shift = 20, scale = 20;
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
  TBfreq->Position = init;
  TBamp->Position = init;
  TBspeed->Position = shift;
  Timer->Enabled = 1;
  Timer->Interval = 100;
}
//---------------------------------------------------------------------------
float freq = 1, amp = 1, speed = shift;
void __fastcall TForm1::TimerTimer(TObject *Sender)
{
  static int x = 0;
  x += speed;
  Image->Canvas->FillRect(Image->Canvas->ClipRect);
 
  Image->Canvas->Pen->Color = clGreen;
  for (float a = 0; a <= Image->Width; a += Image->Width * 1.0 / scale)
  {
    Image->Canvas->MoveTo(a, 0);
    Image->Canvas->LineTo(a, Image->Height);
  }
  for (float b = 0; b <= Image->Height; b += Image->Height * 1.0 / scale)
  {
    Image->Canvas->MoveTo(0, b);
    Image->Canvas->LineTo(Image->Width, b);
  }
 
  Image->Canvas->Pen->Color = clAqua;
  Image->Canvas->MoveTo(0, Image->Height/2);
  Image->Canvas->LineTo(Image->Width, Image->Height/2);
 
  int sign = Sign(sin(x/180.*freq*M_PI));
  for (float i = 0; i <= Image->Width; i += 0.01)
  {
    float temp = sin((i+x)/180*freq*M_PI);
 
    if (RG->ItemIndex == 2 || RG->ItemIndex == 3)
    {
      Image->Canvas->Pixels[i][Image->Height / 2 * (1.0 - amp*Sign(temp))] = clBlack;
      if (sign == -Sign(temp))
      {
        Image->Canvas->Pen->Color = clBlack;
        Image->Canvas->MoveTo(i, Image->Height / 2 * (1. - amp));
        Image->Canvas->LineTo(i, Image->Height / 2 * (1. + amp));
      }
      sign = Sign(temp);
    }
 
    if (RG->ItemIndex == 0 || RG->ItemIndex == 3)
      Image->Canvas->Pixels[i][Image->Height / 2 * (1.0 - amp*temp)] = clRed;
  }
 
  if (RG->ItemIndex == 1 || RG->ItemIndex == 3)
  {
    bool moved = 0;
    for (float i = - 10*Image->Width; i <= 11*Image->Width; i += 0.01)
    {
      float temp = sin((i+x)/180*freq*M_PI);
      if (fabs(temp) >= 1.-1E-06)
      {
        if (!moved)
        {
          Image->Canvas->MoveTo(i, Image->Height / 2 * (1. - amp*temp));
          moved = 1;
        }
        Image->Canvas->Pen->Color = clBlue;
        Image->Canvas->LineTo(i, Image->Height / 2 * (1. - amp*temp));
      }
    }
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TBfreqChange(TObject *Sender)
{
  freq = TBfreq->Position * 1.0 / init;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TBampChange(TObject *Sender)
{
  amp = TBamp->Position * 1.0 / init;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TBspeedChange(TObject *Sender)
{
  speed = TBspeed->Position;
}
//---------------------------------------------------------------------------
P.S.: в архиве - ехе.
Миниатюры
Не получается сделать движение графика   Не получается сделать движение графика  
Вложения
Тип файла: zip signal.zip (1.36 Мб, 6 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.03.2016, 02:32
Помогаю со студенческими работами здесь

Рисование графика: обработка новых входящих данных и движение графика на форме
Подскажите каким способом можно вывести график частью главного окна программы, при чем график получает данные *в живую* с устройства по...

Возможно ли сделать движение зрачков, реагирующее на движение какого-либо объекта
Вообщем благодаря модеру удалось разукрасить картинку,за что ему спасибо. Нужна анимация для нее. Возможно ли сделать движение...

Графика и движение
В рисованных мультфильмах иллюзия движения создаётся последовательной сменой кадров, каждый из которых фиксирует очередное положение...

Движение графика функции
Доброе время суток! Помогите пожалуйста решить задачки: 1. Построить график функции с масштабированием 2. Прорисовать график с...

Движение графика функции
Доброе время суток! Помогите пожалуйста решить задачки: 1. Построить график функции с масштабированием 2. Прорисовать график с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru