mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-13 18:24:28 +02:00
support 3D line
This commit is contained in:
@@ -3,17 +3,19 @@ use <../../util/sum.scad>;
|
|||||||
|
|
||||||
ZERO_VT = [0, 0];
|
ZERO_VT = [0, 0];
|
||||||
|
|
||||||
|
ZERO_VTS = [undef, undef, [0, 0], [0, 0, 0]];
|
||||||
|
|
||||||
function limit(vt, magnitude) =
|
function limit(vt, magnitude) =
|
||||||
let(m = norm(vt))
|
let(m = norm(vt))
|
||||||
m > magnitude ? vt / m * magnitude : vt;
|
m > magnitude ? vt / m * magnitude : vt;
|
||||||
|
|
||||||
function setMagnitude(vt, magnitude) = vt == ZERO_VT ? vt : unit_vector(vt) * magnitude;
|
function setMagnitude(vt, magnitude) = vt == ZERO_VTS[len(vt)] ? vt : unit_vector(vt) * magnitude;
|
||||||
|
|
||||||
// node
|
// node
|
||||||
function node(position, option) = [
|
function node(position, option) = [
|
||||||
position, // position
|
position, // position
|
||||||
rands(0, 1, 2), // velocity
|
rands(0, 1, len(position)), // velocity
|
||||||
option // option
|
option // option
|
||||||
];
|
];
|
||||||
|
|
||||||
function position_of(node) = node[0];
|
function position_of(node) = node[0];
|
||||||
@@ -36,7 +38,7 @@ function seperationFrom(node, other) =
|
|||||||
v = position_of(node) - position_of(other),
|
v = position_of(node) - position_of(other),
|
||||||
dist = norm(v)
|
dist = norm(v)
|
||||||
)
|
)
|
||||||
dist < separationDistance_of(node) ? v / dist : ZERO_VT;
|
dist < separationDistance_of(node) ? v / dist : ZERO_VTS[len(v)];
|
||||||
|
|
||||||
function applyForceTo(node, seperation, cohesion) =
|
function applyForceTo(node, seperation, cohesion) =
|
||||||
let(
|
let(
|
||||||
@@ -88,6 +90,7 @@ function updateAllSeperation(allSeperation, allSeperationFrom_i_1) =
|
|||||||
];
|
];
|
||||||
|
|
||||||
function differentiate(nodes, leng) =
|
function differentiate(nodes, leng) =
|
||||||
|
let(ZERO_VT = ZERO_VTS[len(position_of(nodes[0]))])
|
||||||
[
|
[
|
||||||
for(i = 0,
|
for(i = 0,
|
||||||
j = 1,
|
j = 1,
|
||||||
|
@@ -1,9 +1,9 @@
|
|||||||
use <_impl/_differential_line_growth.scad>;
|
use <_impl/_differential_line_growth.scad>;
|
||||||
|
|
||||||
function differential_line_growth(init_shape, option, times) =
|
function differential_line_growth(points, option, times) =
|
||||||
let(
|
let(
|
||||||
init_nodes = [
|
init_nodes = [
|
||||||
for(p = init_shape)
|
for(p = points)
|
||||||
node(p, option)
|
node(p, option)
|
||||||
],
|
],
|
||||||
nodes_lt = [
|
nodes_lt = [
|
||||||
|
Reference in New Issue
Block a user