찾다
백엔드 개발파이썬 튜토리얼Python에서 볼록 껍질을 그리는 방법은 무엇입니까?

ConvexHull

ConvexHull은 공간 클래스의 주요 기능은 점 집합의 가장자리를 찾아 볼록 껍질을 만드는 것입니다. 필요한 초기화 매개변수는 점 세트이고, 점 세트 형식은 n×m 차원의 배열이고, n은 점 세트의 점 수이고, m은 점의 차원입니다.

from scipy.spatial import ConvexHull
import matplotlib.pyplot as plt
import numpy as np

pts = np.random.rand(30, 2)
hull = ConvexHull(pts)
plt.plot(pts[:,0], pts[:,1], 'o')
for i in hull.simplices:
    plt.plot(pts[i, 0], pts[i, 1], 'k-')

plt.show()

여기서 simplex는 인덱스 포인트의 일련 번호입니다. 그리기 후 효과는 다음과 같습니다.

Python에서 볼록 껍질을 그리는 방법은 무엇입니까?

ConvexHull에는 두 개의 선택적 매개 변수가 있습니다. True인 경우 새 포인트를 추가할 수 있습니다. .

qhull_options의 특정 매개변수는 qhull에서 볼 수 있습니다. 아래에서는 QG만 설명하겠습니다.

QG

QGn은 n번째 지점을 관측점으로 간주한다는 뜻으로 볼록선체로 설정된 점을 분할한 후 정점을 연결하여 벽으로 사용하면 관측점으로 볼 수 있는 점은 다음과 같습니다. 좋음으로 표시되면 효과는 아래와 같습니다

pts = np.random.rand(1000, 2)
# 添加一个观察点
pts = np.vstack([pts, np.array([[2,0.5]])])
hull = ConvexHull(pts, qhull_options='QG1000')
plt.plot(pts[:,0], pts[:,1], '.')
for i in hull.simplices:
    plt.plot(pts[i, 0], pts[i, 1], 'k-')

for i in hull.simplices[hull.good]:
    plt.plot(pts[i, 0],pts[i, 1], lw=5)

plt.show()

효과는 그림과 같습니다

Python에서 볼록 껍질을 그리는 방법은 무엇입니까?

3차원 케이스

2차원 케이스의 볼록한 선체는 분명히 선으로 구성된 닫힌 도형이며, 3차원 경우의 볼록 선체는 당연히 3차원 형상이어야 합니다. 어떤 차원으로든 확장된 볼록 껍질은 실제로 단순체입니다. ConvexHull의 단순체는 단순체를 형성하는 점이며 원점 세트에 색인되어 있습니다. 그 예는 다음과 같습니다

pts = np.random.rand(30, 3)
hull = ConvexHull(pts)
ax = plt.subplot(projection='3d')
ax.scatter(pts[:,0], pts[:,1], pts[:,2])
for i in hull.simplices:
    ax.plot_trisurf(pts[i, 0], pts[i, 1], pts[i,2], alpha=0.5)

plt.show()

알파 매개변수는 삼각형 표면의 투명도를 조정하여 볼록 껍질 내부의 점이 볼록 껍질을 통해 보이도록 하는 데 사용됩니다.

효과는 다음과 같습니다

Python에서 볼록 껍질을 그리는 방법은 무엇입니까?

ConvexHull 속성

심플렉스(Simplex)의 개념은 앞서 소개한 바 있습니다. 즉, 볼록한 껍질로 구성된 도형이 심플렉스입니다. 2차원의 경우 볼록 껍질은 선분으로 둘러싸여 있으며, 3차원의 경우 볼록 껍질은 어떤 차원으로든 확장되어 둘러싸여 있는 볼록 껍질을 구성하는 단순체로 표현될 수 있습니다. 하이퍼서피스로. 초곡면 개념에는 경계가 없으므로 정점과 모서리가 있는 볼록 선체 표면을 다음에서는 단순 초곡면이라고 합니다.

ConvexHull 클래스에서 일반적으로 사용되는 속성은 다음과 같습니다.

  • 볼록 껍질로 둘러싸인 점 점 집합

  • 점 집합의 단순 정점 인덱스

  • 단순 초표면 정점

  • 이웃 슈퍼 표면 인접 초곡면의 인덱스

  • 방정식 초곡면 방정식의 매개변수

3차원 경우의 초곡면 방정식의 예는 다음과 같습니다. 즉, 각 초곡면에는 4개의 매개변수가 있습니다

