[파이썬] 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.
[파이썬] 직선과 평면의 교점 구하기 (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.
[파이썬 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.