rcgal 0.2.2

Rust Computational Geometry Algorithms Library.
Documentation
use crate::{
    kernel::{
        arc_segment_2::ArcSegment2 as KernelArcSegment2, segment_2::Segment2,
        util_enum::Segment2Type,
    },
    wasm::kernel::{circle_segment_2::CircleSegment2, point_2::Point2},
};
use wasm_bindgen::prelude::*;

#[wasm_bindgen]
#[derive(Debug, Clone, Copy)]
pub struct ArcSegment2 {
    #[wasm_bindgen(skip)]
    pub kernel_arc_segment_2: KernelArcSegment2<f64>,
}

#[wasm_bindgen]
impl ArcSegment2 {
    #[wasm_bindgen(constructor)]
    pub fn new(support: CircleSegment2, source_radian: f64, target_radian: f64) -> Self {
        Self {
            kernel_arc_segment_2: KernelArcSegment2::new(
                support.kernel_circle_segment_2,
                source_radian,
                target_radian,
            ),
        }
    }

    pub fn segment_type(&self) -> Segment2Type {
        self.kernel_arc_segment_2.segment_type()
    }

    pub fn source(&self) -> Point2 {
        Point2 {
            kernel_point_2: self.kernel_arc_segment_2.source(),
        }
    }

    pub fn source_radian(&self) -> f64 {
        self.kernel_arc_segment_2.source_radian()
    }

    pub fn target(&self) -> Point2 {
        Point2 {
            kernel_point_2: self.kernel_arc_segment_2.target(),
        }
    }

    pub fn target_radian(&self) -> f64 {
        self.kernel_arc_segment_2.target_radian()
    }

    pub fn center(&self) -> Point2 {
        Point2 {
            kernel_point_2: self.kernel_arc_segment_2.center(),
        }
    }

    pub fn radius(&self) -> f64 {
        self.kernel_arc_segment_2.radius()
    }
}