Определение средней линии развала - PullRequest
8 голосов
/ 24 сентября 2010

Программисты,

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

alt text alt text

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

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

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


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


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

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


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

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

alt text

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

alt text

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

alt text

Ответы [ 4 ]

4 голосов
/ 24 сентября 2010

Из того, что я могу извлечь из вашей диаграммы, линия развала определяется как линия, касательная которой делит пополам угол между двумя касательными верхнего и нижнего краев.

Другими словами, ваш изгиблиния всегда является средней точкой между двумя ребрами, но вдоль линии кратчайшего расстояния между верхним и нижним краями.

Итак, учитывая y-координаты y=top(x) и y=bot(x), почему бы неВы:

<pseudocode>
for each x:
  find x2 where top(x)-bot(x2) is minimized
  camber( mean(x,x2) ) = mean( top(x),bot(x2) )
</pseudocode>

, а затем интерполируете и т. д .?

alt text

edit

Извините!При второй мысли я думаю, что это должно быть

  find x2 where ( (top(x)-bot(x2))^2 + (x-x2)^2 ) is minimised

, очевидно, вы должны минимизировать длину этой перпендикулярной линии.

Это верно?

3 голосов
/ 28 декабря 2012

Я новичок в переполнении стека, но над этой проблемой я немного поработал и подумал, что опубликую альтернативный подход к проблеме.Этот подход использует концепцию диаграммы Вороного: http://en.wikipedia.org/wiki/Voronoi_diagram По сути, создается карта, которая делит пространство на области, содержащие одну из входных точек (x, y вашего аэродинамического профиля).Важной частью здесь является то, что любая точка в пределах региона является ближайшей к входной точке в этом регионе.Узлы, созданные этим пространственным делением, равноудалены как минимум от трех входных точек.

Вот интересная часть: три равноотстоящие точки от центральной точки могут использоваться для создания круга.Как вы упомянули, центральные точки вписанной окружности используются, чтобы нарисовать среднюю линию развала, потому что вписанная окружность измеряет толщину.

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

Базовая структура:

Create Voronoi Diagram
Extract Voronoi Nodes
Determine Nodes Which Lie Within Airfoil
Construct Mean Camber Line From Interior Nodes

Большая часть моей работы посвящена Matlab, в которую встроены функции voronoi и inpolygon.Таким образом, я не очень помог в разработке этих функций, но они должны быть хорошо задокументированы в других местах.

Проблемы с трейлингом / передним краем

Как я уверен, вы уже испытали или знаететрудно измерить толщину в непосредственной близости от LE / TE.Этот подход создаст вилку в узлах, когда толщина круга меньше, чем радиус края.Проверка данных для этой вилки найдет точки, которые являются ложными для линии развала.Чтобы построить линию развала до самого края фольги, вы можете экстраполировать линию развала (2-й или 3-й порядок должны подойти) и найти пересечение.

2 голосов
/ 02 апреля 2014

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

1 голос
/ 24 сентября 2010

Является ли средняя линия развала набором точек, равноудаленных от верхней линии и нижней линии?Если это определение, оно отличается от определения Санджея или, по крайней мере, не очевидно для меня.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...