Кто знает высшую математику, как задать овал превращающийся в шар и наоборот неправильной формы? Анимация.

5 года назад от Андрей

1 ответ

0 голосов
Должно быть, вы хотели сказать: преобразование сферы в эллипсоид.

Пусть имется система кординат (x, y, z) с центром в точке O.
Уравнение эллипсоида (с центром в O) : (x/A) ^2 + (y/B) ^2 + (z/C) ^2 = 1
Уравнение сферы (с центром в O) : x^2 + y^2 + z^2 = R^2

Если требуется растягивание и сплющивание сферы в одном направлении, например, по оси Oz, то нужен эллипсоид вращения относительно этой оси: A = B.
Если требуется, кроме того, сохранение объёма, то все параметры A, B, C должны зависеть от времени: A (t) , B (t) , C (t) . Имем:
V эллипсоида = V сферы
4п/3*A (t) *B (t) *C (t) = 4п/3*R^3
A (t) *B (t) *C (t) = R^3
A (t) ^2*C (t) = R^3
C (t) = R^3/A (t) ^2

Остаётся задать A (t) . Очевидно, нужна периодическая функция. Для плавных колебаний подходит sin () (или cos () . Когда sin () = 0, должна получаться сфера (то есть A = R, C = R) . А когда sin () = +-1, должно быть A 0, B 0. Сответственно:
A (t) = R* (1 + k*sin (t) , где параметр 0 k 1 определяет насколько сильно должна сплющиваться и растягиваться сфера.
Пусть F = F (t) = 1 + k*sin (t)
Тогда A (t) = R*F (t) , C (t) = R/F (t) ^2

Таким образом, получаем:
 (x/A (t) ^2 + (y/B (t) ^2 + (z/C (t) ^2 = 1
 (x/A (t) ^2 + (y/A (t) ^2 + (z/C (t) ^2 = 1
 (x/ (R*F) ^2 + (y/ (R*F) ^2 + (z/ (R/F^2) ^2 = 1
 (x/F) ^2 + (y/F) ^2 + (z*F^2) ^2 = R^2

В итоге имем:
 (x/F) ^2 + (y/F) ^2 + (z*F^2) ^2 = R^2 - эллипсоид вращения относительно оси Oz с центром в начале кординат, объём которого равен объёму сферы радиуса R
F = F (t) = 1 + k*sin (t) - функция, за счёт которой эллипсоид сплющивается и растягивается
t - время
k - константа такая, что 0 k 1
5 года назад от Элефат Драго

Связанные вопросы