Russian Qt Forum
Ноябрь 01, 2024, 14:28
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
Кривая по точкам
Страниц: [
1
]
2
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Кривая по точкам (Прочитано 47811 раз)
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Кривая по точкам
«
:
Июль 21, 2007, 12:37 »
Нужна функция, которая позволила бы провести плавную кривую по заданным точкам.
Точки задаются в виде массива Х и У, их может быть любое количество.
Методы cubicTo() и quadTo() не подходят, так как: 1. требуют контрольных точек, 2. ограничены отрезками из 2 или 3 точек, а стыкуются они криво.
Если ли у кого решение этой проблемы? Заранее спасибо.
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Alex Forth
Гость
Кривая по точкам
«
Ответ #1 :
Июль 21, 2007, 12:43 »
Оно ?
http://alglib.sources.ru/interpolation/spline3.php
Записан
Sergeich
Гость
Кривая по точкам
«
Ответ #2 :
Июль 21, 2007, 20:26 »
Достаточно вычислить контрольные точки. Это можно сделать через построение кубического сплайна для параметрической кривой: считаешь коэффициенты для сплайнов x(t) и y(t) (полагая что первая точка из заданного массива получается при t=0, вторая - при t=1, и т.д.), далее из коэффициентов сплайна легко получить контрольные точки для кривых Безье. Статей по построению куб. сплайнов в инете хуева туча.
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Кривая по точкам
«
Ответ #3 :
Июль 21, 2007, 23:28 »
Спасибо за ссылку, я посмотрю. С первого взгляда то что надо.
Ну а по поводу статей - не нашел пока ни одной, решающей именно эту проблему - построить кривую по РЕАЛЬНЫМ точкам, а не по контрольным
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
joktar
Гость
Кривая по точкам
«
Ответ #4 :
Июль 22, 2007, 05:28 »
Рассчитывай необходимые контрольные точки.
Как - например Н.Н.Голованов Геометрическое моделирование или Адамс,Математические основы машинной графики.
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Кривая по точкам
«
Ответ #5 :
Июль 22, 2007, 09:42 »
Проблема в том, что встроенные методы QPainter cubicTo() и quadTo() предназначены только для рисования отрезков из 3 точек. То есть, если их стыковать между собой для большей кривой, место стыка выглядит не плавно. Мне же нужна плавная кривая, проходящая более чем через 3 точки (их штук 100 может быть).
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Alex Forth
Гость
Кривая по точкам
«
Ответ #6 :
Июль 22, 2007, 10:10 »
Цитата: "Racheengel"
Проблема в том, что встроенные методы QPainter cubicTo() и quadTo() предназначены только для рисования отрезков из 3 точек. То есть, если их стыковать между собой для большей кривой, место стыка выглядит не плавно. Мне же нужна плавная кривая, проходящая более чем через 3 точки (их штук 100 может быть).
По той ссылке, что я приводил, обрати внимание на кубические сплайны. Там на границах промежутков задаются значение производных. Если хотябы первая производная в этих точках не будет иметь разрывов, то соединения между отрезками будет плавным.
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Кривая по точкам
«
Ответ #7 :
Июль 25, 2007, 08:32 »
Посмотрел я ссылку... к сожалению, это не то, что надо.
Алгоритм, приведенный там - не работает.
Я пытался построить сплайн всеми способами - но он либо просто соединяет узловые точки прямыми, либо вообще рисует бред.
Вопрос НЕ В РАСЧЕТАХ контрольных, производных и прочих точек. Пусть это останется уделом фанатов. Я ищу РЕАЛЬНО РАБОТАЮЩИЙ алгоритм. Когда на входе задан QVector<QPoint>, И ВСЕ. И рисуется сплайн по данным точкам.
добавлено спустя 7 часов 53 минуты:
Все, вопрос решился небольшой переделкой Qwt.
Всем спасибо.
Если кому интересно - могу выслать класс отрисовки сплайна, отвязанный от Qwt.
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
vaprele07
Гость
Кривая по точкам
«
Ответ #8 :
Июль 25, 2007, 16:16 »
в qt4.1 появился qpainterpathstroker
в демках можно посмотреть реализацию, вроде то что надо
Записан
Sergeich
Гость
Кривая по точкам
«
Ответ #9 :
Июль 25, 2007, 17:10 »
Цитировать
в qt4.1 появился qpainterpathstroker
в демках можно посмотреть реализацию, вроде то что надо
Причем тут QPainterPathStroker!? Он просто рисует кривую в виде прерывивистой линии по заданному паттерну!
добавлено спустя 15 минут:
2 Racheengel: А как оно в QWT рисуется? Хуевой тучей мелких отрезков? Или все-таки через cubicTo() ?
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Кривая по точкам
«
Ответ #10 :
Июль 25, 2007, 17:49 »
В qwt там сначала идет просчет аппроксимирующих отрезков, а потом - через drawLines(). Хуевой тучей
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
vaprele07
Гость
Кривая по точкам
«
Ответ #11 :
Июль 26, 2007, 03:09 »
QGraphicsPathItem?
qpainterpath
? не спорю если речь идёт о qt без QGraphicsScene.
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Кривая по точкам
«
Ответ #12 :
Июль 26, 2007, 11:14 »
2 vaprele07: Каким образом ты собираешься получить плавную кривую без контрольных точек при помощи QPainterPath?
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Alex Forth
Гость
Кривая по точкам
«
Ответ #13 :
Июль 26, 2007, 11:52 »
А что вы тут называете контрольными точками???
ЗЫ: У меня в свое время лабраторные по сплайнам были. Исходники правда не сохранились ( да и кому они нафиг нужны на паскале : ) ), но, помнится, ничего там сложного небыло, и все рисовалось как надо
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Кривая по точкам
«
Ответ #14 :
Июль 26, 2007, 14:23 »
В том то и дело, что это два принципиально разных подхода к построению сплайна: по контрольным точкам и по реальным.
Мне нужно было построение по реальным.
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Страниц: [
1
]
2
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...