Доброго часу, Хабр!

Купа часу пройшло з того моменту, як я написав свою першу статтю, і вже майже рік з того моменту, як прийшла в голову ідея для другої. В силу багатьох обставин (в першу чергу – ліні і забудькуватості), ця ідея так і не була реалізована раніше, але зараз я зібрався, написав весь цей матеріал і готовий представити його вашій увазі.

Почну з невеликої вступної. Будучи студентом 4-го, на той момент, курсу бакалаврату, я вивчав курс «Комп'ютерна графіка». Багато там було різних цікавих (і не дуже) завдань, але одне прямо особливо запало мені в душу: інтерполяцію кубічними сплайнами із заданими першими похідними на кінцях інтервалу. Користувач повинен був задавати значення перших похідних, а програма — вважати і виводити на екран интерполяционную криву. Особливість і основна складність завдання полягає в тому, що задаються саме перші похідні, а не другі, як у класичній постановці сплайн-інтерполяції.
Як я її вирішував, і до чого воно в підсумку прийшов, я як раз і викладу в цій статті. І так, якщо за описом завдання ви не зрозуміли ні в чому її сенс, ні в чому складність, не переживайте, все це я також постараюся розкрити. Отже, поїхали.

А, ні, стривайте один момент. Ось вам два числових ряду:
a) 2, 4, 6, 8, ?
b) 1, 3, ?, 7, 9

Які числа повинні стояти на місці питань і чому? Ви дійсно впевнені у своїй відповіді?

Читати далі →

Створення цікавих і привабливих анімацій простими функціями Spine (всередині важкі gif)



