면적이 이고 정수가 n 인 경우. n 개의 꼭지점이있는 볼록 다각형 (3 차원)을 만드는 법? 어떤 파이썬 라이브러리는 이것을 할 수 있습니까?영역의 볼록 다각형
-3
A
답변
1
구 표면의 점 집합은 정의에 따라 볼록합니다.
단위 구상에 임의로 분포 된 n 개의 점 집합을 생성하고, 볼록 선체를 얻고, 면적을 찾고 필요에 따라 축척하여 대상 영역을 얻습니다.
편집 : 내가 잘못 읽었을 수 있습니다. 당신이 3d라고 말했기 때문에, 나는 당신이 3d polytope을 의미한다고 생각했습니다; 실제로 2 차원 다각형을 의미한다면, 구 대신에 단위 원으로 만들고, 같은 간격으로 점을 만들 수도 있습니다 (즉, 정다각형).
Edit2가 : 우리는 N의 측면과 영역 (A)을 갖는 2 차원 정다각형을 가정하면, 우리는 직접 circumradius의 R 계산할 수,
재배치
A = 0.5 * R**2 * N * sin(2*pi/N)
http://www.mathopenref.com/polygonregulararea.html에서
R = sqrt(2*A/(N * sin(2*pi/N)))
이고 함수로 바꿀 수 있습니다.
01 공지 개체 23,516,from math import pi, sin, cos, sqrt
def circumradius(a, n):
return sqrt(2.*a/(n * sin(2.*pi/n)))
하자 시험 단위 정사각형 : 1/SQRT이다
circumradius(1, 4) # => 0.7071067
(2)의 단위 정방형 정확한 중심 간 거리 모퉁이.
우리는 다음 정점을 생성 할 수
def make_polygon(a, n):
R = circumradius(a, n)
pts = []
for i in range(n):
theta = i * 2.*pi/n
pts.append((R * sin(theta), R * cos(theta)))
return pts
make_polygon(1, 4)
# => [(0., 0.7071), (0.7071, 0.), (0., -0.7071), (-0.7071, 0.)]