A simple python helper script has been added to aid developers in visualizing the winding order of vertices
47 lines
1.8 KiB
Python
47 lines
1.8 KiB
Python
import matplotlib.pyplot as plt
|
|
|
|
class Box:
|
|
def __init__(self, scale, vc="red", ec="blue", offset=0):
|
|
self.scale = scale
|
|
self.offset = offset
|
|
self.verticies = [[scale, -scale, -scale], [scale, scale, -scale], [-scale, -scale, -scale], [-scale, scale, -scale], [scale, -scale, scale], [scale, scale, scale], [-scale, -scale, scale], [-scale, scale, scale]]
|
|
self.edges = [[0, 1], [0, 2], [0, 4], [1, 3], [1, 5], [3, 7], [3, 2], [2, 6], [4, 5], [4, 6], [5, 7], [7, 6]]
|
|
self.edge_color = ec
|
|
self.vertex_color = vc
|
|
|
|
def plot(self, ax, vlabel=True, elabel=False):
|
|
for vertID, vert in enumerate(self.verticies):
|
|
ax.scatter(vert[0], vert[1], vert[2], c=self.vertex_color)
|
|
if vlabel:
|
|
ax.text(vert[0], vert[1], vert[2], f"{self.offset + vertID}", fontsize=25)
|
|
for edge in self.edges:
|
|
ax.plot([self.verticies[edge[0]][0], self.verticies[edge[1]][0]], [self.verticies[edge[0]][1], self.verticies[edge[1]][1]], [self.verticies[edge[0]][2], self.verticies[edge[1]][2]], color=self.edge_color)
|
|
|
|
class Wedge:
|
|
def __init__(self, A, B, ec="green"):
|
|
self.A = A
|
|
self.B = B
|
|
self.edge_color = ec
|
|
def plot(self, ax):
|
|
for vA, vB in zip(self.A.verticies, self.B.verticies):
|
|
ax.plot([vA[0], vB[0]], [vA[1], vB[1]], [vA[2], vB[2]], color=self.edge_color)
|
|
|
|
def main():
|
|
core = Box(0.5)
|
|
envelope = Box(2, offset=8)
|
|
star = Wedge(core, envelope)
|
|
infinity = Box(5, offset=16)
|
|
vacuum = Wedge(envelope, infinity)
|
|
|
|
fig, ax = plt.subplots(1, 1, figsize=(10, 10), subplot_kw={"projection": "3d"})
|
|
core.plot(ax)
|
|
envelope.plot(ax)
|
|
star.plot(ax)
|
|
infinity.plot(ax)
|
|
vacuum.plot(ax)
|
|
ax.view_init(30, 30)
|
|
plt.show()
|
|
|
|
if __name__ == "__main__":
|
|
main()
|