Итак, пример.
Код:
Эллипсоид вращения.
Пусть образующий эллипс с осями A = 20 (вдоль оси X), B = 10 (вдоль оси Y)
Пусть задана точка T1 = T1 (25,0,0)
И точка Т2 = T2 (-30,1,1)
Необходимо найти длину кратчайшей кривой (саму кривую определять не
обязательно), соединяющую точки Т1 и Т2 с учетом огибания поверхности
вращения.
Не знаю в какую сторону эллипс надо было вращать, потому взял (z/B)^2 последний компонент. На картинке обозначено:
"шарик" - эллипсоид, похож;
"зелёная ниточка" - это куски прямой и огибающая эллипсоида;
"странного вида крестики" - там где они - там точки пересечения прямой и эллипсоида
L - длина огибающей на эллипсоиде;
ну и плоскость - она и в Африке - плоскость.
Ах, да - "мошкара" на картинке - это дефекты (артефакты) реализации implicitplot3d() для Mathcad11.
Предположения (хотелось бы, чтобы так было):
1) Наикратчайшее растояние даст замкнутая (P.S. а хотя кто её знает) геодезическая, которая ползёт по эллипсу, пересекая 2 точки, которые заданы.
2) Тот же эллипс можно получить, если пересечь "шарик" плоскостью.
3) Как же плоскость найти? Я находил численным методом, решая системку. Системка такая: скалярное произведение вектора нормали к поверхности в точке пересечения X1 и нормали искомой плоскости должно равняться нулю, второе уравнение - направляющей вектор прямой скалярно помноженный на нормальный вектор искомой плоскости тоже должен быть равен нулю. Графически это значит, что ... ммм...что же это значит? Честно говоря... сам не понял, но работает.
P.S. Чёрт, всё-таки ошибся. Не, не канает. Буду думать дальше. Плоскость не та получается.
Видимо, придётся всё-таки действовать через длину пространственной кривой.