faster path intersects
Before ![]() (image error) Size: 10 KiB After ![]() (image error) Size: 10 KiB ![]() ![]() |
Before ![]() (image error) Size: 4.6 KiB After ![]() (image error) Size: 4.6 KiB ![]() ![]() |
Before ![]() (image error) Size: 5.9 KiB After ![]() (image error) Size: 5.9 KiB ![]() ![]() |
Before ![]() (image error) Size: 9.2 KiB After ![]() (image error) Size: 9.2 KiB ![]() ![]() |
Before ![]() (image error) Size: 20 KiB After ![]() (image error) Size: 20 KiB ![]() ![]() |
Before ![]() (image error) Size: 18 KiB After ![]() (image error) Size: 18 KiB ![]() ![]() |
Before ![]() (image error) Size: 42 KiB After ![]() (image error) Size: 42 KiB ![]() ![]() |
|
@ -1192,26 +1192,28 @@ proc computeCoverages(
|
||||||
|
|
||||||
# Do scanlines for this row
|
# Do scanlines for this row
|
||||||
let partitionIndex = partitioning.getIndexForY(y)
|
let partitionIndex = partitioning.getIndexForY(y)
|
||||||
var
|
var yLine = y.float32 + initialOffset - offset
|
||||||
yLine = y.float32 + initialOffset - offset
|
|
||||||
scanline = line(vec2(0, yLine), vec2(width, yLine))
|
|
||||||
for m in 0 ..< quality:
|
for m in 0 ..< quality:
|
||||||
yLine += offset
|
yLine += offset
|
||||||
scanline.a.y = yLine
|
|
||||||
scanline.b.y = yLine
|
|
||||||
numHits = 0
|
numHits = 0
|
||||||
for i in 0 ..< partitioning.partitions[partitionIndex].len: # Perf
|
for i in 0 ..< partitioning.partitions[partitionIndex].len: # Perf
|
||||||
let
|
let
|
||||||
segment = partitioning.partitions[partitionIndex][i][0]
|
segment = partitioning.partitions[partitionIndex][i][0]
|
||||||
winding = partitioning.partitions[partitionIndex][i][1]
|
winding = partitioning.partitions[partitionIndex][i][1]
|
||||||
if segment.at.y <= scanline.a.y and segment.to.y >= scanline.a.y:
|
if segment.at.y <= yLine and segment.to.y >= yLine:
|
||||||
var at: Vec2
|
let x =
|
||||||
if scanline.intersects(segment, at):
|
if segment.at.x - segment.to.x == 0:
|
||||||
if segment.to != at:
|
segment.at.x
|
||||||
if numHits == hits.len:
|
else:
|
||||||
hits.setLen(hits.len * 2)
|
let
|
||||||
hits[numHits] = (min(at.x, width), winding)
|
m = (segment.at.y - segment.to.y) / (segment.at.x - segment.to.x)
|
||||||
inc numHits
|
b = segment.at.y - m * segment.at.x
|
||||||
|
(yLine - b) / m
|
||||||
|
|
||||||
|
if numHits == hits.len:
|
||||||
|
hits.setLen(hits.len * 2)
|
||||||
|
hits[numHits] = (min(x, width), winding)
|
||||||
|
inc numHits
|
||||||
|
|
||||||
sort(hits, 0, numHits - 1)
|
sort(hits, 0, numHits - 1)
|
||||||
|
|
||||||
|
|
Before ![]() (image error) Size: 2.4 KiB After ![]() (image error) Size: 2.4 KiB ![]() ![]() |
Before ![]() (image error) Size: 3.6 KiB After ![]() (image error) Size: 3.6 KiB ![]() ![]() |
Before ![]() (image error) Size: 3.6 KiB After ![]() (image error) Size: 3.6 KiB ![]() ![]() |
Before ![]() (image error) Size: 3.6 KiB After ![]() (image error) Size: 3.6 KiB ![]() ![]() |
Before ![]() (image error) Size: 3.3 KiB After ![]() (image error) Size: 3.3 KiB ![]() ![]() |
Before ![]() (image error) Size: 2.3 KiB After ![]() (image error) Size: 2.3 KiB ![]() ![]() |
Before ![]() (image error) Size: 3.6 KiB After ![]() (image error) Size: 3.6 KiB ![]() ![]() |
Before ![]() (image error) Size: 2.3 KiB After ![]() (image error) Size: 2.3 KiB ![]() ![]() |
Before ![]() (image error) Size: 2.7 KiB After ![]() (image error) Size: 2.7 KiB ![]() ![]() |
Before ![]() (image error) Size: 6.9 KiB After ![]() (image error) Size: 6.9 KiB ![]() ![]() |
Before ![]() (image error) Size: 260 KiB After ![]() (image error) Size: 260 KiB ![]() ![]() |
Before ![]() (image error) Size: 9.3 KiB After ![]() (image error) Size: 9.4 KiB ![]() ![]() |
Before ![]() (image error) Size: 28 KiB After ![]() (image error) Size: 28 KiB ![]() ![]() |
Before ![]() (image error) Size: 24 KiB After ![]() (image error) Size: 24 KiB ![]() ![]() |
Before ![]() (image error) Size: 13 KiB After ![]() (image error) Size: 13 KiB ![]() ![]() |
Before ![]() (image error) Size: 32 KiB After ![]() (image error) Size: 32 KiB ![]() ![]() |
Before ![]() (image error) Size: 25 KiB After ![]() (image error) Size: 25 KiB ![]() ![]() |
Before ![]() (image error) Size: 3.4 KiB After ![]() (image error) Size: 3.4 KiB ![]() ![]() |
Before ![]() (image error) Size: 2.4 MiB After ![]() (image error) Size: 2.4 MiB ![]() ![]() |
Before ![]() (image error) Size: 280 KiB After ![]() (image error) Size: 280 KiB ![]() ![]() |
Before ![]() (image error) Size: 644 KiB After ![]() (image error) Size: 645 KiB ![]() ![]() |
Before ![]() (image error) Size: 783 KiB After ![]() (image error) Size: 783 KiB ![]() ![]() |
Before ![]() (image error) Size: 3.4 MiB After ![]() (image error) Size: 3.4 MiB ![]() ![]() |
Before ![]() (image error) Size: 358 KiB After ![]() (image error) Size: 358 KiB ![]() ![]() |
Before ![]() (image error) Size: 14 KiB After ![]() (image error) Size: 14 KiB ![]() ![]() |
Before ![]() (image error) Size: 29 KiB After ![]() (image error) Size: 29 KiB ![]() ![]() |
Before ![]() (image error) Size: 26 KiB After ![]() (image error) Size: 26 KiB ![]() ![]() |
Before ![]() (image error) Size: 24 KiB After ![]() (image error) Size: 24 KiB ![]() ![]() |
Before ![]() (image error) Size: 37 KiB After ![]() (image error) Size: 37 KiB ![]() ![]() |
Before ![]() (image error) Size: 31 KiB After ![]() (image error) Size: 31 KiB ![]() ![]() |
Before ![]() (image error) Size: 4 KiB After ![]() (image error) Size: 4 KiB ![]() ![]() |
Before ![]() (image error) Size: 1.4 MiB After ![]() (image error) Size: 1.4 MiB ![]() ![]() |
Before ![]() (image error) Size: 610 KiB After ![]() (image error) Size: 610 KiB ![]() ![]() |
Before ![]() (image error) Size: 519 KiB After ![]() (image error) Size: 519 KiB ![]() ![]() |
Before ![]() (image error) Size: 3.9 MiB After ![]() (image error) Size: 3.9 MiB ![]() ![]() |
Before ![]() (image error) Size: 43 KiB After ![]() (image error) Size: 43 KiB ![]() ![]() |
Before ![]() (image error) Size: 4.2 KiB After ![]() (image error) Size: 4.2 KiB ![]() ![]() |
Before ![]() (image error) Size: 3.7 KiB After ![]() (image error) Size: 3.7 KiB ![]() ![]() |
Before ![]() (image error) Size: 6.1 KiB After ![]() (image error) Size: 6.1 KiB ![]() ![]() |
Before ![]() (image error) Size: 15 KiB After ![]() (image error) Size: 15 KiB ![]() ![]() |
Before ![]() (image error) Size: 18 KiB After ![]() (image error) Size: 18 KiB ![]() ![]() |
Before ![]() (image error) Size: 15 KiB After ![]() (image error) Size: 15 KiB ![]() ![]() |
Before ![]() (image error) Size: 15 KiB After ![]() (image error) Size: 15 KiB ![]() ![]() |
Before ![]() (image error) Size: 16 KiB After ![]() (image error) Size: 16 KiB ![]() ![]() |
Before ![]() (image error) Size: 15 KiB After ![]() (image error) Size: 15 KiB ![]() ![]() |
Before ![]() (image error) Size: 33 KiB After ![]() (image error) Size: 33 KiB ![]() ![]() |
Before ![]() (image error) Size: 33 KiB After ![]() (image error) Size: 33 KiB ![]() ![]() |
Before ![]() (image error) Size: 31 KiB After ![]() (image error) Size: 31 KiB ![]() ![]() |
Before ![]() (image error) Size: 31 KiB After ![]() (image error) Size: 31 KiB ![]() ![]() |
Before ![]() (image error) Size: 32 KiB After ![]() (image error) Size: 32 KiB ![]() ![]() |
Before ![]() (image error) Size: 32 KiB After ![]() (image error) Size: 32 KiB ![]() ![]() |
Before ![]() (image error) Size: 6.5 KiB After ![]() (image error) Size: 6.5 KiB ![]() ![]() |
Before ![]() (image error) Size: 6.5 KiB After ![]() (image error) Size: 6.5 KiB ![]() ![]() |
Before ![]() (image error) Size: 7.5 KiB After ![]() (image error) Size: 7.5 KiB ![]() ![]() |
Before ![]() (image error) Size: 25 KiB After ![]() (image error) Size: 25 KiB ![]() ![]() |
Before ![]() (image error) Size: 25 KiB After ![]() (image error) Size: 25 KiB ![]() ![]() |
Before ![]() (image error) Size: 17 KiB After ![]() (image error) Size: 17 KiB ![]() ![]() |
Before ![]() (image error) Size: 20 KiB After ![]() (image error) Size: 20 KiB ![]() ![]() |
Before ![]() (image error) Size: 74 KiB After ![]() (image error) Size: 74 KiB ![]() ![]() |
Before ![]() (image error) Size: 74 KiB After ![]() (image error) Size: 74 KiB ![]() ![]() |
Before ![]() (image error) Size: 20 KiB After ![]() (image error) Size: 20 KiB ![]() ![]() |
Before ![]() (image error) Size: 74 KiB After ![]() (image error) Size: 74 KiB ![]() ![]() |
Before ![]() (image error) Size: 74 KiB After ![]() (image error) Size: 74 KiB ![]() ![]() |
Before ![]() (image error) Size: 19 KiB After ![]() (image error) Size: 19 KiB ![]() ![]() |
Before ![]() (image error) Size: 73 KiB After ![]() (image error) Size: 73 KiB ![]() ![]() |
Before ![]() (image error) Size: 73 KiB After ![]() (image error) Size: 73 KiB ![]() ![]() |
Before ![]() (image error) Size: 19 KiB After ![]() (image error) Size: 19 KiB ![]() ![]() |
Before ![]() (image error) Size: 72 KiB After ![]() (image error) Size: 72 KiB ![]() ![]() |
Before ![]() (image error) Size: 73 KiB After ![]() (image error) Size: 73 KiB ![]() ![]() |
Before ![]() (image error) Size: 19 KiB After ![]() (image error) Size: 19 KiB ![]() ![]() |
Before ![]() (image error) Size: 72 KiB After ![]() (image error) Size: 72 KiB ![]() ![]() |
Before ![]() (image error) Size: 73 KiB After ![]() (image error) Size: 73 KiB ![]() ![]() |
Before ![]() (image error) Size: 19 KiB After ![]() (image error) Size: 19 KiB ![]() ![]() |
Before ![]() (image error) Size: 72 KiB After ![]() (image error) Size: 72 KiB ![]() ![]() |
Before ![]() (image error) Size: 73 KiB After ![]() (image error) Size: 73 KiB ![]() ![]() |
Before ![]() (image error) Size: 20 KiB After ![]() (image error) Size: 20 KiB ![]() ![]() |
Before ![]() (image error) Size: 72 KiB After ![]() (image error) Size: 72 KiB ![]() ![]() |
Before ![]() (image error) Size: 73 KiB After ![]() (image error) Size: 73 KiB ![]() ![]() |
Before ![]() (image error) Size: 20 KiB After ![]() (image error) Size: 20 KiB ![]() ![]() |
Before ![]() (image error) Size: 72 KiB After ![]() (image error) Size: 72 KiB ![]() ![]() |
Before ![]() (image error) Size: 72 KiB After ![]() (image error) Size: 72 KiB ![]() ![]() |
Before ![]() (image error) Size: 22 KiB After ![]() (image error) Size: 22 KiB ![]() ![]() |
Before ![]() (image error) Size: 84 KiB After ![]() (image error) Size: 84 KiB ![]() ![]() |
Before ![]() (image error) Size: 85 KiB After ![]() (image error) Size: 85 KiB ![]() ![]() |
Before ![]() (image error) Size: 22 KiB After ![]() (image error) Size: 22 KiB ![]() ![]() |
Before ![]() (image error) Size: 85 KiB After ![]() (image error) Size: 85 KiB ![]() ![]() |
Before ![]() (image error) Size: 85 KiB After ![]() (image error) Size: 85 KiB ![]() ![]() |
Before ![]() (image error) Size: 30 KiB After ![]() (image error) Size: 30 KiB ![]() ![]() |
Before ![]() (image error) Size: 27 KiB After ![]() (image error) Size: 27 KiB ![]() ![]() |
Before ![]() (image error) Size: 27 KiB After ![]() (image error) Size: 27 KiB ![]() ![]() |
Before ![]() (image error) Size: 73 KiB After ![]() (image error) Size: 73 KiB ![]() ![]() |
Before ![]() (image error) Size: 30 KiB After ![]() (image error) Size: 30 KiB ![]() ![]() |