2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 выпуклая оболочка в Wolfram - как убрать лишние вершины?
Сообщение27.07.2020, 12:17 


27/07/20
4
Нужен совет по вычислению в Wolfram (ver. 10 или 12) координат выпуклой оболочки множества точек на плоскости.
Проблема в том, что Математика включает в ответ, помимо вершин выпуклой оболочки, еще и все точки, которые лежат на сторонах получающегося выпуклого многоугольника. А они не нужны.
$ppp = ConvexHullMesh$[{{0, 0}, {0, 1}, {1, 1}, {1/2, 1/2}, {0, 1/2}}]
$MeshCoordinates[ppp]$
Получаем {{0., 0.}, {0., 1.}, {1., 1.}, {0.5, 0.5}, {0., 0.5}}
В то время как сама выпуклая оболочка, очевидно, треугольник {{0., 0.}, {0., 1.}, {1., 1.}}
Как убрать лишние точки?
Заранее благодарен за советы.

 Профиль  
                  
 
 Re: выпуклая оболочка в Wolfram - как убрать лишние вершины?
Сообщение27.07.2020, 15:43 


14/01/11
3040
Serm314, у функции ConvexHullmesh есть опция "AllPoints->False":
Код:
ConvexHullMesh[{{0, 0}, {0, 1}, {1, 1}, {1/2, 1/2}, {0, 1/2}}, AllPoints -> False]

 Профиль  
                  
 
 Re: выпуклая оболочка в Wolfram - как убрать лишние вершины?
Сообщение27.07.2020, 19:41 


27/07/20
4
Работает!
Правда, могу занудно отметить, что эта опция не описана в доках, по кр. мере ее нет в https://reference.wolfram.com/language/ ... lMesh.html
(видимо, она описывалась ранее в пакете ComputationalGeometry). И при наборе она выделяется красным цветом.
Уважаемый Sender, спасибо, это ровно то что было нужно!

 Профиль  
                  
 
 Re: выпуклая оболочка в Wolfram - как убрать лишние вершины?
Сообщение27.07.2020, 19:53 


14/01/11
3040
Serm314 в сообщении #1476326 писал(а):
эта опция не описана в доках

Хм, действительно. Я нашёл её в доках для ConvexHull:
https://reference.wolfram.com/language/ComputationalGeometry/ref/ConvexHull.html

 Профиль  
                  
 
 Re: выпуклая оболочка в Wolfram - как убрать лишние вершины?
Сообщение28.07.2020, 10:11 


27/07/20
4
Вдогонку, возможно, кому-то интересно будет.
В случае, когда строится выпуклая оболочка более двух точек, лежащих на одной прямой, $ConvexHullMesh$ не работает. Например, для трех точек:

$ppp = ConvexHullMesh$[{{0, 0}, {1/2, 1/2}, {1, 1}}]

During evaluation of In[61]:=
ConvexHullMesh::rnimpl: The function ConvexHullMesh is not implemented for {{0,0},{1/2,1/2},{1,1}}.

В случае двух точек $ConvexHullMesh$ работает корректно:

$ppp = ConvexHullMesh$[{{0, 0}, {1, 1}}]
$MeshCoordinates[ppp]$
рисуется отрезок
Out[62]={{0., 0.}, {1., 1.}}.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group