use crate::prelude::*;
use nalgebra::{Point2, Transform2};
#[derive(Default, Debug, Clone, PartialEq, Shape)]
pub struct Triangle {
#[local_transform]
pub local_transform: Transform2<f32>,
pub width_x_axis: f32,
pub size_axis_angle: f32,
pub angle: f32,
}
impl From<Triangle> for Curve {
fn from(
Triangle {
local_transform,
width_x_axis,
size_axis_angle,
angle,
}: Triangle,
) -> Self {
let origin = Point2::new(0., 0.); let base = Point2::new(width_x_axis, 0.); let top = Point2::new(size_axis_angle * angle.cos(), size_axis_angle * angle.sin());
dessin! {
Curve(
transform = local_transform,
then = origin,
then = base,
then = top,
closed
)
}
}
}
impl From<Triangle> for Shape {
fn from(v: Triangle) -> Self {
Curve::from(v).into()
}
}