(Прим. пер.: 1. Spine — це патентований багатоплатформовий пакет для створення двовимірних скелетних анімацій з підтримкою різних ігрових тулкитов.
2. Обережно, в пості є близько 38 МБ gif'ок, всі вони заховані під кат.)


Як створити плавне перемикання або поворот спрайтів?
Створення плавного і природного перемикання і поворот спрайтів при роботі з Spine або будь-яким іншим інструментом інтерполяції анімації часто буває важким завданням. Воно може розвалити порядок анімації і зробити остаточний результат дергающимся або незграбним.

Я зазвичай використовую наступний підхід: маскирую момент повороту або перемикання з допомогою деформацій, наприклад, додаю ефект пружності до анімації протягом ключових кадрів (збільшуючи і зменшуючи масштаб спрайту), коли виконується поворот ассета або перемикається спрайт.

Читати далі →

Інтерполяція замкнутих кривих

Всім привіт! Нещодавно виникла практична необхідність використовувати інтерполяцію для замкнутих кривих. Проект розроблявся під .Net C#, а готових реалізацій алгоритму я не виявив, втім, як і для інших мов і технологій. В результаті довелося самому вивчити мат.частина існуючих методів і написати свою бібліотеку. Напрацюваннями і готовим рішенням готовий поділитися з вами.



Читати далі →

Подання рухів у 3D моделюванні: інтерполяція, апроксимація та алгебри

У цій статті мені б хотілося розповісти про один цікавий математичному прийомі, який будучи вельми цікавим і корисним мало відомий широкому колу людей, що займаються комп'ютерною графікою.

Скільки існує різних способів представити звичайний поворот у тривимірному просторі? Більшість людей, коли-небудь займалися 3D-графікою, 3D-моделюванням, відразу назвуть три основних широко поширених варіанти:

  • Матриця повороту 3x3;
  • Завдання повороту через кути Ейлера;
  • Кватерніони.
Люди з багатим досвідом додадуть сюди чомусь не користується популярністю четвертий пункт:
  • Вісь повороту і кут.
Мені б хотілося розповісти про п'ятому способі подання обертань, який симпатичний тим, що зручний для параметризації, дозволяє ефективно будувати поліноміальні наближення цих параметризаций, проводити сферичну інтерполяцію, і головне, універсальний — з мінімальними змінами він працює для будь-яких видів рухів. Якщо вам коли-небудь був потрібен метод, який дозволяв би легко зробити «аналог slerp, але не для чистих обертань, а для довільних рухів, та ще й з масштабуванням», то читайте цю статтю.
Читати далі →

Інтерполяція даних: з'єднуємо точки так, щоб було красиво

Як побудувати графік за n точках? Найпростіше — відзначити їх маркерами на координатній сітці. Проте для наочності їх хочеться з'єднати, щоб отримати легко читану лінію. З'єднувати точки найпростіше відрізками прямих. Але графік-ламана читається досить важко: погляд чіпляється за кути, а не ковзає вздовж лінії. Та й виглядають злами не дуже красиво. Виходить, що крім ламаних потрібно вміти будувати і криві. Однак тут треба бути обережним, щоб не вийшло ось такого:


Читати далі →

Інтерполяція формули Ньютона

Інтерполяція застосовується в багатьох задачах, пов'язаних з обчисленнями. Вкажемо деякі з цих завдань. Обробка фізичного експерименту — побудова наближених формул за даними обчислювального експерименту. Тут виникають нестандартні задачі інтерполяції, так як зазвичай пишуться формули, можливо, більш простої структури.

Інтерполяційні формули використовуються також при обчисленні інтегралів, при написанні різницевих апроксимацій для диференціальних рівнянь, на основі інтегральних тотожностей.
Часто потрібно відновити функцію f(x) на відрізку a ≤ x ≤ b, якщо відомі її значення в деякому кінцевому числі точок цього відрізка.


Читати далі →

Огляд деяких різнопланових віртуальних приладів середовища LabVIEW в допомогу розробнику (з вихідними кодами)

    image
 
Добрий день, всім!
За останні роки роботи в середовищі LabVIEW доводилося мати справу з різними завданнями, вирішення яких випливало у створення простих і не дуже простих віртуальних приладів (ВП). Спеціалізація моєї роботи — це проектування різних алгоритмів для аналізу біомедичних сигналів. І як у будь-якого розробника за кілька років у мене накопичилася велика кількість коду різної складності. Для всіх віртуальних приладів, які з тієї чи іншої причини мені шкода було видаляти, я створив папку, куди і зберігав все. У даній статті мені хотілося б привести деяку вибірки з мого LabVIEW-портфоліо.
Вибірка має достатньо еклектичний характер, і багато приладів досвідчені розробники можуть відтворити самі за кілька хвилин. Тому, гадаю дана стаття може стане в нагоді в основному для початківців LabVIEW-розробників. Більшість представленого коду можна так чи інакше знайти на LabVIEW — форумах або в екземплах середовища. Исходники докладаю в кінці статті (версія 9.0).
На початку хотілося б привести пару ВП, які відносяться до розряду дуже простих, але можливо комусь необхідних.
 
Читати далі →

Ідентифікація швидких термічних процесів

  Нещодавно мені вдалося завершити частину роботи з дуже цікавого проекту в ФТІ ім. Йоффе і отримати достатню кількість експериментальних даних, для того щоб поділитися з Вами.
Фізики з СПб ФТІ ім. Йоффе займаються вирощуванням нітрид галієвих напівпровідникових структур, які володіють непоганими показниками швидкості носіїв заряду при переході і великим коефіцієнтом теплопровідності. Процес зростання такої структури проходить при температурі 1000 С (1273 К) і атмосферному тиску. Все відбувається в спеціальній камері, що знаходиться в герметичній зоні. При вирощуванні структури весь обсяг реактора і герметичною зони заповнюється азотом. У процесі росту структури подложкодержатель обертається з частотою один раз на секунду. Такі операції відносяться до швидких термічним процесам, швидкість зміни температури в яких варіюється від декількох одиниць до сотень градусів в секунду.
 
Моїм завданням було управління температурою графітового подложкодержателя за допомогою індуктивного нагріву.
Технічні характеристики установки виглядають наступним чином. Для вимірювання температури використовується лазерний пірометр, що знімає дані в центрі графіту. Частота знімання інформації 10 разів на секунду, крок вимірювання 1 градус. Значення потужності переданої графіту покладається прямо пропорційним потужності на індукторі. У генератора керуючого індуктором є цифровий вихід, по якому передається напруга, струм і потужність.
 
Читати далі →