Консультация № 186880
29.11.2012, 00:10
96.03 руб.
0 6 0
Здравствуйте, уважаемые эксперты! Прошу вас помочь решить следующую задачу (с комментариями проделанного):
Дано множество точек в пространстве. Получить уравнение плоскости, содержащей максимальное количество точек данного множества и найти многоугольник минимальной площади, содержащий все эти точки.

Обсуждение

Неизвестный
29.11.2012, 00:16
общий
пишу в visual studio 2012
Неизвестный
01.12.2012, 15:13
общий
Объем работы оцениваю в 10-15 часов. Сделаю эту работу, если мой оклад составит не менее 120 руб./час
давно
Мастер-Эксперт
17387
18345
01.12.2012, 17:47
общий
01.12.2012, 17:53
Здравствуйте!

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

Кроме того, неуместно в ответе затрагивать вопросы, связанные со стоимостью консультации. Для этого можно воспользоваться мини-форумом.

И обращаться к посетителю на "ты" - как минимум, невежливо...

Прошу Вас иметь это в виду.

С уважением.
Об авторе:
Facta loquuntur.
Неизвестный
01.12.2012, 18:12
общий
Адресаты:
Суть ответа не в математике, а в алгоритме решения задачи, пусть на человеческом языке, а не на алгоритмическом, это не важно. Я уверен, что поняв суть задачи и разбив ее на более мелкие части, автору удастся самостоятельно решить ее. Конечно я делал это из благих побуждений.

По поводу стоимости - что за мини-форум?

С уважением.
Неизвестный
01.12.2012, 19:06
общий
Перенесено из формы ответа.
Цитата: 387379
За такие деньги вряд ли кто-то согласится написать эту программу. Могу лишь направить в нужное русло.


© Цитата:
Получить уравнение плоскости, содержащей максимальное количество точек данного множества

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

Советую оформить этот код в виде функции, которой передается массив точек в пространстве (с тремя координатами). Функция возвращает уравнение плоскости и массив точек, принадлежащих этой плоскости.

© Цитата:
и найти многоугольник минимальной площади, содержащий все эти точки.

Здесь сложнее, поскольку нужно решить задачу определения площади произвольного многоугольника (не выпуклого).

Можно пойти другим путем, перейти в полярную систему координат. Центром этой системы выбрать точку, лежащую где-то в середине между всеми точками. Соответственно спроектировать все точки в ПСК (координаты точек плоскости перевести в координаты угла и радиуса от центра). Затем в порядке возрастания угла выбирать точки с максимальным радиусом от центра, эти точки помещать в массив базовых точек многоугольника. Осталось перебрать этот массив по порядку и между соседними и концевыми точками образовать линии, линии многоугольника.

Единственное чего я не понимаю, как хранить многоугольник в памяти? - Массив точек многоугольника? =)

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

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

Это простой алгоритм, придерживаясь которого ты напишешь свою программу. Мне лень писать этот код, уйдет часов 10-14. Час моей работы стоит дороже =)
давно
Мастер-Эксперт
17387
18345
02.12.2012, 09:02
общий

Мини-форум - это те сообщения, связанные с консультацией, которыми обмениваются эксперты и посетители. Например, это сообщение, которое я Вам написал, из мини-форума. Он размещён под окнами вопроса и ответов.
Об авторе:
Facta loquuntur.
Форма ответа