1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
use super::{Curve, Surface};
use crate::{Float, Point3};

/// Sweep surface is created by moving a section curve along a path curve.
#[derive(Debug)]
pub struct SweepSurface<P: Curve, S: Curve> {
    pub path: P,
    pub section: S,
}

impl<P: Curve, S: Curve> Surface for SweepSurface<P, S> {
    fn get_point(&self, p: Float, s: Float) -> Point3 {
        self.path.get_point(p) + self.section.get_point(s)
    }
}