Как стать автором
Обновить

Рисуем многочлен Бернштейна для произвольного числа опорных точек

Время на прочтение 1 мин
Количество просмотров 3.8K
.NET *
Так собственно выглядит рабочая область:


Можно указать количество точек(от 2 до 13), и перетаскивать любую опорную точку наблюдая в реальном времени как меняется кривая.
Сделано для себя, с целью разобраться с кривыми разного порядка.
Базовые знания почерпнуты отсюда:

Многочлен_Бернштейна
Биномиальный_коэффициент

Можно также почитать про кривую Безье, которая является частным случаем многочлена Бернштейна.

Исходники прилагаются, в архиве также скомпиленный(Win_X86) exe'шник.

Архив с исходниками и exe'шником.
Зеркало
Доработка от Vordigont

Класс реализующий многочлен откомментирован, разобраться проблемы не будет. Код на шарпе.
Всего голосов 73: ↑46 и ↓27 +19
Комментарии 36

Simplify.js — JavaScript-библиотека для упрощения ломаных линий

Время на прочтение 2 мин
Количество просмотров 9.7K
JavaScript *Математика *
Рад представить вашему вниманию еще одну крохотную, но полезную open-source-утилиту своего авторства — Simplify.js.



Simplify.js — очень быстрая реализация упрощения ломаных линий на JavaScript. Изначально написав ее для Leaflet (библиотеки для интерактивных карт), после небольшого эксперимента по оптимизации захотелось выпустить ее в качестве отдельной библиотеки без зависимостей, которую можно использовать как в браузере, так и на серверных платформах, таких, как Node.js, и применять и для 2D, и для 3D-точек.

Подобное упрощение позволяет на несколько порядков уменьшить количество точек в ломаной линии (например, представляющей длинный маршрут на карте или график), при этом максимально сохранив ее очертания (с заданной точностью). Соответственно резко уменьшается занимаемый линией размер памяти и время, требуемое для ее обработки.

Читать дальше →
Всего голосов 134: ↑129 и ↓5 +124
Комментарии 57

Аппроксимация кривой в траекторию стрелы для игры St.Val

Время на прочтение 6 мин
Количество просмотров 14K
Разработка игр *
В этом посте я расскажу, как создать в мобильном приложении управление c помощью рисования траектории. Такое управление используется в Harbor Master и FlightControl: игрок пальцем рисует линию, по которой движутся корабли и самолеты. Для моей игры St.Val потребовалась аналогичная механика. Как я её делал и с чем пришлось столкнуться — читайте ниже.



Пара слов об игре. В St.Val основная цель соединять сердца по цвету с помощью стрел. Задача игрока: построить траекторию полета стрелы так, чтобы она соединяла сердца в полете. Игра создавалась на базе Cocos2D 2.1 под iOS, ниже видео игровой механики.



Основные задачи


Для создания управления нужно решить три задачи:
  1. Считать координаты
  2. Сгладить и аппроксимировать их
  3. Запустить по ним стрелу


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

Под катом решение этих задач и ссылка на демонстрационный проект.

Читать дальше →
Всего голосов 26: ↑21 и ↓5 +16
Комментарии 3

Гильоши

Время на прочтение 11 мин
Количество просмотров 39K
Алгоритмы *Математика *
Гильоши — это характерные узоры на деньгах и ценных бумагах. Они красивы, и сочетают в себе одновременно заметную сложность с внутренней простотой — когда кажется, что ты вот-вот уловишь принцип, но он каждый раз от тебя ускользает. Возможно, именно это и есть определение красоты.
Читать дальше →
Всего голосов 123: ↑123 и ↓0 +123
Комментарии 56

Гильоши другим манером

Время на прочтение 5 мин
Количество просмотров 3.5K
Работа с векторной графикой *Алгоритмы *Графический дизайн *
Гильоши — это характерные узоры на бумажных деньгах и других ценных бумагах. Подробный рассказ о них с отступлением в историю можно найти в предыдущей статье. Там же приводился и алгоритм рисования, строящий гильоши по точкам.

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

Поэтому пришло время подумать о другом алгоритме — который давал бы сразу вектора. Поскольку в распространенных редакторах для кривых линий предлагается только интерполяция кривыми Безье, на них и будем ориентироваться.
Читать дальше →
Всего голосов 18: ↑18 и ↓0 +18
Комментарии 2

Равномерное перемещение объекта вдоль кривой

Время на прочтение 6 мин
Количество просмотров 15K
Разработка игр *Алгоритмы *C# *Математика *Unity *
🔥 Технотекст 2020


В процессе разработки игры в совершенно различных жанровых категориях может возникнуть потребность «запустить» какой-либо игровой объект вдоль гладкой кривой с постоянной или контролируемой скоростью, будь то грузовик, следующий из города А в город Б, выпущенная по хитрой траектории ракета, или самолет противника, выполняющий заложенный манёвр.

Наверное, каждый имеющий отношение к теме знает или, по крайней мере, слышал, про кривые Безье, B-сплайны, сплайны Эрмита и прочие интерполяционные и сглаживающие сплайны и совершенно правильно предложил бы использовать в описанной ситуации один из них, но не всё так просто, как хотелось бы.
Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 18

Циркулярные кривые 2-го порядка

Время на прочтение 4 мин
Количество просмотров 8K
Работа с векторной графикой *Алгоритмы *Математика *
Как известно, кривыми Безье нельзя построить дугу окружности или эллипса. В этой статье рассматриваются кривые, лишённые такого недостатка.


