Fix winding of corner points for line blocks

This commit is contained in:
2025-04-02 18:13:45 +01:00
parent 836a3d9dd3
commit c43aa91f1c
4 changed files with 10 additions and 15 deletions
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -69,7 +69,7 @@ plLineBlock basePane blwidth a b gw =
blockCenPs = snd $ evenOddSplit psOnLine
numBlocks = length blockCenPs
is = [0 .. numBlocks - 1]
cornerPoints = rectWH halfBlockWidth depth -- goes clockwise around the block
cornerPoints = reverse $ rectWH halfBlockWidth depth -- goes clockwise around the block
cornersAt p = fmap ((p +.+) . rotateV (argV (b -.- a))) cornerPoints
linesAt p = loopPairs $ cornersAt p
wlid = IM.newKey $ gw ^. cWorld . lWorld . walls
+8 -7
View File
@@ -22,13 +22,14 @@ import LensHelp
import RandomHelp
cenLasTur :: Room
cenLasTur =
roomNgon 8 200 & rmPmnts
.~ [ putLasTurret 0.02
-- .~ [ putTurret autoRifle 0.02
, heightWallPS (resetPLUse $ rprBoolShift (const . isInLnk) (shiftInBy 100)) 30 covershape
, mntLightLnkCond $ rprBool $ const . isInLnk
]
cenLasTur = roomNgon 8 200 & rmPmnts .~
[ putLasTurret 0.02
, heightWallPS
(resetPLUse $ rprBoolShift (const . isInLnk) (shiftInBy 100))
30
covershape
, mntLightLnkCond $ rprBool $ const . isInLnk
]
where
covershape = rectNSWE 10 (-10) (-20) 20
-6
View File
@@ -204,12 +204,6 @@ isLeftOf x y = isLeftOfA (argV x) (argV y)
diffAngles :: Float -> Float -> Float
diffAngles x y = nearZeroAngle $ x - y
mixAngles :: Float -> Float -> Float -> Float
mixAngles frac a1 a2
| abs (a1 - a2) <= pi = normalizeAngle $ frac * a1 + (1 - frac) * a2
| a1 > a2 = mixAngles frac (a1 - 2 * pi) a2
| otherwise = mixAngles frac (a1 + 2 * pi) a2
-- | Return Just a point if it is inside a circle, Nothing otherwise.
pointInCircle :: Point2 -> Float -> Point2 -> Maybe Point2
pointInCircle p r c