/* Hyperbolic Tessellations Copyright (C) 2007 Dmitry Brant http://dmitrybrant.com Based largely on code from http://www.plunk.org/~hatch/HyperbolicApplet/ */ //--------------------------------------------------------------------------- #ifndef hyperbolicdrawH #define hyperbolicdrawH #include "mycomplex.h" #include "myvector.h" #include "mathfuncs.h" #include "hyperbolicutils.h" #include "mygraphics.h" #include "schwarzpolygons.h" typedef struct _TessellationSettings{ int hyperbolicModel; int maxLevels; int maxIsometries; bool drawPrimal, drawDual, drawSnub, drawBoundary; int primalColor, dualColor, snubColor, boundaryColor; int backColor; int snubParity; bool doCurveLines; bool doRemoveDups; bool doRandomJitter; bool doAlternateDraw; bool showVertexLabels; bool showSegmentLabels; bool drawGrid; bool drawSchwarzPolygon; bool fadeOutColors; bool drawTriangle1; bool drawTriangle2; bool drawExperimental; }TessellationSettings; void DrawLine2fPoincare(MyGraphics* mg, complex& x, complex& y, double tolerance, TessellationSettings* settings); void DrawTiling(MyGraphics* mg, Vector& isometries, Vector& localVerts, int nSegments, Vector< Complex >& segments, int** segmentColors, // can be null [nsegments][3] bool floodFill, double tolerance, TessellationSettings* settings); void DrawOmnitruncatedTiling(MyGraphics* mg, TessellationSettings* settings, Isometry& F0, int p, int q, Vector& wythoffCoeffs, Isometry& return_smallestIsometry, PickableSchwarzPolygon& return_pickableSchwarz); void DrawUniformTiling(MyGraphics* mg, TessellationSettings* settings, Isometry& F0, Vector& pp, int q, Vector& backEdgeInds, Vector& wythoffCoeffs, Isometry& return_smallestIsometry, PickableSchwarzPolygon& return_pickableSchwarz); //--------------------------------------------------------------------------- #endif