Board
0.9.6
examples/sierpinski.cpp
#include <
Board.h
>
using namespace
LibBoard
;
void
Sierpinksi
(
Polyline
& curve,
Point
p1,
Point
p2,
int
depth,
int
side)
{
if
(depth == 0) {
curve << p2;
}
else
{
Point
c = mix(p1, p2, 0.5);
Point
a = c.
rotated
(side * 60 * Board::Degree, p1);
Point
b = c.
rotated
(side * -60 * Board::Degree, p2);
Sierpinksi
(curve, p1, a, depth - 1, -1 * side);
Sierpinksi
(curve, a, b, depth - 1, side);
Sierpinksi
(curve, b, p2, depth - 1, -1 * side);
}
}
int
main
(
int
,
char
*[])
{
Board
board;
Point
a(0, 0);
Point
b(1000, 0);
Polyline
curve(Path::Open, Color::gray(10), Color::Null, 0.1, SolidStyle, RoundCap, RoundJoin);
curve << a;
const
int
recursions = 11;
Sierpinksi
(curve, a, b, recursions, 1);
board << curve;
Tools::notice << curve.vertexCount() <<
" points in the curve after "
<< recursions <<
" recursions.\n"
;
board.
saveFIG
(
"sierpinski.fig"
, 200, 200);
board.
saveEPS
(
"sierpinski.eps"
, PageSize::A4);
board.
scaleToWidth
(25, UseLineWidth);
board.
saveSVG
(
"sierpinski.svg"
, PageSize::BoundingBox, 0.0, Unit::Centimeter);
}
Board.h
Declaration of the Board class.
main
int main(int argc, char *argv[])
Definition
arithmetic.cpp:16
LibBoard
Definition
Board.h:55
Sierpinksi
void Sierpinksi(Polyline &curve, Point p1, Point p2, int depth, int side)
Definition
sierpinski.cpp:14
LibBoard::Board
Class for EPS, FIG or SVG drawings.
Definition
Board.h:61
LibBoard::Board::saveFIG
void saveFIG(const char *filename, PageSize size=PageSize::BoundingBox, double margin=0.0, Unit unit=Unit::Millimeter) const
Definition
Board.cpp:636
LibBoard::Board::saveEPS
void saveEPS(std::ostream &out, PageSize size=PageSize::BoundingBox, double margin=0.0, Unit unit=Unit::Millimeter, const std::string &title=std::string()) const
Definition
Board.cpp:539
LibBoard::Board::saveSVG
void saveSVG(const char *filename, PageSize size=PageSize::BoundingBox, double margin=0.0, Unit unit=Unit::Millimeter) const
Definition
Board.cpp:765
LibBoard::Point
Struct representing a 2D point.
Definition
Point.h:42
LibBoard::Point::rotated
Point rotated(double angle) const
Definition
Point.h:413
LibBoard::Polyline
A polygonal line described by a series of 2D points.
Definition
Polyline.h:38
LibBoard::Shape::scaleToWidth
Shape & scaleToWidth(double w, LineWidthFlag lineWidthFlag)
Definition
Shape.cpp:85
Generated by
1.9.7