Refactor to reduce redundancy

This commit is contained in:
Hanno Braun 2024-01-30 11:12:21 +01:00
parent 173d028f87
commit 3c7014724e

View File

@ -1,7 +1,9 @@
use fj::{ use fj::{
core::{ core::{
objects::Solid, objects::Solid,
operations::{merge::Merge, transform::TransformObject}, operations::{
build::BuildSolid, merge::Merge, transform::TransformObject,
},
services::Services, services::Services,
}, },
math::{Scalar, Vector}, math::{Scalar, Vector},
@ -16,25 +18,25 @@ pub fn model(services: &mut Services) -> Solid {
let axis = Vector::from([1., 1., 1.]).normalize(); let axis = Vector::from([1., 1., 1.]).normalize();
let angle_rad = Scalar::PI / 6.; let angle_rad = Scalar::PI / 6.;
let cuboid = cuboid::model([1., 2., 3.], services) let models = [
.translate(offset * 1., services) cuboid::model([1., 2., 3.], services),
.rotate(axis * angle_rad * 1., services); spacer::model(2., 1., 1., services),
let spacer = spacer::model(2., 1., 1., services) star::model(5, 2., 1., 1., services),
.translate(offset * 2., services) split::model(1., 0.2, services),
.rotate(axis * angle_rad * 2., services); holes::model(0.5, services),
let star = star::model(5, 2., 1., 1., services) ];
.translate(offset * 3., services)
.rotate(axis * angle_rad * 3., services);
let split = split::model(1., 0.2, services)
.translate(offset * 4., services)
.rotate(axis * angle_rad * 4., services);
let holes = holes::model(0.5, services)
.translate(offset * 5., services)
.rotate(axis * angle_rad * 5., services);
cuboid let mut all = Solid::empty();
.merge(&spacer)
.merge(&star) for (i, model) in models.into_iter().enumerate() {
.merge(&split) let f = i as f64;
.merge(&holes)
let model = model
.translate(offset * f, services)
.rotate(axis * angle_rad * f, services);
all = all.merge(&model);
}
all
} }