Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 07.01.2012
Сообщений: 8

Кривая Безье: нужно, чтобы было не 4 точки а 7

13.01.2012, 17:46. Показов 2220. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужно переделать чтобы было не 4 точки а 7, не могу не как переделать, помогите пожалуйста

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
110
111
112
113
114
115
using System;
using System.Drawing;
 
namespace WindowsFormsApplicationTest2
{
    
    /// Кривая безье
    
    public class BezierCurve
    {
       
        /// Количество точек для отрисовки.
       
        private const int N = 500;
 
        
        /// Опорные точки.
       
        private PointF[] dataPoints;
 
       
        /// Создание кривой безье
        
        /// <param name="points">Опорные точки</param>
        public BezierCurve(PointF[] points)
        {
            if (points.Length != 4)
            {
                throw new ArgumentOutOfRangeException();
            }
            dataPoints = points;
            Invalidate();
        }
 
        
        /// Точки для отрисовки
        
        public PointF[] DrawingPoints { get; private set; }
 
        /// Опорные точки
        
        public PointF[] DataPoints
        {
            get { return dataPoints; }
            set
            {
                if (value.Length != 4)
                {
                    throw new ArgumentOutOfRangeException();
                }
                dataPoints = value;
                Invalidate();
            }
        }
 
        
        /// Опорная точка
        
        /// <param name="i">Индекс опорной точки</param>
        public PointF this[int i]
        {
            get { return dataPoints[i]; }
            set
            {
                dataPoints[i] = value;
                Invalidate();
            }
        }
 
        /// Обновить точки для отрисовки.
        
        public void Invalidate()
        {
            DrawingPoints = new PointF[N + 1];
            float dt = 1f / N;
            float t = 0f;
            for (int i = 0; i <= N; i++)
            {
                DrawingPoints[i] = B(t);
                t += dt;
            }
        }
 
      
        /// Функция кривой
       
        /// <param name="t">Параметр. Может изменяться от 0 до 1</param>
        /// <returns>Точка кривой</returns>
        private PointF B(float t)
        {
 
            float c0 = (1 - t) * (1 - t) * (1 - t);
 
 
            float c1 = (1 - t) * (1 - t) * 3 * t;
            float c2 = (1 - t) * t * 3 * t;
            float c3 = t * t * t;
 
            float x = c0 * dataPoints[0].X + c1 * dataPoints[1].X + c2 * dataPoints[2].X + c3 * dataPoints[3].X;
            float y = c0 * dataPoints[0].Y + c1 * dataPoints[1].Y + c2 * dataPoints[2].Y + c3 * dataPoints[3].Y;
            return new PointF(x, y);
 
        }
 
       
        /// Отрисовка кривой.
        
        /// <param name="g">График для отрисовки</param>
        public void Draw(Graphics g)
        {
            Pen pen = new Pen(Color.Red, 2);
            g.DrawLines(pen, DrawingPoints);
        }
    }
}
 Комментарий модератора 
Внимательнее выбирайте раздел. Ну и про теги форматирования кода не забывайте.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.01.2012, 17:46
Ответы с готовыми решениями:

кривая Безье не могу понять где точки
P = (1−t)^3*P1 + 3(1−t)^2*t*P2 +3*(1−t)t^2*P3 + t^3P4, t = Эти уравнения — векторные, т.е. вместо Pi нужно подставить координаты i-й...

Кривая Безье в сплайн Безье
Здравствуйте. Я по специальности программист и мне нужно генерировать замкнутую кривую не пересекающую себя. Наткнулся на кривую Безье, на...

Кривая Безье
Создать функцию, которая на входе принимает опорные узлы в формате (x,y) и их количество n. Число n зависит от того, сколько узлов ввели....

6
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
13.01.2012, 19:16

Не по теме:

Цитата Сообщение от Vika935 Посмотреть сообщение
кривая бизье
что за кривые такие, сам вывел что ли?:D


ну а по теме - вот тебе формула - http://ru.wikipedia.org/wiki/%... 0.B8.D0.B5
выводи!
0
0 / 0 / 0
Регистрация: 07.01.2012
Сообщений: 8
13.01.2012, 19:26  [ТС]
да у меня не получается нечего я уже пыталась(
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
13.01.2012, 19:29
Цитата Сообщение от Vika935 Посмотреть сообщение
да у меня не получается нечего я уже пыталась(
попытки в студию

Не по теме:

над окошком быстрого овета есть редактор формул:)

0
0 / 0 / 0
Регистрация: 07.01.2012
Сообщений: 8
13.01.2012, 19:31  [ТС]
я эти формулы вообще не умею выводить, я пыталась точек добавить, но что то не то получилось
C#
1
2
3
4
5
6
7
8
9
10
11
float c0 = (1 - t) * (1 - t) * (1 - t) * (1 - t) * (1 - t) * (1 - t)* (1 - t);
            float c1 = (1 - t) * (1 - t) * (1 - t) * (1 - t) * (1 - t) * (1 - t) * 7 * t;
            float c2 = (1 - t) * (1 - t) * (1 - t) * (1 - t) * (1 - t)  * 21 * t;
            float c3 = (1 - t) * (1 - t) * (1 - t) * (1 - t)  * 35 * t;
            float c4 = (1 - t) * (1 - t) * (1 - t)  * 35 * t;
            float c5 = (1 - t) * (1 - t)  * 21 * t;
            float c6 = (1 - t) * t * 7 * t;
            float c7 = t * t * t * t * t * t * t;
            float x = c0 * dataPoints[0].X + c1 * dataPoints[1].X + c2 * dataPoints[2].X + c3 * dataPoints[3].X + c4 * dataPoints[4].X + c5 * dataPoints[5].X + c6 * dataPoints[6].X + c7 * dataPoints[7].X;
            float y = c0 * dataPoints[0].Y + c1 * dataPoints[1].Y + c2 * dataPoints[2].Y + c3 * dataPoints[3].Y + c4 * dataPoints[4].Y + c5 * dataPoints[5].Y + c6 * dataPoints[6].Y + c7 * dataPoints[7].Y;
            return new PointF(x, y);
0
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
13.01.2012, 19:45
Vika935, какой вид кривой Безье и с каким шагом должна строиться кривая? Так же мне интересно каким образом ее рисовать? (Через интерполирование, экстраполяцию или аппроксимацию)
Возможно, если напишешь нормально условие и требования задачи, то я дам решение.
0
0 / 0 / 0
Регистрация: 07.01.2012
Сообщений: 8
13.01.2012, 19:50  [ТС]
задание и было просто построить кривую бизье это по компьютерной графики, я преподавателю показала эту кривую которая выше он сказал что теперь надо переделать чтоб было 7 точек.вот и все задание.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.01.2012, 19:50
Помогаю со студенческими работами здесь

Кривая Безье
Привет всем. Если не трудно помогите решыть одну задачу. Есть кривая Безье, из нее нужно сделать пaраболоид. Зарание спаисбо!. Вот сама...

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

Кривая Безье.
Помогите понять как нарисовать кривую Безье(по 3м точкам) на JavaScript. Или дайте код я сам разберусь.

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

Кривая Безье
Вооружился статейкой на википедии https://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B8%D0%B2%D0%B0%D1%8F_%D0%91%D0%B5%D0%B7%D1%8C%D0%B5 и...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru