Страница 1 из 2
Площадь плоского многоугольника в трёхмерной системе координат
Добавлено: 30 авг 2009, 13:59
E3605
Здравствуйте.
Уверен, что это задача стандартная, но не могу никак найти на неё ответ. Мозг совершенно отказывается что-то придумывать...
Насколько я помню, в плоскости это делается просто - по всем парам соседних точек складываются произведения полусуммы X-ов и разности Y-ков... a вот как быть в пространстве, при условии, что плоскость многоугольника ориентирована произвольным образом? Надо как-то перейти к новой плоской системе координат, и я что-то не пойму как...
И плюс ещё не знаю точно, будет ли это работать для невыпуклого или самопересекающегося многоугольника?
P. S. A если есть какая-нибудь готовая функция в Delphi для этого или в каких-нибудь библиотеках типа OpenGL, было бы вообще шикарно...
Площадь плоского многоугольника в трёхмерной системе координат
Добавлено: 30 авг 2009, 14:13
qazxsw
Разбиваете на треугольники и для каждого из них считаете векторное произведение. Половина модуля вектора - площадь нужного треугольника.
Или что то же самое - считаете площади 3х проекций на плоскости координат, a дальше корень из суммы 3х квадратов
Площадь плоского многоугольника в трёхмерной системе координат
Добавлено: 30 авг 2009, 14:41
ALEX165
del
Площадь плоского многоугольника в трёхмерной системе координат
Добавлено: 30 авг 2009, 20:07
VAL
E3605 писал(а):Source of the post Насколько я помню, в плоскости это делается просто - по всем парам соседних точек складываются произведения полусуммы X-ов и разности Y-ков... a вот как быть в пространстве, при условии, что плоскость многоугольника ориентирована произвольным образом? Надо как-то перейти к новой плоской системе координат, и я что-то не пойму как...
И плюс ещё не знаю точно, будет ли это работать для невыпуклого или самопересекающегося многоугольника?
Полчаса набирал развернутый ответ c длинными формулами и границами их применимости.
A потом случайно прибил
Теперь напишу кратко:
Проектируете многоугольник на координатную плоскость (забываете про одну координату), ищете площадь и делите на косинус угла между исходной плоскостью и плоскостью, на которую спроектировали.
E3605 писал(а):Source of the post И плюс ещё не знаю точно, будет ли это работать для невыпуклого или самопересекающегося многоугольника?
Ладно, наберу еще раз (не все, a сколько осилю).
Для произвольного (не обязательно выпуклого, возможно, имеющего дыры, но не самопересекающегося) многоугольника справедлива такая формула:
, где
- произвольная точка плоскости,
- вершины,
, длины сторон, a
- единичные векторы, направленные вовне многоугольника.
Площадь плоского многоугольника в трёхмерной системе координат
Добавлено: 31 авг 2009, 03:47
qazxsw
VAL писал(а):Source of the post Проектируете многоугольник на координатную плоскость (забываете про одну координату), ищете площадь и делите на косинус угла между исходной плоскостью и плоскостью, на которую спроектировали.
Действительно. Выпало из головы. Вот только если вопрос заключается в написании процедурки для такого, видимо процедурка должна начать c того, что выбрать из этих 3х координатных плоскостей ту, к которой нужная плоскость не стоит боком (чтоб не было деления на 0, которое нам ничего не даст) A поэтому для написания программки я бы все-таки выбрал корень из суммы квадратов проекций
Площадь плоского многоугольника в трёхмерной системе координат
Добавлено: 31 авг 2009, 06:23
VAL
qazxsw писал(а):Source of the post VAL писал(а):Source of the post Проектируете многоугольник на координатную плоскость (забываете про одну координату), ищете площадь и делите на косинус угла между исходной плоскостью и плоскостью, на которую спроектировали.
Действительно. Выпало из головы. Вот только если вопрос заключается в написании процедурки для такого, видимо процедурка должна начать c того, что выбрать из этих 3х координатных плоскостей ту, к которой нужная плоскость не стоит боком (чтоб не было деления на 0, которое нам ничего не даст)
Угу. B посте, который я случайно убил, у меня про это было написано
Впрочем, странник, который задал вопрос, похоже, уже далеко.
Площадь плоского многоугольника в трёхмерной системе координат
Добавлено: 31 авг 2009, 11:02
ALEX165
A чем не нравится #2?
,
где:
- векторы вершин и
, n - число вершин.
Площадь плоского многоугольника в трёхмерной системе координат
Добавлено: 31 авг 2009, 11:26
qazxsw
A он чем-то кроме записи отличается от "посчитать 3 проекции и взять корень из суммы квадратов от них"? Если я правильно понял, то этот S - вектор, a надо площадь те модуль этого вектора. A модуль его как раз корень из суммы квадратов, притом не удивлюсь если значения его компонент будут точно те, что и площади проекций (разве что мб знаки будет иметь, но и площади проекций без знаков будут только после применения модуля)
Площадь плоского многоугольника в трёхмерной системе координат
Добавлено: 31 авг 2009, 11:29
ALEX165
qazxsw писал(а):Source of the post A он чем-то кроме записи отличается от "посчитать 3 проекции и взять корень из суммы квадратов от них"? Если я правильно понял, то этот S - вектор, a надо площадь те модуль этого вектора. A модуль его как раз корень из суммы квадратов, притом не удивлюсь если значения его компонент будут точно те, что и площади проекций (разве что мб знаки будет иметь, но и площади проекций без знаков будут только после применения модуля)
A Вы на палочки модуля не обратили внимания? Присмотритесь, a S - скаляр.
Площадь плоского многоугольника в трёхмерной системе координат
Добавлено: 31 авг 2009, 11:36
qazxsw
Ну да. B таком случае обратите что я писал дальше после того как написал что S -вектор. Применение палочек модуля к вектору - это корень суммы квадратов причем компоненты вектора вероятнее всего уже будут этими площадями. Так что это просто другая запись того же самого и все.
(перевожу: B принципе нравится, но это то же самое)