Определение средней линии развала

Товарищи-программисты,

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

alt text alt text

Это профиль / профиль. Обычно профили определяются с двумя наборами данных. Один из них - это положение средней линии изгиба, представленной в виде x, y, где x обычно указывается в процентах от длины хорды. Второй набор данных - это толщина в процентах от длины хорды. Толщина всегда рисуется перпендикулярно линии развала (!), И это дает точки профиля.

Теперь у меня обратная проблема - у меня есть точки профиля, и мне нужно определить положение линии развала. Метод интерполяции по точкам может быть разным, но это не имеет значения, так как я всегда могу интерполировать столько точек, сколько мне нужно, так что в конце концов получается линейный.

Помните, поскольку мышление нарисовано перпендикулярно изгибу. линия, положение линии развала не является средним между точками верхней и нижней линии профиля (называемых задней и лицевой стороной профиля).


Правка (как это делается на бумаге): Ухх, болезненно и в большом масштабе (здесь я говорю о длинной бумаге формата A0, это 1189x5945 мм на большом чертежном столе. Вы начинаете с рисования первой линии изгиба (CL) итерация по средним точкам (средним точкам) между точками лица и спины с одинаковыми ординатами x. После этого вы рисуете множество перпендикулярных линий, перпендикулярных этой CL, и находите их средние точки между лицом и спиной (эти точки на лицо и спина больше не будут иметь одинаковые значения x). Соедините их, и это ваша вторая итерация CL. После этого вы просто повторяете второй шаг процедуры, рисуя перпендикулярные линии на этом втором CL ... (обычно он сходится после 3 или 4 итерации).


2-е изменение: Картинка заменена на картинку, которая лучше показывает, как мышление «нарисовано» на линии развала (CL). Другой способ представить это, как на картинке № 2. Если вы нарисовали много кругов, центральные точки которых находятся на линии изгиба, а радиусы которых были величиной толщины, то касательные к этим кругам были бы линиями (составляющими кривую) профиля.

линия изгиба не является средней линией (средней между точками лица и спины); он может совпадать с ним (поэтому обычно путаница). Эту разницу легко увидеть в более изогнутых профилях (более изогнутых).


3-е редактирование - чтобы наглядно проиллюстрировать разницу (извините, мне потребовалось столько времени, чтобы нарисовать ее) между средней линией и линией изгиба, вот процесс как это обычно делается «на бумаге». Это довольно деформированный профиль по той причине, что разницу между ними легче показать (хотя такие профили также существуют).

На этом рисунке показана средняя линия - это линия, образованная средние значения лица и спины в одних и тех же координатах X.

alt text

На этом рисунке на средней линии проведены перпендикулярные линии (зеленые). Середины этих перпендикулярных линий составляют первую итерацию линии изгиба (красная прерывистая линия). Посмотрите, как эти круги лучше вписываются в профиль по сравнению с первым изображением.

alt text

На рисунке ниже показана вторая итерация линии изгиба вместе со средней линией из первого изображения, чтобы проиллюстрировать разницу между ними. Эти круги теперь даже лучше вписываются внутрь (кроме первого, который вылетел, но не обращайте на него внимания). pylab.plot (x) pylab.figure () pylab.plot (y) # ... для i, число в перечислении (pylab.MagicFunctionReturnsListOfAllFigures ()): figure.savefig ('figure% d.png'% i) Что ...

Я хотел бы:

pylab.figure()
pylab.plot(x)
pylab.figure()
pylab.plot(y)
# ...
for i, figure in enumerate(pylab.MagicFunctionReturnsListOfAllFigures()):
  figure.savefig('figure%d.png' % i)

Какая волшебная функция возвращает список текущих цифр в pylab?

Веб-поиск не помог ...

43
задан Evgeny 27 September 2010 в 20:51
поделиться