mirror of
https://github.com/hannobraun/Fornjot
synced 2025-02-08 16:25:52 +00:00
Refactor to reduce redundancy
This commit is contained in:
parent
173d028f87
commit
3c7014724e
@ -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
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user