new: math_logstar_stops, replaces: PNLTRI.Math.log2, math_logstar_n,
math_NH
math_logstar_stops inlined into trapezoide_polygon, but remains for
testing
out from inside splitPolygonChain:
- mapAngle, vectorLength, dotProd, crossProd -> PNLTRI.Math
- get_out_segment_next_right_of
compare_pts_yx: PolygonData -> PNLTRI.Math
rootFrom, rootTo, is_inserted -> segment at creation
Closure Compiler with --compilation_level=ADVANCED_OPTIMIZATIONS => new: PnltriApi.js
Benchmark.js tests, initial version
removed randomness from benchmark
PNLTRI.Math added to API for performance tests without randomness
new: test_Trapezoid
test_trap_splitOffLower -> test_Trapezoid
refactored, extended: test_splitNodeAtPoint1,2, test_ptNode,
test_add_segment_1..4
handling segment endpoints touching other segments
ptNode: additional logic for endpoints touching other segments (new tests:
test_ptNode_touching)
two_trap_below: additional logic for segments touching other endpoints
(new tests: test_add_segment_touching_1)
new: test_add_segment_basic_5
is_left_of: recognizes co-linear horizontal segments
ptNode: parameter changed from points to segment, result assigned to
rootXXX
new: segNodes, test_ptNode_colinear_1, test_ptNode_colinear_2
refactored, renamed: test_add_segment_*
addVertexChain: suppresses sequences of co-linear vertices by skipping the
intermediate ones
new: test_addPolygonChain_zero_length, test_addPolygonChain_colinear_real,
test_addPolygonChain_colinear_false
test_add_segment_special_5 deactivated
ptNode: removed bug concerning co-linear segments
add_segment: additional check for robustness
new test polygon: colinear#1
new: test_add_segment_special_7, compute_Triangulator
triangulate_monotone_polygon: removed bug concerning co-linear reversal of
segments
new: test_triangulate_monotone_polygon_colinear,
test_ptNode_colinear_reversal, tests for co-linear vertical lines
removed: test_add_segment_special_5
test_triangulate_monotone_polygon_colinear: added missing test cases
new: check_one_ptNode_case, extracted from ptNode tests
test_ptNode_colinear_reversal: added missing test cases (errors not yet
solved
ptNode: implemented handling of co-linear connected lines
is_left_of: removed bug concerning co-linear connected lines
test_add_segment_special_4: Test B removed
get_out_segment_next_right_of: improvement for co-linear segments (TODO:
complete?)
unique_monotone_chains_max: robust handling of defective monoChains with
duplicate points
new: test_equal_next_right_of
new: check_monoChains_noDoublePts, check_normedMonoChains_consistency
new: polygons_2_vertexIndexLists, monoChainStarts_2_vertexIndexLists
new test data: colinear#2
test_unique_monotone_chains_max: new test case with buggy monoChain
Created visibility map from trapezoids - not yet used
new: create_visibility_map, test_visibility_map,
test_monotonate_trapezoids2
MonoTriangulator: bug fixed for polygons with only angles of 0 and 180 degrees (happen with co-linear segments)
get_out_segment_next_right_of: temporary fix for test cases colinear#2/3
(works not always due to random sequence)
ptNode: handles co-linear horizontal reversals
two_trap_below: refactored
new test data: "colinear#3", touching co-linear horizontal lines
new: test_ptsCrossProd, test_add_segment_special_7
MonoSplitter: replaced old mechanism by new one based on the visibility
map created from the trapezoids
does not rely on get_out_segment_next_right_of() anymore for ordering the
outSegs of a vertex CW
Refactoring: removed all traces of old MonoSplitter algorithm and
shortened new algorithm
removed: doSplit, alyTrap, vectorLength, dotProd, crossProd, mapAngle,
find_first_inside, createMonoSegment, newMonoChain,
get_out_segment_next_right_of, splitPolygonChain,
normalize_monotone_chains, alyTrap_check, mock*, test_TL_BL...,
test_monotonate_trapezoids2, test_mapAngle, check_monoChains_noDoublePts,
checkMonoChainVertexIDs, check_vertexChain_monoChainDoubleLinks,
test_vertices_monoChain, test_splitPolygonChain*, test_equal_next_right_of
new: nbVertices, appendDiagonalsEntry, nbMonoSubPolys,
copyMonoChainsFromSegments, get_visibilityMap
create_mono_chains: MonoSplitter -> PolygonData
unique_monotone_chains_max: extracts monochains from all segments not just
from designated start segments