I am getting computation errors.  What should I do?
    
      Programs may crash if (1) the robustness constant ε is chosen
      poorly, or (2) the environment model is not ε-valid (see answer to
      next question). Before reporting a bug, try varying ε by a few
      orders of magnitude in both directions or checking evironment
      ε-validity using the
      Environment::is_valid method. Note ε should never be
      set to 0.0 except when performing certain debugging procedures on the
      VisiLibity code itself. To start, try setting ε to a number a few
      orders of magnitude smaller than the smallest feature in the environment.
      For example, if the closest distance between any vertices is 0.01, try
      double epsilon = 0.0000001;. This means you must include an
      ε in all function calls, i.e., do not use the default argument
      ε=0.0. For example, you need to add ε at
      Visibility_Polygon(observer, environment, epsilon).
    
  
  
  
     Will VisiLibity work for polygonal environments where the edges of
    distinct polygons intersect?
    
      No, VisiLibity1 is not meant to operate on environments where edges of
      distinct polygons intersect. For correctness of computation, in addition to
      choosing suitable ε, the environment must be
      ε-valid. This can be checked using the
      Environment::is_valid() method. An environment is ε-valid if none of
      its outer boundary or holes intersect each other, there is a distance at
      least ε between any features (vertices and edges), and there can be
      no redundant vertices (e.g. don't list the first vertex redundantly also as
      the last) in the polygon vertex lists.
    
    
    
      If your environment is not ε-valid and you want VisiLibity to work
      for your application, then you must perform preprocessing to enforce
      ε-validity. We may remove the ε-validity precondition in a
      future version of VisiLibity.
    
  
  
  
    Should I cache a Visibility_Graph if I'm performing many
    shortest path queries in the same Environment?
    Yes. Here's how:
    
    
// Define a small epsilon. This is very important, otherwise there are
// robustness/degeneracy problems.
double epsilon = 0.000000001;
// Construct environment.
VisiLibity::Environment environment(filename);
// Construct the visibility graph.
VisiLibity::Visibility_Graph visibility_graph(environment, epsilon);
// Make path queries.
Polyline path = environment.shortest_path(startpoint, endpoint, visibility_graph, epsilon);
    
  
  
  
    I am unable to compile VisiLibity under Microsoft Windows. What should I
    do?
      VisiLibity1 uses definitions which do not exist in the Microsoft Visual Studio
      compilers. To add these definitions, uncomment these lines in the header
      visilibity.hpp.
      
//Uncomment these lines when compiling under
//Microsoft Visual Studio
/*
#include<limits>
#define NAN std::numeric_limits<double>::quiet_NaN()
#define INFINITY std::numeric_limits<double>::infinity()
#define M_PI 3.141592653589793238462643
#define and &&
#define or ||
*/
      
      
      Alternatively, you could get a Gnu compiler working on your machine.
      Some helpful hints on getting a Gnu complier running on a Windows
      machine can be found under Notes on Matlab
      Interface under Windows.
  
  
  
     How do I make VisiLibity work on a 64-bit machine?
    To compile VisiLibity on a pure 64-bit system, add -fPIC to the
    CXXFLAGS in the makefile. Also, if Matlab does not link to the
    correct libraries, try changing the symlinks in
    /usr/local/MATLAB/R2010b/sys/os/glnxa64/ to the correct ones in
    /usr/lib/.