From a9ea7f287299660a1323d14d2f515b744ef08dfc Mon Sep 17 00:00:00 2001 From: Ryan Oldenburg Date: Fri, 4 Dec 2020 19:18:46 -0600 Subject: [PATCH] simpler --- src/pixie/common.nim | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/pixie/common.nim b/src/pixie/common.nim index e54c6f1..838bafb 100644 --- a/src/pixie/common.nim +++ b/src/pixie/common.nim @@ -16,19 +16,14 @@ proc intersects*(a, b: Segment, at: var Vec2): bool {.inline.} = ## Checks if the a segment intersects b segment. ## If it returns true, at will have point of intersection let - s1x = a.to.x - a.at.x - s1y = a.to.y - a.at.y - s2x = b.to.x - b.at.x - s2y = b.to.y - b.at.y - - let - denominator = (-s2x * s1y + s1x * s2y) - s = (-s1y * (a.at.x - b.at.x) + s1x * (a.at.y - b.at.y)) / denominator - t = (s2x * (a.at.y - b.at.y) - s2y * (a.at.x - b.at.x)) / denominator + s1 = a.to - a.at + s2 = b.to - b.at + denominator = (-s2.x * s1.y + s1.x * s2.y) + s = (-s1.y * (a.at.x - b.at.x) + s1.x * (a.at.y - b.at.y)) / denominator + t = (s2.x * (a.at.y - b.at.y) - s2.y * (a.at.x - b.at.x)) / denominator if s >= 0 and s < 1 and t >= 0 and t < 1: - at.x = a.at.x + (t * s1x) - at.y = a.at.y + (t * s1y) + at = a.at + (t * s1) return true return false