Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 04.06.2019
Сообщений: 16

Динамическое изображение: астроида

04.06.2019, 23:28. Показов 6694. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Я написал код для рисования графика астроиды. Может кто-то поможет дописать код, чтобы астроида рисовалась постепенно (зайдите на Википедию, страница "Астроида", справа есть gif-изображение). Нужно точно так же. Был бы очень благодарен, если для кого-то это пустяки, а то я даже примерно не представляю, как это сделать. Код графика прилагаю.

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
void __fastcall TForm3::Button2Click(TObject *Sender)
{
double R, x, y, fn, fk, t;
int x0, y0, m;
 
x0=(Image1->Width)/2;
y0=(Image1->Height)/2;
x=-x0;
Image1->Canvas->Pen->Color = clBlack;
Image1->Canvas->MoveTo(x0, 30);
Image1->Canvas->LineTo(x0, 570);
Image1->Canvas->MoveTo(30, y0);
Image1->Canvas->LineTo(570, y0);
 
R = StrToFloat(Form3->Edit1->Text);
 
fn=0;
fk=2*(M_PI);
x=-x0;
t=fn;
 
while (t<=fk)
{
x = 25*R*cos(t)*cos(t)*cos(t);
y = 25*R*sin(t)*sin(t)*sin(t);
 
Image1->Canvas->Pixels[x0+round(x)][y0-round(y)] = clGreen;
t=t+0.001;
}   
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.06.2019, 23:28
Ответы с готовыми решениями:

динамическое изображение маятника
напишите программу которая выводит динамическое изображение маятника,совершающее горманическое колебания ф=Аsin(wt) ф-угол между вертикалью...

Астроида
Помогите построить Астроиду: x2/3+y2/3=R2/3

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

30
0 / 0 / 0
Регистрация: 04.06.2019
Сообщений: 16
11.06.2019, 22:18  [ТС]
Студворк — интернет-сервис помощи студентам
gunslinger,

Цитата Сообщение от gunslinger Посмотреть сообщение
А для твоей конхоиды, скорей всего, нужен другой поход. Насчет отрезка не знаю, еще по этому поводу не думал.
Я там gif-изображение прикрепил. Вроде так и нужно. Если сможете реализовать до конца недели, будет очень отлично. Если нет, то ничего страшного. Если вдруг получится, могу даже небольшое вознаграждение кинуть за труды.

 Комментарий модератора 
Цитата Сообщение от Allekk Посмотреть сообщение
могу даже небольшое вознаграждение кинуть
и получить по шапке за нарушение п. 5.9 Правил форума
0
place status here
 Аватар для gunslinger
3192 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,028
12.06.2019, 18:33
Я в курсе, как конхоида строится. Имелся в виду способ реализации.
Вознаграждение получают во фрилансе либо за какие-то дополнительные услуги. Так что в данной ситуации ничего не надо.
Тем более, раз ты любишь готовое, приготовил пару сюрпризов. Ниже в коде построения конхоиды я заменил несколько мест знаками вопроса. Тебе нужно понять, на что их нужно заменить, чтобы код работал. Подсказка: обрати внимание на свойства конхоиды.
И при рисовании части графика (отмечено стрелками) отрезок располагается в противоположном (по двум осям) относительно своего правильного положения месте. Это я пока не знаю, как исправить. Так что сам подумай, в чем может быть причина.
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
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
const a = 50, l = 100, start_angle = - M_PI / 2, end_angle = 2 * M_PI;
double inc = start_angle, difX, difY, step = 0.005, angle, old_angle = start_angle;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
  Timer1->Enabled = 1;
  Timer1->Interval = 1;
  difX = ClientWidth / 2;
  difY = ClientHeight / 2;
}
//---------------------------------------------------------------------------
double Y (double t)
{
  return a + l * cos(t);
}
//---------------------------------------------------------------------------
double X (double t)
{
  return a * tan(t) + l * sin(t);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  angle = atan2(Y(inc), X(inc));
//  Image->Canvas->TextOutW(50, 50, FloatToStrF(angle / M_PI, ffFixed, 3, 2) + "   " + FloatToStrF(inc, ffFixed, 3, 2));
 
  Image->Canvas->Pen->Color = clGreen;
  Image->Canvas->MoveTo(0, difY - a);
  Image->Canvas->LineTo(2 * difX, difY - a);
 
  Image->Canvas->Pen->Color = clBlack;
  Image->Canvas->MoveTo(0, difY);
  Image->Canvas->LineTo(2 * difX, difY);
 
  Image->Canvas->MoveTo(difX, 0);
  Image->Canvas->LineTo(difX, 2 * difY);
 
 
  Image->Canvas->Pen->Color = clWhite;
  Image->Canvas->MoveTo(difX + X(inc - step), difY - Y(inc - step));
  Image->Canvas->LineTo(difX + X(inc - step) - cos(old_angle) * 2 * ???, difY - Y(inc - step) + sin(old_angle) * 2 * ???);
 
  Image->Canvas->Pen->Color = clBlue;
  Image->Canvas->MoveTo(difX + X(inc), difY - Y(inc));
  Image->Canvas->LineTo(difX + X(inc) - cos(angle) * 2 * ???, difY - Y(inc) + sin(angle) * 2 * ???);
 
  for (double i = start_angle + step; i < inc; i += step)
    Image->Canvas->Pixels[difX + X(i)][difY - Y(i)] = clRed;
//  Image->Canvas->Pixels[difX + X(inc) - cos(angle) * 2 * ???][difY - Y(inc) + sin(angle) * 2 * ???] = clPurple;
 
  old_angle = angle;
 
  inc += step;
 
  if (inc >= end_angle)
  {
    inc = start_angle;
    Image->Canvas->FillRect(Image->Canvas->ClipRect);
  }
}
//---------------------------------------------------------------------------
0
0 / 0 / 0
Регистрация: 04.06.2019
Сообщений: 16
13.06.2019, 13:44  [ТС]
gunslinger, ого, вы просто чудесный человек. Я уже не надеялся даже, что кто-нибудь мне нарисует, и хотел попросить, чтобы мне разрешили реализовать другую кривую вместо конхоиды, ту же гипоциклоиду, например. Это точно последняя кривая.
Всё получилось у меня как надо, только есть пара нюансов. На рисунке я показал, где у меня точка старта. Так вот, отрезок начинает рисовать кривую с этой точки, уходит влево, выходит справа, уходит вниз и рисует какие-то закарючки, потом снова уходит влево, потом всё-таки справа выходит и возвращается к точке старта. В общем проходит несколько циклов подряд. В идеале я хотел, чтобы он справа выходил, проходил всего один цикл, то есть рисовал кривую за один цикл, уходил влево, а потом канва обнулялась. Без всяких уходов вниз и закарючек. В вашем случае он должен слева выходить и вправо уходить, у меня немного другая система координат просто, но в целом то же самое.
Логично предположить, что раз проблема в цикле, то нужно мне что-то изменить в коде, где цикл "for". Пробовал методом тыка менять start angle, координаты, прочие углы, но безуспешно. Около часа пытался разобраться, но пока не смог. Хотелось бы спросить, я иду в правильном направлении вообще?
Миниатюры
Динамическое изображение: астроида   Динамическое изображение: астроида   Динамическое изображение: астроида  

