Scipy空間 計算凸包(convexHull

2021-10-01 23:25:11 字數 1504 閱讀 7577

凸包:數學上指,在實向量空間v中的一組點x的凸包或凸包絡是包含x的最小凸集。通俗的來說就是包圍一組散點的最小凸邊形

在scipy.spatial 中計算凸包的函式,scipy中convexhull輸入的引數可以是m2的點座標。其返回值的屬性.verticess是所有凸輪廓點在散點(m2)中的索引值。

注意:屬性.verticess繪製出來的輪廓點是按照逆時針排序

scipy 計算得到的凸包見下圖:

**示例:

# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt

import numpy as np

from scipy.spatial import convexhull

##########scipy 凸包################

points = np.random.rand(30,

2)hull = convexhull(points)

plt.plot(points[:,

0], points[:,

1],'o'

)# hull.vertices 得到凸輪廓座標的索引值,逆時針畫

hull1=hull.vertices.tolist(

)#要閉合必須再回到起點[0]0]

)plt.plot(points[hull1,0]

, points[hull1,1]

,'r--^'

,lw=2)

for i in

range

(len

(hull1)-1

):plt.text(points[hull1[i],0

], points[hull1[i],1

],str(i)

,fontsize=

20)

**示例2:

計算幾何 凸包

有多個手機訊號發射器,求解乙個最小區域,要求所有的發射器都包含在這個最小區域中,並且任意兩台發射器之間的交流包含於在這個區域內。將所有的發射器看做為點,任意兩個點之間的連線都包含於乙個平面s 乙個平面的子集s 是凸的,當且僅當 s中的任意兩個點之間的連線都包含於 s中。點集 p的凸包是所有包含 p的...

計算幾何 凸包

如求凸包周長 include include include include include include using namespace std define pi 3.1415926 define eps 1e 10 class point 建立point類,裡面包含很多point的運算子 定...

計算幾何 凸包

凸多邊形 任意兩個頂點的連線都在多邊形內部,這樣的多邊形稱為凸多邊形 凸包的定義 乙個凸多邊形的頂點的集合 求凸包的一般形式 給出乙個點集,求出覆蓋所有點的最小凸多邊形 graham演算法 時間複雜度 o nlogn 極角排序耗時 先取出乙個端點,必須為凸包上的乙個點,取最下且最右的點即可 以端點進...