Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Builder Определение mac-адреса сетевой карты https://www.cyberforum.ru/ cpp-builder/ thread1730718.html
Приветствую. Ребят, дайте пожалуйста действующий способ определения mac-адреса сетевой карты на билдере.
C++ Builder Сообщения линкера "Unresolved external 'WinMain'"
Создаю электронный учебник в Borland C++Builder 6 запускаю выводит Unresolved external '__InitVCL' referenced from C:\PROGRAM FILES (X86)\BORLAND\CBUILDER6\LIB\CP32MTI.LIB|crtlvcl Unresolved...
C++ Builder Считать текст из файла, выполнить в нем поиск и записать результат в файл
Помогите написать код как можно более простым способом: В начале исходного текста стоит заглавная буква русского алфавита для поиска с символом ':' (например, А: ). Далее идет словарь русских слов...
C++ Builder Смена страниц в PageControl по таймеру сделал смену только для 2 страниц : void __fastcall TForm1::Timer2Timer(TObject *Sender) { switch(PageControl1->ActivePageIndex) { case 0: PageControl1->ActivePageIndex=1;... https://www.cyberforum.ru/ cpp-builder/ thread1730494.html
C++ Builder StringGrid (Оптимизация кода) - Загрузка и Сохранение https://www.cyberforum.ru/ cpp-builder/ thread1730368.html
Добрый день! Для сохранения StringGrid в файл использую TStringList *Table = new TStringList; for(int i = 0 ; i < fStringGrid->RowCount ; i++) { ...
Вывод двумерного массива в StringGrid C++ Builder
Здравствуйте можете подсказать как сделать вывод двумерного массива в StringGrid ? И если есть ошибки в исходнике можете на них указать ? (По заданию мне надо поменять максимальный элементы местами)...
Вывод двумерного массива в StrigGrid C++ Builder
Здравствуйте , можете подсказать как вывести двумерный массив в StringGrid ? По заданию мне нужно поменять местами максимальный и минимальный элементы: Вот исходник. И есть ли в нём ошибки ? ...
C++ Builder Зависшая программа. Перезапуск Добрый день! Задумался. Есть программа написанная на Embarcadero XE8. Гипотетически, она может зависнуть. Как написать стороннее приложение (2) проверяющее не зависло ли приложение (1) ? Если... https://www.cyberforum.ru/ cpp-builder/ thread1730264.html
C++ Builder Ограничения для RandomRange https://www.cyberforum.ru/ cpp-builder/ thread1730178.html
Нужно чтобы рандом работал на меня. Тоесть ,чтобы задавал цифры из диапазона по условию . Например d1=RandomRange(1,10); d2=RandomRange(1,10); Нужно чтобы d1%d2==0 . Как грамотно записать?
C++ Builder Как сделать объекты видимыми? Вот код: void __fastcall TForm2::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { TLabel *CreateLabel= new TLabel(this); if (Button == mbLeft) {... https://www.cyberforum.ru/ cpp-builder/ thread1730099.html
случайный прохожий
1504 / 1001 / 373
Регистрация: 20.07.2013
Сообщений: 2,903
16.05.2016, 05:50 0

В-сплайновые кривые

16.05.2016, 05:50. Показов 4138. Ответов 17
Метки (Все метки)

Лучший ответ Сообщение было отмечено Gubila_2000 как решение

Решение

Выяснил причину. Нужно было соответствующим образом выбирать узловые точки https://www.cyberforum.ru/cgi-bin/latex.cgi?{t}_{i}.
Теперь можно строить сплайны вплоть до степени p = 4. Хотя третьей степени вроде достаточно.
Можешь поэкспериментировать.
ехе для случая p = 3 во вложении.
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
const count = 7, m = 10;
TPoint point[count];
double tmin = 0, tmax = 1, t[m+1] = {tmin, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, tmax};
int n = count - 1, p = m - count;  // p = m - n - 1;
 
double N(UINT i, UINT j, double T)
{
  if (j == 0)
  {
    if (T >= t[i] && T < t[i+1])  // && t[i+1] > t[i])
      return 1;
    else
      return 0;
  }
  else
  {
    double memb1 = (t[i+j] - t[i]) ? (T - t[i]) / (t[i+j] - t[i]) : 0,
           memb2 = (t[i+j+1] - t[i+1]) ? (t[i+j+1] - T) / (t[i+j+1] - t[i+1]) : 0;
    return memb1 * N(i, j-1, T) + memb2 * N(i+1, j-1, T);
  }
}
//---------------------------------------------------------------------------
TPoint C(UINT p, double T)
{
  TPoint b = TPoint(0, 0);
  double temp;
  for (int i = 0; i <= n; i++)
  {
    temp = N(i, p, T);
    b.x += point[i].x * temp;
    b.y += point[i].y * temp;
  }
  return b;
}
//---------------------------------------------------------------------------
void init()
{
  for (int i = 1; i <= p; i++)
  {
    t[i] = tmin;
    t[m-i] = tmax;
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonClick(TObject *Sender)
{
  Refresh();
  init();
  UINT offset = 25, range = 500 - 2 * offset, r = 3;
  double step = 1e-5;
  TPoint a;
  TColor color = clRed;
  TColor color2 = clGray;
  randomize();
  for (int i = 0; i <= n; i++)
    point[i] = TPoint(offset + random(range), offset + random(range));
 
  Canvas->Pen->Color = color2;
  Canvas->TextOutW(point[0].x, point[0].y, 1);
  Canvas->Ellipse(point[0].x - r, point[0].y - r, point[0].x + r, point[0].y + r);
  for (int i = 1; i <= n; i++)
  {
    Canvas->TextOutW(point[i].x, point[i].y, i+1);
    Canvas->MoveTo(point[i-1].x, point[i-1].y);
    Canvas->LineTo(point[i].x, point[i].y);
    Canvas->Ellipse(point[i].x - r, point[i].y - r, point[i].x + r, point[i].y + r);
  }
 
  if (p * 2 <= m - 1)
    for(double T = tmin; T <= tmax; T += step)
    {
      a = C(p, T);
      Canvas->Pixels[a.x][a.y] = color;
    }
  else
    MessageBox(Application->Handle, String("Должно выполняться условие\n\nm-1 >= 2p\n\nПри m=" + String(m) + ", p=" + String(p) + " оно не соблюдается.").c_str(), L"Ошибка", 0);
}


Вернуться к обсуждению:
В-сплайновые кривые
1
Миниатюры
В-сплайновые кривые  
Вложения
Тип файла: zip bspline.zip (1.36 Мб, 56 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.05.2016, 05:50
Готовые ответы и решения:

Кривые на С++
Добрый день. Есть такая задача: имеются 4 точки на плоскости, их координаты известны. При условии,...

Кривые Серпинского
Мучаюсь третий день! Не могу сделать так, чтобы порядок нужно было вводить с клавиатуры, не...

Кривые Серпинсого
На рисунке изображены кривые Серпинского 1 и 2-го порядков. Составить программу построения кривых...

Кривые расчеты
Есть прога зарплаты. Начисляю отпускные одному человеку появляется огромная сумма непойми откуда....

17
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.