>>> hull.equations
array([[-0.5509472 ,  0.72386104, -0.41530999, -0.36369123],
       [-0.26155355,  0.16210178, -0.95147925,  0.02022163],
       [-0.99132368, -0.0460725 ,  0.12310441,  0.045523  ],
       [-0.98526526, -0.07170442,  0.15527666,  0.04749854],
       [-0.15900968, -0.98529789, -0.06248198,  0.13294496],
   # .......

위 내용은 Python에서 볼록 껍질을 그리는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 亿速云에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
파이썬 목록을 어떻게 슬라이스합니까?파이썬 목록을 어떻게 슬라이스합니까?May 02, 2025 am 12:14 AM

slicepaythonlistisdoneusingthesyntaxlist [start : step : step] .here'showitworks : 1) startistheindexofthefirstelementtoinclude.2) stopistheindexofthefirstelemement.3) stepisincrementbetwetweentractionsoftortionsoflists

Numpy Array에서 수행 할 수있는 일반적인 작업은 무엇입니까?Numpy Array에서 수행 할 수있는 일반적인 작업은 무엇입니까?May 02, 2025 am 12:09 AM

NumpyAllowsForVariousOperationsOnArrays : 1) BasicArithmeticLikeadDition, Subtraction, A 및 Division; 2) AdvancedOperationsSuchasmatrixmultiplication; 3) extrayintondsfordatamanipulation; 5) Ag

파이썬으로 데이터 분석에 어레이가 어떻게 사용됩니까?파이썬으로 데이터 분석에 어레이가 어떻게 사용됩니까?May 02, 2025 am 12:09 AM

Arraysinpython, 특히 Stroughnumpyandpandas, areestentialfordataanalysis, setingspeedandefficiency

목록의 메모리 풋 프린트는 파이썬 배열의 메모리 풋 프린트와 어떻게 비교됩니까?목록의 메모리 풋 프린트는 파이썬 배열의 메모리 풋 프린트와 어떻게 비교됩니까?May 02, 2025 am 12:08 AM

ListSandnumpyArraysInpythonHavedifferentmoryfootPrints : ListSaremoreFlexibleButlessMemory-Efficer, whilumpyArraySareOptimizedFornumericalData.1) ListSTorERENFERENCESTOOBJECTS, OverHeadAround64ByTeson64-BitSyStems.2) NumpyArraysTATACONTACOTIGUOU

실행 파이썬 스크립트를 배포 할 때 환경 별 구성을 어떻게 처리합니까?실행 파이썬 스크립트를 배포 할 때 환경 별 구성을 어떻게 처리합니까?May 02, 2025 am 12:07 AM

ToensurePythonScriptTscriptsBecorrectelyRossDevelopment, Staging and Production, UsethesEStrategies : 1) EnvironmberVariblesForsimplesettings, 2) ConfigurationFilesforcomplexSetups 및 3) DynamicLoadingForAdAptability

파이썬 어레이를 어떻게 슬라이스합니까?파이썬 어레이를 어떻게 슬라이스합니까?May 01, 2025 am 12:18 AM

Python List 슬라이싱의 기본 구문은 목록 [start : stop : step]입니다. 1. Start는 첫 번째 요소 인덱스, 2.Stop은 첫 번째 요소 인덱스가 제외되고 3. Step은 요소 사이의 단계 크기를 결정합니다. 슬라이스는 데이터를 추출하는 데 사용될뿐만 아니라 목록을 수정하고 반전시키는 데 사용됩니다.

어떤 상황에서 목록이 배열보다 더 잘 수행 될 수 있습니까?어떤 상황에서 목록이 배열보다 더 잘 수행 될 수 있습니까?May 01, 2025 am 12:06 AM

ListSoutPerformArraysin : 1) DynamicsizingandFrequentInsertions/Deletions, 2) StoringHeterogeneousData 및 3) MemoryEfficiencyForsParsEdata, butMayHavesLightPerformanceCosceperationOperations.

파이썬 어레이를 파이썬 목록으로 어떻게 변환 할 수 있습니까?파이썬 어레이를 파이썬 목록으로 어떻게 변환 할 수 있습니까?May 01, 2025 am 12:05 AM

TOCONVERTAPYTHONARRAYTOALIST, USETHELIST () CONSTUCTORORAGENERATERATOREXPRESSION.1) importTheArrayModuleAndCreateAnarray.2) USELIST (ARR) 또는 [XFORXINARR] TOCONVERTITTOALIST.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경