Окраска твердой поверхности из выпуклой оболочки с помощью Python?

Основанный на Python вопрос о плавном окрашивании твердых тел из одной вершины в другую с назначенными значениями RGB для каждой вершины. Я хотел бы заштриховать твердую поверхность с заранее заданными значениями цвета RGB. Значения RGB должны быть назначены местоположениям вершин. Желательно плавное затенение (интерполяция) от одного значения / вершины RGB к другому. Вот код, который у меня сейчас есть. Спасибо.

# Imports/Libraries required.
from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
from scipy.spatial import ConvexHull

# Define RGB colors at the vertices of the solid construct.
rgb = [[1.0, 1.0, 1.0],
   [0, 0.625, 0.89],
   [0.9, 0.06, 0.5],
   [0.92, 0.94, 0.85],
   [0.27, 0.11, 0.0],
   [0.18, 0.21, 0.53],
   [0.0, 0.6, 0.3],
   [0.89, 0.13, 0.15],
   [0.02, 0.12, 0.16],
   [0.18, 0.07, 0.098],
   [0.15, 0.16, 0.09]]
rgb = np.asarray(rgb)

# Define locations, xyz, of the vertices
xyz = [[0, 0, 100],
   [-38, -50, 58]
   [ 77, -2,  51],
   [ -5, 10, 94],
   [ 17, 41, 16 ],
   [18,-47, 26],
   [-71, 27, 53],
   [ 71, 51, 50],
   [-7, -10, 10],
   [15, 2.5, 10],
   [-4, 11, 16]]
xyz = np.asarray(xyz)

# Construct convex hull
primshull = ConvexHull(xyz) 

# Get vertices
vertices = [xyz[s] for s in primshull.simplices]

# Get triangles 
triangles = Poly3DCollection(vertices, edgecolor='k', alpha = 0.05)

# HOW TO COLOR the triangles/solid with the RGB values 
# at the vertices with smooth shaded interpolation between???
# so that I have smooth colors from vertice to vertice??
face_color = 'red'
triangles.set_facecolor(face_color)

fig1 = plt.figure(1)
ax = fig1.gca(projection='3d')  
ax.scatter(xyz[:,0],xyz[:,1],xyz[:,2], marker='o', s=5, alpha=1.0)
ax.add_collection3d(triangles)
plt.show()

0 ответов

Другие вопросы по тегам