mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-01-17 22:28:16 +01:00
3.5 KiB
3.5 KiB
function_grapher
Given a set of points [x, y, f(x, y)]
where f(x, y)
is a mathematics function, the function_grapher
module can create the graph of f(x, y)
.
It depends on the line3d
and polyline3d
modules so you have to include "line3d.scad" and "polyline3d.scad".
Parameters
points
: A set of points[x, y, f(x, y)]
. See examples below.thickness
: The face or line thickness.style
: The style of the graph. It accepts"FACES"
,"LINES"
and"HULL_FACES"
. The default value is"FACES"
which simply takesf(x, y) - thickness
for each point to build a bottom. It may cause thickness problems when slopes is high. The"HULL_FACES"
value can solve the problem but is slow. When assigning"LINES"
, it uses lines to connect points.slicing
: Given a rectangle, we have two ways to slice it into two triangles. Using this parameter to determine the way you want. It accepts"SLASH"
(default) and"BACK_SLASH"
.$fa
,$fs
,$fn
: Used by thecircle
orsphere
module internally. It affects the speed of rending. For example, a large$fn
may be very slow when rending. Check the circle module or the sphere module for more details.
Examples
include <line3d.scad>;
include <polyline3d.scad>;
include <function_grapher.scad>;
points = [
[[0, 0, 1], [1, 0, 2], [2, 0, 2], [3, 0, 3]],
[[0, 1, 1], [1, 1, 4], [2, 1, 0], [3, 1, 3]],
[[0, 2, 1], [1, 2, 3], [2, 2, 1], [3, 2, 3]],
[[0, 3, 1], [1, 3, 3], [2, 3, 1], [3, 3, 3]]
];
thickness = 0.5;
function_grapher(points, thickness);
include <line3d.scad>;
include <polyline3d.scad>;
include <function_grapher.scad>;
function f(x, y) =
30 * (
cos(sqrt(pow(x, 2) + pow(y, 2))) +
cos(3 * sqrt(pow(x, 2) + pow(y, 2)))
);
thickness = 2;
min_value = -200;
max_value = 200;
resolution = 10;
points = [
for(y = [min_value:resolution:max_value])
[
for(x = [min_value:resolution:max_value])
[x, y, f(x, y)]
]
];
function_grapher(points, thickness);
include <line3d.scad>;
include <polyline3d.scad>;
include <function_grapher.scad>;
function f(x, y) =
30 * (
cos(sqrt(pow(x, 2) + pow(y, 2))) +
cos(3 * sqrt(pow(x, 2) + pow(y, 2)))
);
thickness = 2;
min_value = -200;
max_value = 200;
resolution = 10;
style = "LINES";
points = [
for(y = [min_value:resolution:max_value])
[
for(x = [min_value:resolution:max_value])
[x, y, f(x, y)]
]
];
function_grapher(points, thickness, style);
include <line3d.scad>;
include <polyline3d.scad>;
include <function_grapher.scad>;
function f(x, y) =
30 * (
cos(sqrt(pow(x, 2) + pow(y, 2))) +
cos(3 * sqrt(pow(x, 2) + pow(y, 2)))
);
thickness = 2;
min_value = -200;
max_value = 200;
resolution = 10;
style = "LINES";
slicing = "BACK_SLASH";
points = [
for(y = [min_value:resolution:max_value])
[
for(x = [min_value:resolution:max_value])
[x, y, f(x, y)]
]
];
function_grapher(points, thickness, style, slicing);