August 6, 2024
Description
Hey MakerWorld!
This is a sculpture that I created for the mathematics design contest here. I'm too late because life got in the way, but I figured I would still post it! The profile prints at a small layer height for optimal results.
This is the plot of the surface: z = sin(x^2) sin(y^2). Through hours and hours of trial an error, I figured out a cool way to make this surface and I'll explain how, in case someone wants to do the same thing in the future!
First I created a Python script using ChatGPT that took the z values in increments of 1 from -5 to 5. It then saved the points to a .txt file. The script goes as follows:
import numpy as np
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D
# Define the function def z(x, y):
return np.sin(x**2) * np.sin(y**2)
# Define the range for x and y
x = np.arange(-5, 6, 1)
y = np.arange(-5, 6, 1)
# Create a meshgrid for x and y
X, Y = np.meshgrid(x, y)
# Calculate Z values
Z = z(X, Y)
# Create a 3D plot
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, cmap='viridis')
# Set labels
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
# Show the plot plt.show()
np.savetxt('array.txt', Z)
I then used SolidWorks to generate a curve using these points. I then separated the curve into 10 separate curves and the joined them together using the lofted surface command. If you have any questions about how to do this leave me a comment and I'll help!
Hope you find it as cool as I do!
Zachary's Prints
License:
Standard Digital File License