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

View File

@ -16,13 +16,12 @@ impl TransformObject for (&Handle<Region>, &Handle<Surface>) {
core: &mut Core,
cache: &mut super::TransformCache,
) -> Self::Transformed {
let (region, _) = self;
let (region, surface) = self;
let exterior = region
.exterior()
let exterior = (region.exterior(), surface)
.transform_with_cache(transform, core, cache);
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)