본문 바로가기
반응형

파이썬120

[파이썬] 3차원에 선 그리기 (pyvista) 3차원 공간에 선을 그리는 방법은 아래와 같습니다. import pyvista as pv #선 정의 x_axis=pv.Line((0,0,0),(150,0,0)) y_axis=pv.Line((0,0,0),(0,150,0)) z_axis=pv.Line((0,0,0),(0,0,150)) # 캔버스 정의 p = pv.Plotter() # 선 그리기 p.add_mesh(x_axis,color='yellow') p.add_mesh(y_axis,color='yellow') p.add_mesh(z_axis,color='yellow') #그래프 보이기 p.show() 2022. 1. 18.
[파이썬] 점 3차원 그래프 그리고 크기,색 설정 (pyvista) 넘파이를 이용하여 점을 생성합니다. import numpy as np import pyvista as pv point = np.array([[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [0.5, 0.5, -1]]) 그래프를 그려봅시다. p = pv.Plotter() # 캔버스 정의 p.add_mesh(point) p.show() 설정할 수 있는 옵션은 아래와 같습니다. add_mesh(self, mesh, color=None, style=None, scalars=None, clim=None, show_edges=None, edge_color=None, point_size=5.0, line_width=None, opacity=1.0, flip_scalars=False, l.. 2021. 11. 8.
파이썬 pyvista 모듈에서 stl 병진,회전,변환(translate, rotate, transform) 넘파이와, pyvista 모듈을 불러옵니다. import numpy as np import pyvista as pv mesh 하나를 정의합시다. import numpy as np import pyvista as pv # mesh points vertices = np.array([[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [0.5, 0.5, -1]]) # mesh faces faces = np.hstack([[4, 0, 1, 2, 3], # square [3, 0, 1, 4], # triangle [3, 1, 2, 4]]) # triangle mesh = pv.PolyData(vertices, faces) 병진,회전,변환 메소드는 아래와 같이 사용합니다. STL.tran.. 2021. 11. 8.
파이썬 numpy stl 모듈에서 stl 병진,회전,변환(translate, rotate, transform) 넘파이와, stl 모듈을 불러옵니다. import numpy as np from stl import mesh mesh를 하나 불러와서 STL이라는 변수에 입력했다고 가정합시다 . STL=mesh.Mesh.from_file('ex.stl') 병진,회전,변환 메소드는 아래와 같이 사용합니다. STL.translate(np.array([x,y,z])) STL.rotate(axis, theta=0, point=None) STL.transform(matrix) ; 4x4 행렬 2021. 11. 8.
pyvista 자료형인 PolyData 에서 사용가능한 메소드들 pyvista에서 stl을 생성하거나, point cloud를 생성하거나, stl 을 불러올 때 사용하는 메소드는 pv.PolyData 입니다. PolyData에서 사용가능한 메소드들을 살펴봅시다. 먼저 PolyData 를 하나 생성하였습니다. import numpy as np import pyvista as pv # mesh points vertices = np.array([[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [0.5, 0.5, -1]]) # mesh faces faces = np.hstack([[4, 0, 1, 2, 3], # square [3, 0, 1, 4], # triangle [3, 1, 2, 4]]) # triangle mesh = pv.PolyDa.. 2021. 11. 8.
pyvista 매쉬 생성 원리 pyvista에서는 아래 형식으로 매쉬를 생성합니다. import pyvista as pv mesh = pv.PolyData(vertices, faces) vertices는 매쉬 생성에 사용되는 점이고, faces는 면에 대한 정보입니다. 아래는 pyvista documentation 에서 제공하는 예시입니다. import numpy as np import pyvista as pv # mesh points vertices = np.array([[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [0.5, 0.5, -1]]) # mesh faces (일렬로 나열한 것과 같음) faces = np.hstack([[4, 0, 1, 2, 3], # square [3, 0, 1, 4],.. 2021. 11. 8.
[파이썬] STL을 평면으로 자르기 #1. 교점구하기 STL과 내가 지정한 평면 사이의 교점을 얻는 코드를 짜보았다. 고양이 모델을 사용했다. 먼저 사용한 고양이 모델을 공유한다. 평면을 하나 만들고 교점을 구했다. 평면은 skspatial 패키지를 사용했다. STL을 불러와 교점을 구하는데는 numpy-stl 패키지를 사용했고, 시각화에는 pyvista 패키지를 사용했다. 평면,선 등 정의 및 계산 : skspatial 패키지 STL 불러와 계산 : numpy-stl 패키지 시각화 : pyvista 패키지 결과는 아래와 같다. 코드는 아래와 같다. 설명은 주석에 써놓았다. import os import numpy as np import pyvista as pv from skspatial.objects import Plane from skspatial.ob.. 2021. 10. 26.
[파이썬] OpenGL 설치방법 설치 커멘드 창을 엽니다. 시작메뉴를 클릭하고 cmd를 입력하면 나오는 '명령 프롬프트'를 실행하면 됩니다. 아래 명령어를 입력합니다. 명령어를 하나씩 입력합니다. pip install PyOpenGL pip install PyOpenGL_accelerate 또는 아래와 같이 한번에 입력할 수도 있습니다. pip install PyOpenGL PyOpenGL_accelerate 설치 확인 커멘드창에 아래 명령어를 입력하면 설치된 패키지 목록을 보여줍니다. pip list 목록에 위에서 설치한 두 패키지 이름이 있으면 성공입니다. 2021. 10. 25.
[파이썬] 두 점 사이에 평면이 있는지 여부 구하기 (scikit-spatial) 먼저 패키지를 불러옵시다. import numpy as np from skspatial.objects import Plane from skspatial.objects import Point 점 두개와 평면 하나를 정의합시다. >>> p1=Point([0,0,1]) >>> p2=Point([0,0,3]) >>> pl=Plane([0,0,2],[0,0,1]) Plane 클래스의 side_point 메소드를 사용하면 점이 평면의 어느 쪽에 있는지를 알 수 있습니다. 반환하는 값은 아래와 같습니다. 점이 평면 위에 : 0 점이 평면 앞에 : 1 점이 평면 뒤에 : -1 두 점을 이용하여 반환값을 구해봅시다. >>> pl.side_point(p1) -1 >>> pl.side_point(p2) 1 값이 다르므로 서.. 2021. 10. 22.
[파이썬] 직선과 평면의 교점 구하기 (scikit-spatial) 먼저 패키지를 불러옵시다. import numpy as np from skspatial.objects import Plane from skspatial.objects import Line 선 하나와 평면 하나를 정의합시다. >>> line = Line([1, 1, 0], [2, 1, 3]) >>> plane = Plane(point=[2, 2, 5], normal=[0, 0, 1]) 교점을 구해봅시다. >>> plane.intersect_line(line) Point([4.33333333, 2.66666667, 5. ]) 2021. 10. 22.
[파이썬] 점을 평면에 투영하기 (scikit-spatial) 점을 평면에 투영하였을 때, 투영된 점의 좌표를 구하는 방법입니다. 두개의 패키지를 불러옵니다. import numpy as np from skspatial.objects import Plane 투영된 점의 좌표는 아래와 같이 구합니다. point1과 normal1은 평면을 정의하기 위한 점과 법선벡터입니다. 둘다 리스트 형태로 입력하면 됩니다. project_point 는 투영하려는 점이구요. 리스트 형태로 입력하면 됩니다. projected_point는 투영된 점입니다. >>> projected_point = Plane(point=point1, normal=normal1).project_point(project_point) 실제 점을 이용하여 구해봅시다. >>> projected_point=Plane.. 2021. 10. 22.
파이썬에서 stl 파일 다루는 패키지 소개(numpy-stl) STL 파일은 삼각 매쉬형태로 된 3차원 파일입니다. 파이썬에서 STL 파일을 다룰 때는 stl 패키지를 사용합니다. stl 패키지는 numyp 에 의존합니다. array를 사용한다는 말입니다. 아래와 같이 설치합니다. pip install numpy-stl stl 패키지 안에는 아래와 같은 다섯개의 모듈이 있습니다. stl.Mesh stl.main stl.base stl.mesh stl.stl stl 파일을 다룰 때는 mesh 모듈을 사용하며 아래와 같이 불러서 사용합니다. import numpy as np from stl import mesh cat.stl 이라는 파일을 갖고 있다고 합시다. stl을 불러오는 방법은 아래와 같습니다. ctl = mesh.Mesh.from_file('cat.stl') .. 2021. 10. 22.
[파이썬 matplotlib] 정규분포 2변수 이미지맵 (imshow) [파이썬 matplotlib] 정규분포 2변수 이미지맵 (imshow) inshow 함수를 이용하여 정규분포의 이미지맵을 그려봅시다. 등고선그래프라고 생각하시면 됩니다. import numpy as npimport matplotlib.cm as cmfrom matplotlib import pyplot as pltimport scipy.stats as stats X=np.linspace(-4,4,100)Y=np.linspace(-4,4,100) Z=np.zeros((100,100)) for i,x in enumerate(X): for j,y in enumerate(X): Z[i,j]=stats.norm(0, 1).pdf(X[i])*stats.norm(0, 1).pdf(Y[j]) plt.imshow(Z,cm.. 2020. 11. 27.
[파이썬 matplotlib] 이미지맵(imshow)의 원리 imshow는 원하는 사이즈의 픽셀을 원하는 색으로 채워서 만든 그림입니다. 쉽게말하면 원하는 크기의 행렬을 만들어서 각 칸을 원하는 색으로 채우는 것입니다. 각 칸을 채우는 방법은 colormap, RGB, RGBA 의 네가지가 있습니다. 아래 순서로 설명하겠습니다. 1) colormap 디폴트 2) colormap 변경방법 3) RGB 4) RGBA 하나씩 알아봅시다. 1) colormap 디폴트 먼저 3행3열의 행렬을 만들고 각 값을 아래와 같이 채워보겠습니다. import numpy as np from matplotlib import pyplot as plt Z=np.array([[10,0,0],[0,10,0],[0,0,10]]) 행렬형태로 표현하면 아래와 같습니다. 10 0 0 0 10 0 0 .. 2020. 11. 26.
[파이썬 matplotlib] 그래프를 여러 페이지의 pdf로 저장하기 [파이썬 matplotlib] 그래프를 여러 페이지의 pdf로 저장하기 먼저 pdf을 저장할 경로를 설정합니다. import os #확인하는 법current_path=os.getcwd() #변경하는 법os.chdir('원하는 경로') 그래프를 여러 페이지에 저장하는 방법은 먼저 pdf 파일을 생성하고, 생성된 pdf 파일에 한 페이지씩 내용을 추가하는 것입니다. 한 페이지는 savefig 를 기준으로 결정됩니다. savefig 를 하면 한 페이지가 완료됩니다. import numpy as npfrom matplotlib import pyplot as pltfrom matplotlib.backends.backend_pdf import PdfPages # 데이터 생성data = np.random.randn(.. 2020. 11. 26.
반응형