Trait TurtleTrait

Source
pub trait TurtleTrait {
    // Required methods
    fn new() -> Turtle;
    fn fwd(self, distance: f64) -> Self;
    fn left(self, angle: f64) -> Self;
    fn right(self, angle: f64) -> Self;
    fn pen_up(self) -> Self;
    fn pen_down(self) -> Self;
    fn close(self) -> Self;
    fn push(self) -> Self;
    fn pop(self) -> Self;
    fn walk_lpath(self, lpath: &String, angle: f64, distance: f64) -> Self;
    fn to_multiline(&mut self) -> MultiLineString<f64>;
    fn to_polygon(&mut self) -> Result<Polygon<f64>, Error>;
}
Expand description

TurtleTrait provides turtle related functions for the Turtle struct.

Provides 2D turtle actions, and a stack-based history for drawing 2D graphics.

§Example

use geo_types::MultiLineString;
use aoer_plotty_rs::turtle::{Turtle, TurtleTrait, degrees};
let mline_string: MultiLineString<f64> = Turtle::new()
    .pen_down()
    .fwd(100.0)
    .right(degrees(90.0))
    .fwd(100.0)
    .right(degrees(90.0))
    .fwd(100.0)
    .right(degrees(90.0))
    .fwd(100.0)
    .right(degrees(90.0))
    .to_multiline();

Required Methods§

Source

fn new() -> Turtle

Source

fn fwd(self, distance: f64) -> Self

#fwd

Move forward @distance units (negative values are allowed)

Source

fn left(self, angle: f64) -> Self

#left

Turn left @angle radians

Source

fn right(self, angle: f64) -> Self

#right

Turn right @angle radians

Source

fn pen_up(self) -> Self

#pen_up

Lift the pen and discard the closing state

Source

fn pen_down(self) -> Self

#pen_down

Put the pen down so that we start drawing, and store the “start position” state for later closing the drawing.

Source

fn close(self) -> Self

#close

Automatically close the current line. Great for automagically closing Polygons.

Source

fn push(self) -> Self

#push

Pushes the current state onto the stack, including heading, position.

Source

fn pop(self) -> Self

#pop

Pops the state back to the previously crate::turtle::TurtleTrait::push’d state, but retains the line state so that we can backtrack and continue drawing.

Source

fn walk_lpath(self, lpath: &String, angle: f64, distance: f64) -> Self

§walk_lpath (Walk L-system Path)

Used to take an existing expanded l-system path (see crate::l_system::LSystem) for more information on the expansion syntax. Walks the L-system, performing movements, stack push/pop, and turns.

Source

fn to_multiline(&mut self) -> MultiLineString<f64>

§to_multiline

Takes the lines recorded in the Turtle state and returns a geo_types::MultiLineString

Source

fn to_polygon(&mut self) -> Result<Polygon<f64>, Error>

§to_polygon

Returns a geo_types::Polygon from the Turtle state. May return an error for turtles which have self-intersecting lines, or zero-volume polygons.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§