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

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

04.06.2019, 23:28. Показов 6117. Ответов 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
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
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
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
13.06.2019, 14:14
"Закорючки", в частности, связаны с тем, о чем я писал выше. Как это решить, еще не знаю. Могу предположить, что, возможно, влияют значения на границе области определения функции, но не уверен.
Также на появление закорючек влияет строка 59 кода из поста 22 (я ее не зря закомментировал).
И начинать график с самого края у меня тоже не получилось, хотя в итоге рисунок получается полный.
Можешь глянуть значения параметров (строка 35 кода из поста 22) при построении определенных частей графика, если это вдруг наведет на какие-то мысли.
картинки здесь

P. S.: зеленую линию ты рисуешь не там. Она должна располагаться там, где движется центр отрезка.
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
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
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
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
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
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
Ответ Создать тему
Новые блоги и статьи
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru