Sierpinski curve: Difference between revisions

m
Rust - reformatted with rustfmt
m (Minor edit)
m (Rust - reformatted with rustfmt)
Line 607:
 
struct SierpinskiCurve {
current_x : f64,
current_y : f64,
current_angle : i32,
line_length : f64,
}
 
impl SierpinskiCurve {
fn new(x : f64, y : f64, length : f64, angle : i32) -> SierpinskiCurve {
SierpinskiCurve {
current_x : x,
current_y : y,
current_angle : angle,
line_length : length,
}
}
fn rewrite(order : usize) -> String {
let mut str = String::from("F--XF--F--XF");
for _ in 0..order {
Line 629:
match ch {
'X' => tmp.push_str("XF+G+XF--F--XF+G+X"),
_ => tmp.push(ch),
}
}
Line 636:
str
}
fn execute(&mut self, order : usize) -> Path {
let mut data = Data::new().move_to((self.current_x, self.current_y));
for ch in SierpinskiCurve::rewrite(order).chars() {
Line 653:
.set("d", data)
}
fn draw_line(&mut self, data : Data) -> Data {
use std::f64::consts::PI;
let theta = (PI * self.current_angle as f64) / 180.0;
Line 660:
data.line_to((self.current_x, self.current_y))
}
fn turn(&mut self, angle : i32) {
self.current_angle = (self.current_angle + angle) % 360;
}
fn save(file : &str, size : usize, order : usize) -> std::io::Result<()> {
use svg::node::element::Rectangle;
let x = 5.0;
1,777

edits