https://www.youtube.com/watch?v=eSadvfg08Zc
Сделал видео еще про L-системы.
Больше L-систем трону L-систем!
Сделал видео еще про L-системы.
Больше L-систем трону L-систем!
YouTube
L-системы: грамматика превращения строк во фракталы
L-системы (системы Линденмайера) - это грамматика преобразования строк, один из классов фракталов и способ создавать сложные структуры с помощью простых и правил. В этом видео я рассказываю, как они устроены и какие есть инструменты, чтобы с ними поиграться…
❤2🔥1
Вспомнил историю из универских времен. Проходил у нас на факультете CTF иб-шный, а было там две кафедры: больше про железо и больше про ПО. Ну и задача была - выключить противнику доступ к сети. На что чел с нашей (железной) кафедры сидел смотрел на соперников, а потом подошел и выдернул сетевой кабель из их компа.
Победу засчитали, но правила обновили и дальше в турнире не пустили)))
Победу засчитали, но правила обновили и дальше в турнире не пустили)))
😁9❤4
Так, у меня переезд. Как перееду расскажу что-нибудь интересное, выбирайте очередность (потом про градиенты расскажу после этих двух):
Anonymous Poll
62%
Сплайны
38%
Цветовые пространства
Наткнулся на классный канал https://www.youtube.com/@PracticalEngineeringChannel
👍4
На новой хате остался от бывших хозяев vhs+dvd проигрыватель - теперь
можно пердолить диски (куча их) и кассеты (нет ни одной - надо на барахолке глянуть) и воспроизводить на основе различных повреждений физически верные глитчи.
Когда делал стилизацию видео в Procreate, у меня был комбик tv+vhs с кучей старых кассет, об которые я зарабатывал мигрень, делая реалистичные эффекты под каждое искажение. Хз, вышло ли оно в релиз - дримс вышел очень сильно урезанным по сравнению с тем, что в него планировали засунуть.
можно пердолить диски (куча их) и кассеты (нет ни одной - надо на барахолке глянуть) и воспроизводить на основе различных повреждений физически верные глитчи.
Когда делал стилизацию видео в Procreate, у меня был комбик tv+vhs с кучей старых кассет, об которые я зарабатывал мигрень, делая реалистичные эффекты под каждое искажение. Хз, вышло ли оно в релиз - дримс вышел очень сильно урезанным по сравнению с тем, что в него планировали засунуть.
❤2
This media is not supported in your browser
VIEW IN TELEGRAM
И коротко о погоде в Тасмании. Как говорится, если вам (не) нравится тут погода, подождите пол часа.
Сейчас приду в себя и напосчу про сплайны (они выиграли)
Сейчас приду в себя и напосчу про сплайны (они выиграли)
😁2
На стиме проходит Automation Fest, где представлена куча игр про автоматизацию и код. Есди вам интересен этот сегмент игр, советую глянуть - там очень много годноты
https://store.steampowered.com/category/automation
https://store.steampowered.com/category/automation
Steampowered
Automation
Steam Store Hub
❤4
Так. Я наконец переехал, хотя дома полнейший бардак. Но, пожалуй, начну про сплайны потихоньку писать.
🎉4
Итак.
Сплайн - это составная гладкая кривая, которая как правило задается параметрически.
Пришло это из черчения гладких кривых, когда деревянную планку изгибали, фиксируя в нужных точках, и она под действием напряжения материала изгибалась определенным образом. Очевидно, что разные материалы будут давать разную кривизну ввиду разницы свойств.
Для черчения используются лекала (они же French curve ruler), которых множество, они стандартизированы и можно найти нужную кривую на нужный случай. Очевидно, там не будет крайних и вырожденных случаев.
Математически тоже есть куча описаний, которые различаются порядком, прохождением кривых через точки (или нет), размерностью (линия, плоскость и тд).
Далее буду рассказывать про некоторые конкретные кривые с примерами в desmos по возможности.
Сплайн - это составная гладкая кривая, которая как правило задается параметрически.
Пришло это из черчения гладких кривых, когда деревянную планку изгибали, фиксируя в нужных точках, и она под действием напряжения материала изгибалась определенным образом. Очевидно, что разные материалы будут давать разную кривизну ввиду разницы свойств.
Для черчения используются лекала (они же French curve ruler), которых множество, они стандартизированы и можно найти нужную кривую на нужный случай. Очевидно, там не будет крайних и вырожденных случаев.
Математически тоже есть куча описаний, которые различаются порядком, прохождением кривых через точки (или нет), размерностью (линия, плоскость и тд).
Далее буду рассказывать про некоторые конкретные кривые с примерами в desmos по возможности.
❤8
Интересный (на мой взгляд) оффтопик про lesbian rule.
Есть гибкая линейка (делалась из свинца и применялась масонами по сути как трафарет для снятия кривизны). Одно из ее названий Lesbian rule (потому что с острова Лесбос и линейка, а не потому что то, что вы подумали).
Так вот с ней связана идиома «bend the rule», что пришло из очевидной икры ослов и имеет ближайшим аналогом «закон что дышло - куда повернул, туда и вышло».
Есть гибкая линейка (делалась из свинца и применялась масонами по сути как трафарет для снятия кривизны). Одно из ее названий Lesbian rule (потому что с острова Лесбос и линейка, а не потому что то, что вы подумали).
Так вот с ней связана идиома «bend the rule», что пришло из очевидной икры ослов и имеет ближайшим аналогом «закон что дышло - куда повернул, туда и вышло».
❤7🍓6
Кривая Безье
Самая распространненная и известная из кривых. Была придумана 60 лет назад ребятами из Рено (Безье) и Ситроен (де Кастельжо) независимо друг от друга (ох уж эти комерческие тайны), при этом является частным случаем многочленов Бернштейна, который описал их более 100 лет назад, но это не важно.
Важно, что кривая может быть (и это важно для ее понимания):
1-й степени
Строится от точки A до точки B как
то есть просто линейная интерполяция между двумя точками
2-й степени
Строится точками A (опорная), B (контрольная) и C (вторая опорная) как
3-й степени
Строится соответственно между 4 точками: ABCD, где AD - опорные, BC - контрольные. Формулы по аналогии сами прикиньте
Очевидны закономерности:
1. порядок на единицу меньше числа точек
2. строим отрезки которые движутся между парами точек, а потом еще раз и так до тех пор, пока не останется последний, по которому движется собственно точка, описывающая нашу кривую. То есть степеней может быть сколько душе угодно.
Собственно все - ничего сложного.
Где применяются Безье:
- вся векторная графика (кроме примитивных примитивов типа квадратиков и кружочков, включая шрифты
- кривые для описания переходов, цветокоррекций, анимаций и прочих нелинейностей, где есть зависимость от параметра
- поверхности (ни разу не работал с ними)
- сглаживания/интерполяция временных данных с множеством параметров
- сами придумайте, куда еще их сунуть - например в градиенты, но о них позже напишу.
https://www.desmos.com/calculator/jfgafx5z6j
Самая распространненная и известная из кривых. Была придумана 60 лет назад ребятами из Рено (Безье) и Ситроен (де Кастельжо) независимо друг от друга (ох уж эти комерческие тайны), при этом является частным случаем многочленов Бернштейна, который описал их более 100 лет назад, но это не важно.
Важно, что кривая может быть (и это важно для ее понимания):
1-й степени
Строится от точки A до точки B как
P = A * (1-t) + B * t
то есть просто линейная интерполяция между двумя точками
2-й степени
Строится точками A (опорная), B (контрольная) и C (вторая опорная) как
D = A * (1-t) + B * t
E = B * (1-t) + C * t
P = D * (1-t) + E * t = (A * (1-t) + B * t) * (1-t) + (B * (1-t) + C * t) * t = A * (1-t)*(1-t) + 2 * B * t * (1-t) + C * t * t
3-й степени
Строится соответственно между 4 точками: ABCD, где AD - опорные, BC - контрольные. Формулы по аналогии сами прикиньте
Очевидны закономерности:
1. порядок на единицу меньше числа точек
2. строим отрезки которые движутся между парами точек, а потом еще раз и так до тех пор, пока не останется последний, по которому движется собственно точка, описывающая нашу кривую. То есть степеней может быть сколько душе угодно.
Собственно все - ничего сложного.
Где применяются Безье:
- вся векторная графика (кроме примитивных примитивов типа квадратиков и кружочков, включая шрифты
- кривые для описания переходов, цветокоррекций, анимаций и прочих нелинейностей, где есть зависимость от параметра
- поверхности (ни разу не работал с ними)
- сглаживания/интерполяция временных данных с множеством параметров
- сами придумайте, куда еще их сунуть - например в градиенты, но о них позже напишу.
https://www.desmos.com/calculator/jfgafx5z6j
Desmos
Bezier explanation
Explore math with our beautiful, free online graphing calculator. Graph functions, plot points, visualize algebraic equations, add sliders, animate graphs, and more.
❤9
Более интересна тема различных задач на этой (да и на лююой другой) кривой
- Поиск значения параметра для заданной точки (для квадратичной и линейной все ясно, для кубической уже сложнее, для 4+ - хардкор)
- Апроксимация набора точек кривой, то есть поиск опорных и контрольных точек для случайного набора точек на плоскости, которые мы хотим описать кривой - есть для этого специальные алгоритмы типа Дугласа-Пекера
- Нормаль и касательная в точке; тут все просто - у нас последний отрезок это и есть касательная - нормализуем ее и готово, повернуть это потом до нормали тоже не рокет сайнс - переставляем координаты и одной из них меняем знак
- Производные (берем по каждой координате отдельно), например, для определения шага параметра в точке (чтоб в пиксель попадать)
- Расстояние до кривой от точки (тут сложнее, потому что может быть несколько решений - зависит от степени)
Что я делал с кривыми Безье
- 2й степени для движка рисования в Pixelmator. Квадратичной вполне хватает для рисования, если кривую не нужно редактировать (если нужно, стандарт - кубическая)
- 3й степени для апроксимации ввода пользователя со стилуса на айпаде, чтобы потом редактировать и хранить всю кучу параметров (позиция, время, наклон, азимут, нажим) для Procreate Dreams; пожалуй, эта была одна из самых интересных задач на тему Безье
- генерация вектора из растра
- рендер кривых Безье на шейдерах: с квадратичной все просто, с кубической все не просто, особенно на крайних случаях, когда кривая вырождается.
Кстати, на тему квадратичной кривой - есть прием, как это почти бесплатно считать на шейдере: делаем текстуру 2х2, по диагонали ставим значения опорных точек, по второй диагонали - контрольной (одинаковые) и двигаемся по первой диагонали между центрами пикселей по параметру t c билинейной интерполяцией - результат сэмплирования даст ответ. Когда сэмплинг был дешевле математики, это неплохо экономило ресурсы, так как использовало внутренние оптимизации видюхи для сэмплинга
- Поиск значения параметра для заданной точки (для квадратичной и линейной все ясно, для кубической уже сложнее, для 4+ - хардкор)
- Апроксимация набора точек кривой, то есть поиск опорных и контрольных точек для случайного набора точек на плоскости, которые мы хотим описать кривой - есть для этого специальные алгоритмы типа Дугласа-Пекера
- Нормаль и касательная в точке; тут все просто - у нас последний отрезок это и есть касательная - нормализуем ее и готово, повернуть это потом до нормали тоже не рокет сайнс - переставляем координаты и одной из них меняем знак
- Производные (берем по каждой координате отдельно), например, для определения шага параметра в точке (чтоб в пиксель попадать)
- Расстояние до кривой от точки (тут сложнее, потому что может быть несколько решений - зависит от степени)
Что я делал с кривыми Безье
- 2й степени для движка рисования в Pixelmator. Квадратичной вполне хватает для рисования, если кривую не нужно редактировать (если нужно, стандарт - кубическая)
- 3й степени для апроксимации ввода пользователя со стилуса на айпаде, чтобы потом редактировать и хранить всю кучу параметров (позиция, время, наклон, азимут, нажим) для Procreate Dreams; пожалуй, эта была одна из самых интересных задач на тему Безье
- генерация вектора из растра
- рендер кривых Безье на шейдерах: с квадратичной все просто, с кубической все не просто, особенно на крайних случаях, когда кривая вырождается.
Кстати, на тему квадратичной кривой - есть прием, как это почти бесплатно считать на шейдере: делаем текстуру 2х2, по диагонали ставим значения опорных точек, по второй диагонали - контрольной (одинаковые) и двигаемся по первой диагонали между центрами пикселей по параметру t c билинейной интерполяцией - результат сэмплирования даст ответ. Когда сэмплинг был дешевле математики, это неплохо экономило ресурсы, так как использовало внутренние оптимизации видюхи для сэмплинга
❤4🔥3
Прогаем с кенгурой
чет меня поперло basic вспомнить…
Кстати для бейсика есть фентези консоль LowRes NX, которую можно даже на телефоне запустить. Хотя если у вас андроид, лучше тик80
https://apps.apple.com/au/app/lowres-nx-coder/id1318884577
https://apps.apple.com/au/app/lowres-nx-coder/id1318884577
Так, ладно, возвращаемся к нашим сплайнам.
B(asis)-Spline
Это более общие сплайны, чем Безье, у них посложнее и поинтереснее математика, но упарываться в нее мы не будем, ибо зачем - в большинстве кейсов вряд ли оно вам понадобиться, а если понадобиться - знаете, в какую сторону копать.
Итак, сразу к практике
Допустим, у нас есть набор точек (A,B,C,D,E,F,G), будем строить сплайн 3 порядка (брать по 4 точки и строить на их основе кубическую Безье). Чтобы сплайн проходил через первую и последнюю точки, нам нужно расширить набор до (A,A,A,B,C,D,E,F,G,G,G). Берем по 4 точки для каждого сегмента: (AAAB, AABC, ABCD, и тд) и из них считаем точки для Безье:
1. берем точку на отрезке между первой и второй, скажем 2/3
2. берем вторую точку на отрезке между второй и третьей на 1/3
3. берем третью на том же отрезке на 2/3
4. берем четвертую между третьей и четвертой на 1/3
5. Середины между (1) - (2) и (3) - (4) будут опорными точками для нашей Безье, а (2) и (3) - контрольными.
Немного запутанно, но с примером, надеюсь, будет понятно - там все по шагам расписано.
Тут используется 1/3 везде, что делает эту кривую однородными/uniform, однако они могут быть и неоднородными/non-uniform - с разными смещениями узлов, что делает их NURBS.
Зачем они нужы
Если Безье это стандарт для векторной графики на тему рисования и около, то NURBS - для CAD и 3D.
Я их использовал только однажды - считать дугу челюсти по предсказанным точкам.
B(asis)-Spline
Это более общие сплайны, чем Безье, у них посложнее и поинтереснее математика, но упарываться в нее мы не будем, ибо зачем - в большинстве кейсов вряд ли оно вам понадобиться, а если понадобиться - знаете, в какую сторону копать.
Итак, сразу к практике
Допустим, у нас есть набор точек (A,B,C,D,E,F,G), будем строить сплайн 3 порядка (брать по 4 точки и строить на их основе кубическую Безье). Чтобы сплайн проходил через первую и последнюю точки, нам нужно расширить набор до (A,A,A,B,C,D,E,F,G,G,G). Берем по 4 точки для каждого сегмента: (AAAB, AABC, ABCD, и тд) и из них считаем точки для Безье:
1. берем точку на отрезке между первой и второй, скажем 2/3
2. берем вторую точку на отрезке между второй и третьей на 1/3
3. берем третью на том же отрезке на 2/3
4. берем четвертую между третьей и четвертой на 1/3
5. Середины между (1) - (2) и (3) - (4) будут опорными точками для нашей Безье, а (2) и (3) - контрольными.
Немного запутанно, но с примером, надеюсь, будет понятно - там все по шагам расписано.
Тут используется 1/3 везде, что делает эту кривую однородными/uniform, однако они могут быть и неоднородными/non-uniform - с разными смещениями узлов, что делает их NURBS.
Зачем они нужы
Если Безье это стандарт для векторной графики на тему рисования и около, то NURBS - для CAD и 3D.
Я их использовал только однажды - считать дугу челюсти по предсказанным точкам.
Desmos
B-Spline
Explore math with our beautiful, free online graphing calculator. Graph functions, plot points, visualize algebraic equations, add sliders, animate graphs, and more.
❤4
Раньше это была река, но она решила свернуть в бухту пораньше и осталось вот это. Там еще какой-то ручеек вроде есть, но по факту это теперь часть бухты.
Сегодня попозже выкачу про сплайн Катмулл-Рома
Сегодня попозже выкачу про сплайн Катмулл-Рома
❤6