2014 dxdy logo

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

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




 
 выпуклая оболочка в Wolfram - как убрать лишние вершины?
Сообщение27.07.2020, 12:17 
Нужен совет по вычислению в 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 
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 
Работает!
Правда, могу занудно отметить, что эта опция не описана в доках, по кр. мере ее нет в https://reference.wolfram.com/language/ ... lMesh.html
(видимо, она описывалась ранее в пакете ComputationalGeometry). И при наборе она выделяется красным цветом.
Уважаемый Sender, спасибо, это ровно то что было нужно!

 
 
 
 Re: выпуклая оболочка в Wolfram - как убрать лишние вершины?
Сообщение27.07.2020, 19:53 
Serm314 в сообщении #1476326 писал(а):
эта опция не описана в доках

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

 
 
 
 Re: выпуклая оболочка в Wolfram - как убрать лишние вершины?
Сообщение28.07.2020, 10:11 
Вдогонку, возможно, кому-то интересно будет.
В случае, когда строится выпуклая оболочка более двух точек, лежащих на одной прямой, $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 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group