Sierpinski pentagon: Difference between revisions

m
Output is vertically centred, use polygon instead of path
m (Output is vertically centred, use polygon instead of path)
m (Output is vertically centred, use polygon instead of path)
Line 1,141:
fn sierpinski_pentagon(mut document : svg::Document, mut x : f64, mut y : f64,
mut side : f64, order: usize) -> svg::Document {
use svg::node::element::PathPolygon;
use svg::node::element::path::Data;
use std::f64::consts::PI;
 
Line 1,150 ⟶ 1,149:
 
if order == 1 {
let mut datapoints = DataVec::new();
data = datapoints.move_topush((x, y));
for _ in 0..5 {
x += angle.cos() * side;
y -= angle.sin() * side;
angle += degrees72;
data = datapoints.line_topush((x, y));
}
datalet polygon = data.closePolygon::new();
let path = Path::new()
.set("fill", "blue")
.set("stroke", "black")
.set("stroke-width", "1")
.set("dpoints", datapoints);
document = document.add(pathpolygon);
} else {
side *= scale_factor;
Line 1,186 ⟶ 1,184:
let radius = (size as f64)/2.0 - 2.0 * margin;
let side = radius * (0.2 * PI).sin() * 2.0;
let height = side * ((0.2 * PI).sin() + (0.4 * PI).sin());
let x = (size as f64)/2.0;
let y = 3.0(size *as marginf64 - height)/2.0;
 
let rect = Rectangle::new()
1,777

edits