Python + Scipy로 무작위로 작성한 점에서 볼록한 포를 그립니다.
할 일
출처
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import scipy.spatial as ssp
def point_in_hull(point, hull, tolerance=1e-6):
return all(
(np.dot(eq[:-1], point) + eq[-1] <= tolerance)
for eq in hull.equations)
def main():
N = 100
points = np.random.rand(N, 2)
idx_bases = np.random.choice(range(N), 5, replace=False)
bases = points[idx_bases, :]
# hull
hull = ssp.ConvexHull(bases)
idx = [i for i in range(N) if point_in_hull(points[i, :], hull)]
# vis
fig = plt.figure(figsize=(5, 5))
ax = fig.gca()
ax.scatter(points[:, 0], points[:, 1], c='r', marker='o')
ax.scatter(bases[:, 0], bases[:, 1], c='b', marker='o')
# in hull vertex and borders
pidx = points[idx, :]
ax.scatter(pidx[:, 0], pidx[:, 1], c='c', marker='x')
for simplex in hull.simplices:
plt.plot(bases[simplex, 0], bases[simplex, 1], "k--")
ax.axis("off")
ax.margins(x=0.015, y=0.015)
ax.set_position([0.05, 0.05, 0.9, 0.9])
plt.show()
plt.close()
if __name__ == '__main__':
main()
실행 예
Reference
이 문제에 관하여(Python + Scipy로 무작위로 작성한 점에서 볼록한 포를 그립니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/takilog/items/82ca4a9ccdcb74100588
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import scipy.spatial as ssp
def point_in_hull(point, hull, tolerance=1e-6):
return all(
(np.dot(eq[:-1], point) + eq[-1] <= tolerance)
for eq in hull.equations)
def main():
N = 100
points = np.random.rand(N, 2)
idx_bases = np.random.choice(range(N), 5, replace=False)
bases = points[idx_bases, :]
# hull
hull = ssp.ConvexHull(bases)
idx = [i for i in range(N) if point_in_hull(points[i, :], hull)]
# vis
fig = plt.figure(figsize=(5, 5))
ax = fig.gca()
ax.scatter(points[:, 0], points[:, 1], c='r', marker='o')
ax.scatter(bases[:, 0], bases[:, 1], c='b', marker='o')
# in hull vertex and borders
pidx = points[idx, :]
ax.scatter(pidx[:, 0], pidx[:, 1], c='c', marker='x')
for simplex in hull.simplices:
plt.plot(bases[simplex, 0], bases[simplex, 1], "k--")
ax.axis("off")
ax.margins(x=0.015, y=0.015)
ax.set_position([0.05, 0.05, 0.9, 0.9])
plt.show()
plt.close()
if __name__ == '__main__':
main()
Reference
이 문제에 관하여(Python + Scipy로 무작위로 작성한 점에서 볼록한 포를 그립니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takilog/items/82ca4a9ccdcb74100588텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)