Цитата(Vokchap @ Dec 21 2008, 01:26)

Оптимально конечно точными выражениями описать.
Самурай, по вашему рецепту хороший результат получается, как бы еще немного подогнуть вертикальные и радиальные сегменты у витка по направлению обхода, чтобы спираль была более плавная при малых радиусах на углах? Посоветуйте что ещё попробовать, пожалуйста.

Математически точное уравнение тора, которое позволило бы однозначно и независимо задавать как скругление профиля, так и углы радиальных и вертикальных сегментов витка, мне пока, к сожалению, получить не удалось, на волшебника я только учусь

.
На самом деле, если в том методе что я предложил выше управлять степенью "арктангенциальности" по оси z независимо от осей x и y, то результат немного улучшается

.
Но наверно лучший вариант - это использовать разложение уравнений профиля тора в ряд Фурье. Только я использовал не меандр, а трапециидальную функцию по всем трем координатам. Осцилляции в точках разрыва в какой-то мере удается подавить, используя оконную функцию Хэмминга. Недостаток метода в том, что нет (или я не увидел) четкой взаимосвязи между количеством членов разложения и степени "трапециидальности" с получающимся результатом, все приходиться подбирать на "глаз"

. И, к сожалению, отсутствует возможность плавного регулирования углов сегментов витка, т.е. или строго радиальные по координате x(y), или вертикальные по координате z

.
Я прикрепил простенький скрипт для MatLabа и некоторое образцы тора для разных параметров.
Число членов разложения: 5,
коэф. задающие "трапециидальность" по осям x и y: pi/3, по оси z: pi/3
Число членов разложения: 15,
коэф. задающие "трапециидальность" по осям x и y: pi/3, по оси z: pi/3
Число членов разложения: 15,
коэф. задающие "трапециидальность" по осям x и y: pi/4, по оси z: pi/3
Число членов разложения: 15,
коэф. задающие "трапециидальность" по осям x и y: pi/6, по оси z: pi/3
Число членов разложения: 15,
коэф. задающие "трапециидальность" по осям x и y: pi/10, по оси z: pi/3
Число членов разложения: 15,
коэф. задающие "трапециидальность" по осям x и y: pi/25, по оси z: pi/2.5
Матлабовский скрипт
tor_draw_2.zip ( 659 байт )
Кол-во скачиваний: 103