Дальше будут картинки и анимации
Всего голосов 26: ↑26 и ↓0 +26
Комментарии 7

Функциональные кривые высокого качества (часть I)

Время на прочтение 7 мин
Количество просмотров 3.2K
Математика *

Если вы когда-либо задавались вопросом, как смоделировать плавную кривую или поверхность, не запутавшись при этом в многообразии сложных геометрических терминов, то вы попали на нужную страницу.

Тем не менее, дабы не спугнуть любознательного читателя в первую секунду чтения статьи, заранее отвечаем на часто возникающий вопрос, а почему собственно «так сложно-то».

В этой статье мы рассказываем о том, как геометрическое ядро C3D училось рисовать гладкие кривые высокого качества. Все бы ничего, но строить такие кривые – дело сложное и вообще математическое. Поэтому для описания возможностей функционала не обойтись без высшей математики, которая по определению не может быть простой. Для упрощения понимания той самой математики в статье есть примеры.

В чем сложность подхода моделирования гладких кривых и как его реализовать, рассказывает Валериян Муфтеев, ведущий математик-программист в C3D Labs.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 0

Функциональные кривые высокого качества (часть II)

Время на прочтение 6 мин
Количество просмотров 1.3K
Математика *

Продолжение цикла статей, посвященных новому типу кривых и поверхностей.

В этой части описывается реализация методов F-кривых в C3D Modeler.

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

В третьей части будут приведены примеры практического применения C3D FairCurveModeler при моделировании различных изделий.

Читать далее
Рейтинг 0
Комментарии 0

Функциональные кривые высокого качества (часть III)

Время на прочтение 4 мин
Количество просмотров 1.1K
Математика *

Заключительная часть цикла статей, посвященных новому типу кривых и поверхностей, разработанному в компании C3D Labs в качестве нового функционала поверхностного моделирования для геометрического ядра C3D Modeler.

В этой части приводятся примеры практического применения C3D FairCurveModeler при моделировании различных изделий.

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

Во второй части описана реализация методов F-кривых в C3D Modeler.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 0

Как понять ROC-кривые с помощью Python

Время на прочтение 4 мин
Количество просмотров 16K
Блог компании Нетология Python *Программирование *Машинное обучение *
Перевод

Если вы погуглите ROC curve machine learning, то Википедия выдаст вам такой ответ: Кривая рабочих характеристик приёмника, или ROC-кривая, представляет собой график функции, который иллюстрирует диагностические возможности системы двоичного классификатора при изменении её порога распознавания.

Ещё одно частое описание ROC-кривой: ROC-кривая отражает чувствительность модели к разным порогам классификации. Новичков эти определения могут сбить с толку. Попробуем разобраться и развить представление о ROC-кривых.

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 0

Сравниваем кривые линии по форме

Время на прочтение 6 мин
Количество просмотров 3.7K
Разработка игр *Алгоритмы *Разработка под Android *Kotlin *

Привет, Хабр!

Не так давно писал гиперказуальную игру с примитивной механикой, а именно: максимально быстро и точно повторить кривую линию. Идея максимально простая, но задача сравнения двух кривых оказалась довольно интересной. В этой статье я опишу разные идеи, которые рассматривал (в основном провальные) и конечный вариант, к которому я пришел.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 3

Кривые и что это такое

Время на прочтение 5 мин
Количество просмотров 4.2K
Программирование *Алгоритмы *C# *Математика *

Всем привет!
Итак, тема статьи - кривые, их разбор, собственные примеры и как их можно использовать в геймдев.

Читать далее
Всего голосов 6: ↑4 и ↓2 +2
Комментарии 6

Кривые и что это такое ч.2

Время на прочтение 6 мин
Количество просмотров 3.3K
Программирование *Алгоритмы *C# *Математика *Unity *

Всем привет!

Итак, это продолжение предыдущей статьи с той же темой - кривые, их разбор.

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

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 2

Кривые и что это такое ч.3

Время на прочтение 6 мин
Количество просмотров 1.9K
Программирование *Алгоритмы *C# *Математика *

Всем привет!
Как и понятное по заголовку, это продолжение предыдущей статьи с той же темой, но теперь мы будем рассматривать аппроксимационные кривые.

Читать далее
Рейтинг 0
Комментарии 0

Кривые в компьютерной графике. Урок 1: Анимации

Время на прочтение 6 мин
Количество просмотров 5.9K
Блог компании UNIGINE Разработка игр *Алгоритмы *Математика *Компьютерная анимация *
Туториал

Мы продолжаем цикл статей про математику и смежные дисциплины в компьютерной графике по курсу Александра Паничева, ведущего разработчика логики в UNIGINE. В этот раз поговорим о функциях плавности, которые используются в анимации (и не только).

Читать далее
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 5

Какая ты кривая, или математика вокруг нас

Уровень сложности Простой
Время на прочтение 15 мин
Количество просмотров 13K
Математика *Научно-популярное
Из песочницы

Слово «математика» у кого-то ассоциируется с вечной зубрёжкой и строгим учителем, другие же представляют себе некоторую абстракцию, существующую отдельно от нашего мира, но есть и те, кто видит проявления этой науки в нашей повседневной жизни.

Читать далее
Всего голосов 89: ↑89 и ↓0 +89
Комментарии 37