0
place status here
 Аватар для gunslinger
3192 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,028
13.06.2019, 14:14
"Закорючки", в частности, связаны с тем, о чем я писал выше. Как это решить, еще не знаю. Могу предположить, что, возможно, влияют значения на границе области определения функции, но не уверен.
Также на появление закорючек влияет строка 59 кода из поста 22 (я ее не зря закомментировал).
И начинать график с самого края у меня тоже не получилось, хотя в итоге рисунок получается полный.
Можешь глянуть значения параметров (строка 35 кода из поста 22) при построении определенных частей графика, если это вдруг наведет на какие-то мысли.
картинки здесь

P. S.: зеленую линию ты рисуешь не там. Она должна располагаться там, где движется центр отрезка.
0
place status here
 Аватар для gunslinger
3192 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,028
13.06.2019, 16:38
Решил сделать в качестве бонуса (чтобы добить, так сказать, тему) гипо- и эпитрохоиду (со вторым пришлось немного повозиться) как наиболее общие варианты подобных кривых (частный случай - обычную трохоиду как обобщение простой циклоиды - не рассматриваем).
Есть возможность задавать параметры в окне программы (в том числе "на лету"). Клик левой кнопкой мыши (ЛКМ) по области, где рисуется график, либо паузит, либо продолжает выполнение анимации.
Дополнительно определяется наибольший общий делитель (НОД) [алгоритм Евклида] для R и r, чтобы рисовать все минимально необходимые обороты движущейся окружности (плюс 1 оборот после завершения отрисовки, чтобы успеть полностью увидеть весь график, а не сразу резко начинать рисовать сначала).

