OpenSCAD Graph Generator

by WClampitt1, published

OpenSCAD Graph Generator by WClampitt1 Mar 30, 2017
0 Share
Download All Files

Thing Apps Enabled

Order This Printed View All Apps

Grade & Subject




Higher Education

Design Tools



Liked By

View All

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag

Thing Statistics

639Views 157Downloads Found in Math


This OpenSCAD program creates 3D graphs from two variable functions. These graphs are created by graphing points on a square grid and then connecting those points to form a mesh. All mathematical inputs must comply to the OpenSCAD language for math functions that can be found here: https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Mathematical_Functions

How I Designed This

The code for Graphs.scad


Overview and Background

Reason for Creation

I created this program for an honor's research seminar that I am working on. The purpose of this project is to determine whether or not using 3D printed graphs are helpful for Calculus III students to visualize 3D planes and surfaces, thus increasing their understanding of those functions. I believe that these models would be extremely useful for kinesthetic learners since it provides them with a manipulative for them to pick up and analyze.

Lesson Plan and Activity

These graphs can be used however the teacher sees fit throughout the course of his or her class. These models would be most effective as a visualization tool to supplement a lesson on 3D functions and what they look like.

Materials Needed

Either a 3D printer or access to a 3D printing service.

More from Math

view more

All Apps

3D Print your file with 3D Hubs, the world’s largest online marketplace for 3D printing services.

App Info Launch App

Auto-magically prepare your 3D models for 3D printing. A cloud based 3D models Preparing and Healing solution for 3D Printing, MakePrintable provides features for model repairing, wall thickness...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

With 3D Slash, you can edit 3d models like a stonecutter. A unique interface: as fun as a building game! The perfect tool for non-designers and children to create in 3D.

App Info Launch App

Print through a distributed network of 3D printing enthusiasts from across the US, at a fraction of the cost of the competitors. We want to change the world for the better through technology, an...

App Info Launch App

Quickly Scale, Mirror or Cut your 3D Models

App Info Launch App

3D Print a wide range of designs with Treatstock. Easy to use tools to get the perfect result. The global 3D printing network that connects you with high-quality and fast working print services nea...

App Info Launch App
Apr 5, 2017 - Modified Apr 5, 2017

I created a function_grapher module included in my library, you may be interested in it.


That looks really cool! I will be sure to check it out. I am currently trying to add the functionality of graphing parametric equations to my program, I would love to see if you have a way of doing it with your method.

I guess you want to convert a string input to an executable equation and then create a model, right?

That would be cool. I only really know basic OpenSCAD though so I was making a parametric program that graphed things using three different functions of
x(t, y)

but I would really like to be able to just input an equation like x^2 + y^2 - z^2 = 1 and it graph a hyperboloid.

Apr 6, 2017 - Modified Apr 6, 2017
JustinSDK - in reply to WClampitt1

I think different parametric equations require different ways to graph. The Path category in my library lists some examples about spirals, bezier curve, etc. They can be described by their own parametric equation. That is, writing different modules or functions for different parametric equations will be easier. :)

I will definitely check it out! Thanks for your input.

Apr 1, 2017 - Modified Apr 1, 2017

It's a great idea.

I tried to include "line3d.scad" and "polyline3d.scad" in my library and modified your code to the following. It can be faster even you use a higher $fn.

include <line3d.scad>;
include <polyline3d.scad>;

function f(x, y) = (pow(y,2)/pow(2, 2))-(pow(x,2)/pow(2, 2));

_min =  -3;
_max = 3;
res = .3;
sphere_diameter = .1;

$fn = 24;
_scale = 25.4;

scale(_scale) graph();

module graph(){

module x_axis(){
  for(y = [_min : res : _max]) {
          [for(x = [_min: res : _max]) [x, y, f(x, y)]], 
          startingStyle = "CAP_SPHERE", 
          endingStyle = "CAP_SPHERE"

module y_axis(){                    
    for(x = [_min : res : _max]) {
            [for(y = [_min: res : _max]) [x, y, f(x, y)]], sphere_diameter, 
            startingStyle = "CAP_SPHERE", 
            endingStyle = "CAP_SPHERE"