package main import ( "fmt" ) func main() { // Raw line data: [][][]float32 where each line is [[x1, y1], [x2, y2]] lines := [][][]float32{ {{667, 2401}, {646, 2179}}, {{646, 2179}, {431, 2180}}, {{646, 2179}, {611, 1823}}, {{611, 1823}, {668, 1647}}, {{668, 1647}, {500, 1631}}, {{668, 1647}, {690, 1577}}, {{523, 1633}, {668, 1647}}, {{500, 1631}, {493, 1748}}, {{500, 1631}, {431, 1625}}, {{690, 1577}, {649, 1551}}, {{690, 1577}, {891, 1703}}, {{538, 1520}, {523, 1633}}, {{523, 1633}, {431, 1625}}, {{493, 1748}, {547, 1748}}, {{649, 1551}, {857, 1682}}, {{891, 1703}, {815, 1851}}, {{1082, 1823}, {891, 1703}}, {{547, 1748}, {560, 1842}}, {{857, 1682}, {920, 1540}}, {{857, 1682}, {1082, 1823}}, {{815, 1851}, {841, 2405}}, {{1046, 1954}, {1082, 1823}}, {{1140, 1617}, {1082, 1823}}, {{560, 1842}, {510, 1917}}, {{920, 1540}, {718, 1397}}, {{1038, 2173}, {1046, 1954}}, {{1193, 2007}, {1046, 1954}}, {{1195, 1276}, {1140, 1617}}, {{1140, 1617}, {1368, 1667}}, {{510, 1917}, {431, 1938}}, {{1031, 2410}, {1038, 2173}}, {{1174, 2182}, {1038, 2173}}, {{1337, 2031}, {1193, 2007}}, {{1193, 2007}, {1174, 2182}}, {{1258, 1258}, {1195, 1276}}, {{1195, 1276}, {890, 1365}}, {{1368, 1667}, {1342, 1980}}, {{1337, 2031}, {1368, 1667}}, {{1306, 2417}, {1337, 2031}}, {{1668, 1558}, {1258, 1258}}, {{1297, 1246}, {1258, 1258}}, {{890, 1365}, {753, 1319}}, {{1487, 2039}, {1342, 1980}}, {{1342, 1980}, {1306, 2417}}, {{1682, 1545}, {1668, 1558}}, {{1651, 1521}, {1297, 1246}}, {{1310, 1227}, {1297, 1246}}, {{1450, 2420}, {1487, 2039}}, {{1503, 1877}, {1487, 2039}}, {{1682, 1545}, {1651, 1521}}, {{1651, 1521}, {1889, 1402}}, {{1921, 1897}, {1503, 1877}}, {{431, 2394}, {667, 2401}}, {{667, 2401}, {841, 2405}}, {{841, 2405}, {1031, 2410}}, {{1031, 2410}, {1306, 2417}}, {{1306, 2417}, {1450, 2420}}, {{1450, 2420}, {1546, 2423}}, {{1546, 2423}, {1812, 2461}}, {{1812, 2461}, {1823, 2412}}, {{1823, 2412}, {1921, 1897}}, {{1921, 1897}, {1910, 1704}}, {{1910, 1704}, {1682, 1545}}, {{1682, 1545}, {1894, 1448}}, {{1894, 1448}, {1889, 1402}}, {{1889, 1402}, {1816, 784}}, {{1816, 784}, {1687, 787}}, {{1687, 787}, {1524, 777}}, {{1524, 777}, {1310, 1227}}, {{1310, 1227}, {883, 1324}}, {{883, 1324}, {775, 1271}}, {{775, 1271}, {753, 1319}}, {{753, 1319}, {718, 1397}}, {{718, 1397}, {649, 1551}}, {{649, 1551}, {538, 1520}}, {{538, 1520}, {431, 1490}}, {{431, 1490}, {431, 1625}}, {{431, 1625}, {431, 1938}}, {{431, 1938}, {431, 2180}}, {{431, 2180}, {431, 2394}}, } tolerance := float32(10.0) repaired := Repair(lines, tolerance) for _, line := range repaired { fmt.Printf("[[%f, %f], [%f, %f]]\n", line[0][0], line[0][1], line[1][0], line[1][1]) } }