Линия Вивиани
В этом примере линия целиком лежит на одной сфере,
которая поэтому является соприкасающейся сферой во всех точках линии.
Радиус по умолчанию равен 2,
чтобы уменьшить размер стрелок.
Общие процедуры в начале кода пригодны для любых линий,
но там нет защиты от деления на нуль в точке распрямления или уплощения.
1. Пересечение поверхностей
Стандартный способ задания линии Вивиани использует сферу и круговой цилиндр.
Тут добавлены нестандартные,
причём появление зонтика Уитни оказалось для меня приятной неожиданностью.
2. Соприкасающаяся окружность и ось кривизны
Ползунок меняет значение параметра, можно пробежать вдоль всей линии.
Траектория оси кривизны принесла второй сюрприз:
одна из проекций похожа на нефроиду.