Provide surface to cycle transform implementation

This commit is contained in:
Hanno Braun 2024-06-14 21:14:34 +02:00
parent 258fb03e7a
commit 5369be268b
2 changed files with 9 additions and 7 deletions

View File

@ -1,12 +1,15 @@
use fj_math::Transform; use fj_math::Transform;
use crate::{ use crate::{
operations::insert::Insert, storage::Handle, topology::Cycle, Core, operations::insert::Insert,
storage::Handle,
topology::{Cycle, Surface},
Core,
}; };
use super::{TransformCache, TransformObject}; use super::{TransformCache, TransformObject};
impl TransformObject for &Handle<Cycle> { impl TransformObject for (&Handle<Cycle>, &Handle<Surface>) {
type Transformed = Handle<Cycle>; type Transformed = Handle<Cycle>;
fn transform_with_cache( fn transform_with_cache(
@ -15,7 +18,7 @@ impl TransformObject for &Handle<Cycle> {
core: &mut Core, core: &mut Core,
cache: &mut TransformCache, cache: &mut TransformCache,
) -> Self::Transformed { ) -> Self::Transformed {
let cycle = self; let (cycle, _) = self;
let half_edges = cycle.half_edges().iter().map(|half_edge| { let half_edges = cycle.half_edges().iter().map(|half_edge| {
half_edge half_edge

View File

@ -16,13 +16,12 @@ impl TransformObject for (&Handle<Region>, &Handle<Surface>) {
core: &mut Core, core: &mut Core,
cache: &mut super::TransformCache, cache: &mut super::TransformCache,
) -> Self::Transformed { ) -> Self::Transformed {
let (region, _) = self; let (region, surface) = self;
let exterior = region let exterior = (region.exterior(), surface)
.exterior()
.transform_with_cache(transform, core, cache); .transform_with_cache(transform, core, cache);
let interiors = region.interiors().iter().map(|interior| { let interiors = region.interiors().iter().map(|interior| {
interior.transform_with_cache(transform, core, cache) (interior, surface).transform_with_cache(transform, core, cache)
}); });
Region::new(exterior, interiors).insert(core) Region::new(exterior, interiors).insert(core)