mirror of https://github.com/hannobraun/Fornjot
Add `BuildSolid::tetrahedron`
This commit is contained in:
parent
01ba108aa2
commit
697083be4f
|
@ -10,6 +10,6 @@ pub use self::{
|
|||
edge::BuildHalfEdge,
|
||||
face::{BuildFace, Polygon},
|
||||
shell::{BuildShell, TetrahedronShell},
|
||||
solid::BuildSolid,
|
||||
solid::{BuildSolid, Tetrahedron},
|
||||
surface::BuildSurface,
|
||||
};
|
||||
|
|
|
@ -1,4 +1,13 @@
|
|||
use crate::objects::Solid;
|
||||
use fj_math::Point;
|
||||
|
||||
use crate::{
|
||||
objects::{Shell, Solid},
|
||||
operations::{
|
||||
build::shell::BuildShell, Insert, IsInsertedYes, TetrahedronShell,
|
||||
UpdateSolid,
|
||||
},
|
||||
services::Services,
|
||||
};
|
||||
|
||||
/// Build a [`Solid`]
|
||||
pub trait BuildSolid {
|
||||
|
@ -6,6 +15,30 @@ pub trait BuildSolid {
|
|||
fn empty() -> Solid {
|
||||
Solid::new([])
|
||||
}
|
||||
|
||||
/// Build a tetrahedron from the provided points
|
||||
///
|
||||
/// See [`BuildShell::tetrahedron`] for more information.
|
||||
fn tetrahedron(
|
||||
points: [impl Into<Point<3>>; 4],
|
||||
services: &mut Services,
|
||||
) -> Tetrahedron {
|
||||
let shell = Shell::tetrahedron(points, services).insert(services);
|
||||
let solid = Solid::empty().add_shell(shell.shell.clone());
|
||||
|
||||
Tetrahedron { solid, shell }
|
||||
}
|
||||
}
|
||||
|
||||
impl BuildSolid for Solid {}
|
||||
|
||||
/// A tetrahedron
|
||||
///
|
||||
/// Returned by [`BuildSolid::tetrahedron`].
|
||||
pub struct Tetrahedron {
|
||||
/// The solid that forms the tetrahedron
|
||||
pub solid: Solid,
|
||||
|
||||
/// The shell of the tetrahedron
|
||||
pub shell: TetrahedronShell<IsInsertedYes>,
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ mod update;
|
|||
pub use self::{
|
||||
build::{
|
||||
BuildCycle, BuildFace, BuildHalfEdge, BuildShell, BuildSolid,
|
||||
BuildSurface, Polygon, TetrahedronShell,
|
||||
BuildSurface, Polygon, Tetrahedron, TetrahedronShell,
|
||||
},
|
||||
insert::{Insert, IsInserted, IsInsertedNo, IsInsertedYes},
|
||||
join::JoinCycle,
|
||||
|
|
Loading…
Reference in New Issue