гипотрохоида (код + картинки)

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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
int R = 180, r = 50, h = 75;
//const R = 180, r = 100, h = 75;
static double inc, difX, difY, step = 0.01, k;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
  Timer1->Enabled = 1;
  Timer1->Interval = 10;
  Shape->Shape = stCircle;
  Shape->Brush->Style = bsClear;
  Shape->Pen->Color = clGreen;
  Shape->BringToFront();
  difX = Image->Width / 2;
  difY = Image->Height / 2;
  LE_R1->Text = R;
  LE_r2->Text = r;
  LE_h->Text = h;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  Shape->Width = 2 * r;
  Shape->Height = 2 * r;
  inc = 0;
  k = 1. * R / r;
}
//---------------------------------------------------------------------------
double X (double t)
{
  return (R - r) * cos(t) + h * cos((k - 1) * t);
}
//---------------------------------------------------------------------------
double Y (double t)
{
  return (R - r) * sin(t) - h * sin((k - 1) * t);
}
//---------------------------------------------------------------------------
int nod(int a, int b)  // наибольший общий делитель (НОД)
{
  while(a != 0 && b != 0)
  {
    if( a >= b)
      a %= b;
    else
      b %= a;
  }
  return a + b;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  Image->Canvas->Pen->Color = clBlack;
  Image->Canvas->Ellipse(difX - R, difY - R, difX + R, difY + R);
 
  Shape->Left = Image->Left + difX - r + cos(inc) * (R - r);
  Shape->Top = Image->Top + difY - r - sin(inc) * (R - r);
 
  Image->Canvas->Pen->Color = clWhite;
  Image->Canvas->MoveTo(difX + X(inc - step), difY - Y(inc - step));
  Image->Canvas->LineTo(difX + cos(inc - step) * (R - r), difY - sin(inc - step) * (R - r));
 
  Image->Canvas->Pen->Color = clBlue;
  Image->Canvas->MoveTo(difX + X(inc), difY - Y(inc));
  Image->Canvas->LineTo(difX + cos(inc) * (R - r), difY - sin(inc) * (R - r));
 
  for (double i = 0; i <= inc; i += step)
    Image->Canvas->Pixels[difX + X(i)][difY - Y(i)] = clRed;
  inc += step;
  if (inc > 2 * M_PI * (r / nod(R, r) + 1))  // делаем мин. кол-во полных вращений окр-сти + 1
  {
    inc = 0;
    Image->Canvas->FillRect(Image->Canvas->ClipRect);
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LE_R1Change(TObject *Sender)
{
  R = LE_R1->Text.ToIntDef(R);
 
  Image->Canvas->FillRect(Image->Canvas->ClipRect);
  this->FormCreate(this);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LE_r2Change(TObject *Sender)
{
  r = LE_r2->Text.ToIntDef(r);
  if (r <= 0)
  {
    r = 100;
    LE_r2->Text = r;
  }
 
  Image->Canvas->FillRect(Image->Canvas->ClipRect);
  this->FormCreate(this);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LE_hChange(TObject *Sender)
{
  h = LE_h->Text.ToIntDef(h);
 
  Image->Canvas->FillRect(Image->Canvas->ClipRect);
  this->FormCreate(this);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ImageClick(TObject *Sender)
{
  Timer1->Enabled ^= 1;
}

эпитрохоида (код + картинки)

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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
int R = 75, r = 25, h = 12;
//int R = 100, r = 50, h = 25;
static double inc, difX, difY, step = 0.01, m;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
  Timer1->Enabled = 1;
  Timer1->Interval = 1;
  Shape->Shape = stCircle;
  Shape->Brush->Style = bsClear;
  Shape->Pen->Color = clGreen;
  Shape->BringToFront();
  difX = Image->Width / 2;
  difY = Image->Height / 2;
  LE_R1->Text = R;
  LE_r2->Text = r;
  LE_h->Text = h;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  Shape->Width = 2 * r;
  Shape->Height = 2 * r;
  inc = 0;
  m = 1. * r / R;
}
//---------------------------------------------------------------------------
double X (double t)
{
  return R * (m + 1) * cos(m * t) - h * cos((m + 1) * t);
}
//---------------------------------------------------------------------------
double Y (double t)
{
  return R * (m + 1) * sin(m * t) - h * sin((m + 1) * t);
}
//---------------------------------------------------------------------------
int nod(int a, int b)  // наибольший общий делитель (НОД)
{
  while(a != 0 && b != 0)
  {
    if( a >= b)
      a %= b;
    else
      b %= a;
  }
  return a + b;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  Image->Canvas->Pen->Color = clBlack;
  Image->Canvas->Ellipse(difX - R, difY - R, difX + R, difY + R);
 
  Shape->Left = Image->Left + difX - r + cos(inc * m) * (R + r);
  Shape->Top = Image->Top + difY - r - sin(inc * m) * (R + r);
 
  Image->Canvas->Pen->Color = clWhite;
  Image->Canvas->MoveTo(difX + X(inc - step), difY - Y(inc - step));
  Image->Canvas->LineTo(difX + cos((inc - step) * m) * (R + r), difY - sin((inc - step) * m) * (R + r));
 
  Image->Canvas->Pen->Color = clBlue;
  Image->Canvas->MoveTo(difX + X(inc), difY - Y(inc));
  Image->Canvas->LineTo(difX + cos(inc * m) * (R + r), difY - sin(inc * m) * (R + r));
 
  for (double i = 0; i <= inc; i += step)
    Image->Canvas->Pixels[difX + X(i)][difY - Y(i)] = clRed;
  inc += step;
  if (inc > 2 * M_PI * (R / nod(R, r) + 1))  // делаем мин. кол-во полных вращений окр-сти + 1
  {
    inc = 0;
    Image->Canvas->FillRect(Image->Canvas->ClipRect);
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LE_R1Change(TObject *Sender)
{
  R = LE_R1->Text.ToIntDef(R);
  if (R <= 0)
  {
    R = 100;
    LE_R1->Text = R;
  }
 
  Image->Canvas->FillRect(Image->Canvas->ClipRect);
  this->FormCreate(this);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LE_r2Change(TObject *Sender)
{
  r = LE_r2->Text.ToIntDef(r);
 
  Image->Canvas->FillRect(Image->Canvas->ClipRect);
  this->FormCreate(this);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LE_hChange(TObject *Sender)
{
  h = LE_h->Text.ToIntDef(h);
 
  Image->Canvas->FillRect(Image->Canvas->ClipRect);
  this->FormCreate(this);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ImageClick(TObject *Sender)
{
  Timer1->Enabled ^= 1;
}
0
0 / 0 / 0
Регистрация: 04.06.2019
Сообщений: 16
13.06.2019, 17:09  [ТС]
gunslinger, скорее всего область определения функции. В интернете написано, что у конхоиды t принадлежит промежутку (-pi/2, pi/2) — правая ветвь, (pi/2, 3*pi/2) — левая ветвь. У вас указаны значения только для правой (верхней) ветви, как я понял.
0
place status here
 Аватар для gunslinger
3192 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,028
13.06.2019, 17:58
Левая (нижняя) ветвь тоже рисуется. Пробегаются все значения диапазона. Только рисуется как-то странно. В этом вся проблема. Нужно смотреть, как и почему именно так ведет себя график в момент приближения к асимптотам pi/2 и 3pi/2 (=-pi/2).
0
0 / 0 / 0
Регистрация: 04.06.2019
Сообщений: 16
13.06.2019, 18:00  [ТС]
gunslinger, да, я тоже понял уже, что проблема в радианах. Надо разобраться, как бы исключить ненужные радианы и оставить только нужные.
0
place status here
 Аватар для gunslinger
3192 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,028
13.06.2019, 22:10
Дело было в угле наклона (angle) отрезка. Либо изначально криво сделал, либо что-то не до конца понял.
Пришлось делать (по сути, костыльный) "холостой ход" примерно на pi/2 (или меньше, например, на pi/4) в обе стороны, чтобы угол стал принимать "правильные" значения (при более коротком сдвиге на pi/10 уже не все рисуется).
Строку 29 можно убрать / закомментировать. Нужна изначально для тестирования кода, а не для рисования.
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
const a = 50, l = 180, start_angle = - 3 * M_PI_4, end_angle = 3 * M_PI_4;
double static inc = start_angle, difX, difY, step = 0.002, angle, old_angle = start_angle, angle_from = - M_PI_2, angle_to = M_PI_2;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
  Timer->Enabled = 1;
  Timer->Interval = 1;
  difX = ClientWidth / 2;
  difY = ClientHeight / 2;
}
//---------------------------------------------------------------------------
double Y (double t)
{
  return a + l * cos(t);
}
//---------------------------------------------------------------------------
double X (double t)
{
  return a * tan(t) + l * sin(t);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TimerTimer(TObject *Sender)
{
  while (inc <= angle_from || (inc >= angle_to && inc <= end_angle))
    inc += step;
 
  angle = atan2(Y(inc), X(inc));
  Image->Canvas->TextOutW(10, 10, "[ angle / M_PI= " + FloatToStrF(angle / M_PI, ffFixed, 3, 2) + " ]          [ inc = " + FloatToStrF(inc, ffFixed, 3, 2) + " ] ");
 
  Image->Canvas->Pen->Color = clGreen;
  Image->Canvas->MoveTo(0, difY - a);
  Image->Canvas->LineTo(2 * difX, difY - a);
 
  Image->Canvas->Pen->Color = clBlack;
  Image->Canvas->MoveTo(0, difY);
  Image->Canvas->LineTo(2 * difX, difY);
 
  Image->Canvas->MoveTo(difX, 0);
  Image->Canvas->LineTo(difX, 2 * difY);
 
 
  Image->Canvas->Pen->Color = clWhite;
  Image->Canvas->MoveTo(difX + X(inc - step), difY - Y(inc - step));
  Image->Canvas->LineTo(difX + X(inc - step) - cos(old_angle) * 2 * l, difY - Y(inc - step) + sin(old_angle) * 2 * l);
 
  Image->Canvas->Pen->Color = clBlue;
  Image->Canvas->MoveTo(difX + X(inc), difY - Y(inc));
  Image->Canvas->LineTo(difX + X(inc) - cos(angle) * 2 * l, difY - Y(inc) + sin(angle) * 2 * l);
 
  for (double i = angle_from + step; i < inc; i += step)
  {
    Image->Canvas->Pixels[difX + X(i - step)][difY - Y(i - step)] = clRed;
    Image->Canvas->Pixels[difX + X(i) - cos(atan2(Y(i), X(i))) * 2 * l][difY - Y(i) + sin(atan2(Y(i), X(i))) * 2 * l] = clPurple;
  }
 
 
  old_angle = angle;
 
  inc += step;
 
  if (inc >= end_angle)
  {
    inc = start_angle;
    Image->Canvas->FillRect(Image->Canvas->ClipRect);
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ImageClick(TObject *Sender)
{
  Timer->Enabled ^= 1;
}
0
0 / 0 / 0
Регистрация: 04.06.2019
Сообщений: 16
13.06.2019, 22:36  [ТС]
gunslinger, при запуске вылетает несколько окошек с ошибкой "Invalid floating point operation" (недопустимая операция с плавающей запятой). Странно. Сейчас разбираюсь. У вас нормально запустилось?
0
0 / 0 / 0
Регистрация: 04.06.2019
Сообщений: 16
14.06.2019, 22:49  [ТС]
gunslinger, попробовал на другом компьютере в билдере, там заработало. Чертовщина какая-то. Там была старая версия, а у меня самая свежая. Походу работоспособность кода ещё и зависит от версии билдера, и абсолютно один и тот же код не гарантирует корректную работу на всех версиях билдера. У меня уже не первый раз такое, поэтому и решил проверить. Спасибо за проделанную работу для меня, а то тригонометрия мне тяжеловато даётся, как вы уже поняли, хотя само программирование мне нравится. Теперь я сделал приложения для абсолютно всех нужных кривых, подрисовал систему координат и сделал ввод параметров вручную и красивую оболочку, могу вздохнуть с облегчением. Теперь тему можно считать закрытой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.06.2019, 22:49

Кривая астроида
помогите кто сможет: 1. Кривая астроида определяется следующим уравнением в параметрической форме: x=Rcos^3(φ),...

Напишите программу, которая выводит динамическое изображение маятника, совершающего колебания
Напишите программу, которая выводит динамическое изображение маятника, совершающего колебания Помогите срочно....

Динамическое изображение треугольника, вращающегося на плоскости вокруг одной из своих вершин
Напишите программу, которая выводит динамическое изображение треугольника, вращающегося на плоскости вокруг одной из своих вершин.

Opengl, Астроида (c++, delphi)
Всем доброго времени суток, такой вопрос, как можно нарисовать астроиду в opengl: x = {cos}^{3}(t) y = {sin}^{3}(t) в делфи...

График функции ”Астроида”
Что за линия и как её убрать? Помогите пожалуйста. procedure TForm1.Button1Click(Sender: TObject); const mash=100; Var r :...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru