mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-30 01:40:02 +02:00
re-design scales
This commit is contained in:
@@ -6,41 +6,16 @@ use <util/dedup.scad>;
|
|||||||
use <turtle/lsystem3.scad>;
|
use <turtle/lsystem3.scad>;
|
||||||
use <curve.scad>;
|
use <curve.scad>;
|
||||||
use <dragon_head.scad>;
|
use <dragon_head.scad>;
|
||||||
|
use <dragon_scales.scad>;
|
||||||
|
|
||||||
hilbert_dragon();
|
hilbert_dragon();
|
||||||
|
|
||||||
module hilbert_dragon() {
|
module hilbert_dragon() {
|
||||||
module scales(ang, leng, radius, height, thickness) {
|
module one_segment(body_r, body_fn, one_scale_data) {
|
||||||
module one_scale() {
|
|
||||||
rotate([0, ang, 0])
|
|
||||||
shear(sx = [0, -1.5])
|
|
||||||
linear_extrude(thickness, center = true)
|
|
||||||
scale([leng, 1.6])
|
|
||||||
circle(1, $fn = 4);
|
|
||||||
}
|
|
||||||
|
|
||||||
for(a = [0:45:315]) {
|
|
||||||
hull() {
|
|
||||||
rotate(a)
|
|
||||||
translate([radius, 0, height])
|
|
||||||
one_scale();
|
|
||||||
|
|
||||||
rotate(a + 15)
|
|
||||||
translate([radius, 0, height + 1.75])
|
|
||||||
one_scale();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module one_segment() {
|
|
||||||
// scales
|
// scales
|
||||||
scale([1, 0.8, 1]) union() {
|
//scale([1, 1, 1.25])
|
||||||
scales(60, 4, 5, 0, 1.5);
|
rotate([-90, 0, 0])
|
||||||
scales(75, 2.5, 5, -4, 1.25);
|
dragon_body_scales(body_r, body_fn, one_scale_data);
|
||||||
scales(100, 1.25, 4.5, -7, 1);
|
|
||||||
scales(110, 1.25, 3, -9, 1);
|
|
||||||
// scales(120, 2.5, 2, -9, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// dorsal fin
|
// dorsal fin
|
||||||
translate([0, 4, -1.5])
|
translate([0, 4, -1.5])
|
||||||
@@ -49,19 +24,16 @@ module hilbert_dragon() {
|
|||||||
linear_extrude(5, scale = 0.15)
|
linear_extrude(5, scale = 0.15)
|
||||||
square([2.5, 4], center = true);
|
square([2.5, 4], center = true);
|
||||||
|
|
||||||
hull() {
|
|
||||||
// belly
|
|
||||||
translate([0, -2.5, 1])
|
translate([0, -2.5, 1])
|
||||||
rotate([-10, 0, 0])
|
rotate([-10, 0, 0])
|
||||||
scale([1.1, 0.8, 1.25])
|
scale([1.1, 0.8, 1.25])
|
||||||
sphere(5.8, $fn = 8);
|
sphere(body_r * 1.075, $fn = 8);
|
||||||
|
}
|
||||||
|
|
||||||
translate([0, 0, -1.65])
|
body_r = 5;
|
||||||
rotate([-5, 0, 0])
|
body_fn = 12;
|
||||||
scale([1, 0.8, 1.6])
|
scale_fn = 5;
|
||||||
sphere(5.5, $fn = 8);
|
scale_tilt_a = -3;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
lines = hilbert_curve();
|
lines = hilbert_curve();
|
||||||
hilbert_path = dedup(
|
hilbert_path = dedup(
|
||||||
@@ -69,21 +41,23 @@ module hilbert_dragon() {
|
|||||||
[for(line = lines) line[0]],
|
[for(line = lines) line[0]],
|
||||||
[lines[len(lines) - 1][1]])
|
[lines[len(lines) - 1][1]])
|
||||||
);
|
);
|
||||||
smoothed_hilbert_path = bezier_smooth(hilbert_path, 0.45, t_step = 0.2);
|
smoothed_hilbert_path = bezier_smooth(hilbert_path, 0.45, t_step = 0.15);
|
||||||
|
|
||||||
dragon_body_path = reverse([for(i = [1:len(smoothed_hilbert_path) - 2]) smoothed_hilbert_path[i]]);
|
dragon_body_path = reverse([for(i = [1:len(smoothed_hilbert_path) - 2]) smoothed_hilbert_path[i]]);
|
||||||
|
|
||||||
|
one_body_scale_data = one_body_scale(body_r, body_fn, scale_fn, scale_tilt_a);
|
||||||
|
|
||||||
along_with(dragon_body_path, scale = 0.6)
|
along_with(dragon_body_path, scale = 0.6)
|
||||||
rotate([90, 0, 0])
|
rotate([90, 0, 0])
|
||||||
scale(0.035)
|
scale(0.035)
|
||||||
one_segment();
|
one_segment(body_r, body_fn, one_body_scale_data);
|
||||||
|
|
||||||
// tail
|
// tail
|
||||||
translate([0, 0, -0.62])
|
translate([0, 0, -0.62])
|
||||||
rotate(-5)
|
rotate(-5)
|
||||||
scale(0.0285)
|
scale(0.0285)
|
||||||
mirror([0, 0, 1])
|
mirror([0, 0, 1])
|
||||||
scales(120, 2.5, 2, -9, 1);
|
tail_scales(120, 2.5, 2, -9, 1, $fn = 4);
|
||||||
|
|
||||||
translate([0, 0, -2.5])
|
translate([0, 0, -2.5])
|
||||||
scale(0.035)
|
scale(0.035)
|
||||||
|
Reference in New Issue
Block a user