Board  0.9.5
examples/fern.cpp
#include <cstdlib>
#include "Board.h"
using namespace LibBoard;
void drawFern(Board & b, unsigned int iterations)
{
double x = 0.0;
double y = 0.0;
double nx, ny;
double radius = 2.0;
while (iterations--) {
b.drawCircle(200 * x, 200 * y, radius);
double g = rand() / static_cast<double>(RAND_MAX);
if (g < .01) { // Stem
nx = 0;
ny = 0.16 * y;
} else if (g < .08) { // F3 : mirror & flip
nx = 0.2 * x - 0.26 * y;
ny = 0.23 * x + 0.22 * y + 1.6;
} else if (g < 0.15) { // F4 : mirror (no flip)
nx = -0.15 * x + 0.28 * y;
ny = 0.26 * x + 0.24 * y + 0.44;
} else { // F2 : mirror & scale
radius /= 2.0;
nx = 0.85 * x + 0.04 * y;
ny = -0.04 * x + 0.85 * y + 1.6;
}
x = nx;
y = ny;
}
}
int main(int, char *[])
{
srand(static_cast<unsigned int>(time(nullptr)));
Board board;
board.setLineWidth(0.0);
board.setPenColor(Color::Null);
board.setFillColor(Color::Red);
drawFern(board, 1 << 17);
board.saveEPS("fern.eps", Board::A4);
board.saveSVG("fern.svg", Board::A4);
}
LibBoard::Board::saveEPS
void saveEPS(std::ostream &out, PageSize size=Board::BoundingBox, double margin=0.0, Unit unit=UMillimeter, const std::string &title=std::string()) const
Definition: Board.cpp:532
LibBoard::Board::setFillColor
Board & setFillColor(const Color &color)
Definition: Board.cpp:268
LibBoard::Board::disableLineWidthScaling
static void disableLineWidthScaling()
Definition: Board.cpp:139
LibBoard::Board::saveSVG
void saveSVG(const char *filename, PageSize size=Board::BoundingBox, double margin=0.0, Unit unit=UMillimeter) const
Definition: Board.cpp:758
LibBoard::Board::drawCircle
void drawCircle(double x, double y, double radius)
Definition: Board.cpp:347
Board.h
Declaration of the Board class.
LibBoard::Board
Class for EPS, FIG or SVG drawings.
Definition: Board.h:62
LibBoard::Board::setPenColor
Board & setPenColor(const Color &color)
Definition: Board.cpp:244
LibBoard::Board::setLineWidth
Board & setLineWidth(double width)
Definition: Board.cpp:274