Статистика релізу
Нові симуляції
Криві Без'є
Перетягуйте контрольні точки, щоб побудувати криві Без'є ступеня 1–5 за алгоритмом Де Кастельжо. Анімуйте рекурсивну побудову й порівнюйте з B-сплайном.
Відкрити симуляцію →Ефект Холла
Спостерігайте, як 40 анімованих носіїв заряду відхиляються під дією сили Лоренца. Перемикайте n-тип / p-тип, регулюйте струм і магнітне поле та зчитуйте VH = IB/(nqd) у реальному часі.
Відкрити симуляцію →Ланцюгова лінія
Перетягуйте точки кріплення й спостерігайте, як точна форма висячого ланцюга y = a⋅cosh(x/a) миттєво оновлюється. Накладіть параболу й дослідіть вектори натягу вздовж кабелю.
Відкрити симуляцію →Криві Без'є
Криві Без'є — це основа векторної графіки, рендерингу шрифтів, траєкторій анімації та САПР-проєктування. На відміну від інтерполяційних сплайнів, що проходять через кожну контрольну точку, крива Без'є визначається опуклою оболонкою своїх контрольних точок і проходить лише через першу й останню. Крива Без'є ступеня-n — це поліном ступеня n за параметром t ∈ [0, 1].
Алгоритм Де Кастельжо обчислює цей поліном геометрично: на кожному рівні рекурсії послідовні пари точок лінійно інтерполюються при поточному t. Для кубічної кривої (ступінь 3) із чотирма контрольними точками P0–P3 три раунди лінійної інтерполяції дають одну точку на кривій. Симулятор малює кожен проміжний полігон окремим кольором, тож можна прослідкувати, як саме будується кінцева точка кривої.
Технічні деталі
-
Рекурсивний Де Кастельжо через
deCasteljau(pts, t), що повертає масив проміжних точок на кожному рівні, відображений за кольоровою картою для кожного рівня. - Порівняння з B-сплайном використовує алгоритм Кокса–де Бура з рівномірним затиснутим вузловим вектором, намальованим як пунктирне накладення.
-
Pointer API для перетягування:
pointerdown/pointermove/pointerupзsetPointerCaptureдля надійного введення на різних пристроях. - Режим анімації збільшує t на 0.003 за кадр (60 fps), зациклюючись 0→1→0 з плавним відскоком.
Ефект Холла
Коли провідник зі струмом розміщений у магнітному полі, перпендикулярному до струму, носії заряду відхиляються вбік під дією сили Лоренца F = qv×B. Це створює поперечне електричне поле, яке зростає, доки електростатична сила точно не врівноважить магнітне відхилення. Отримана поперечна напруга і є напругою Холла:
VH = IB / (nqd)
де n — концентрація носіїв, q — заряд носія, а d — товщина провідника. Знак VH залежить від типу носія: електрони (n-тип) відхиляються протилежно до дірок (p-тип), тож полярність напруги Холла безпосередньо вказує на домінантний тип носіїв. Це основа датчиків Холла, які використовуються всюди — від контролерів бесколекторних двигунів до безконтактних енкодерів положення й компасів у смартфонах.
Деталі симуляції
-
40 частинок ініціалізуються у випадкових позиціях. Щокадру
дрейфова швидкість
v_d = I / (n · q · A)(A = переріз провідника) переміщує кожен носій вздовж осі струму. -
Поперечне зміщення Лоренца зростає як
Δy = q · v_d · B · dt / m, обмежене насиченням (що представляє наростання поля Холла). - Носії n-типу (електрони, сині, –q) відхиляються протилежно до дірок p-типу (червоні, +q), відповідно до експериментальних конвенцій знаків.
- Фонове магнітне поле візуалізується як сітка символів ⊙ (у площину) або ⊗ (з площини), яка оновлюється, коли B = 0 (вимкнено).
Ланцюгова лінія
Галілей стверджував, що форма висячого ланцюга — парабола. У 1691 році Лейбніц, Гюйгенс і Йоганн Бернуллі незалежно вивели правильну відповідь: гіперболічний косинус, який тепер називають ланцюговою лінією (від латинського catena, ланцюг). Рівняння — y = a⋅cosh(x/a), де параметр a = T0/(wg) кодує співвідношення горизонтального натягу до ваги на одиницю довжини.
Симулятор приймає дві точки кріплення на довільній висоті й числово розв'язує a. При заданому горизонтальному прольоті d і бажаній довжині дуги L обмеження таке:
2a · sinh(d / (2a)) = L
Це трансцендентне рівняння не має аналітичного розв'язку, тож симулятор виконує до 80 ітерацій методу Ньютона, доки |Δa| < 10−6. Отримане a зазвичай сходиться за 15–25 ітерацій.
Технічні деталі
-
Ланцюгова лінія семплюється у N = 300
рівновіддалених значеннях x через
a · cosh((x − cx) / a) + C, де cx — середня точка, а C — вертикальне зміщення. -
Накладена парабола використовує ту саму глибину провисання, що й
ланцюгова лінія, але апроксимована квадратичною функцією
A(x − cx)² + apex, що робить різницю візуально очевидною поблизу кріплень. -
Вектори натягу масштабуються пропорційно
T(x) = wa · cosh(x/a), показуючи, що натяг мінімальний у найнижчій точці й зростає в напрямку опор. - Повзунок «Щільність» фактично масштабує L відносно прольоту кріплень, керуючи глибиною провисання без переміщення анкерів.
Технічні примітки
Усі три симуляції — це HTML5/Canvas 2D файли без жодних
залежностей. Рекурсія Де Кастельжо обчислюється щокадру
анімації без попереднього кешування, що зберігає простоту коду,
залишаючись у межах бюджету кадру 16 мс для кривих аж до
ступеня 5. Симуляція ефекту Холла використовує цикл частинок
O(n) (40 частинок), що оновлюється через
requestAnimationFrame. Розв'язувач Ньютона для
ланцюгової лінії працює детерміновано у виклику
draw(), завершуючись менш ніж за 0.1 мс.
Теги
Комп'ютерна графіка Криві Без'є Де Кастельжо B-сплайн Параметричні криві Ефект Холла Сила Лоренца Напівпровідник Напруга Холла Електромагнетизм Ланцюгова лінія Висячий ланцюг Гіперболічний косинус Метод Ньютона Хвиля 40