ImplicitCAD/CHANGELOG.md
Owen Harvey ec80876ed1 Adding checks when looking for loops to handle NaNs.
Updating some OpenSCAD functions that have the potential to return NaN
or (+-)Infinity have been given checks that remove these troublesome
values and clamp them to "reasonable" values so that the rest of the
processing can continue without processing these troublesome values.
2022-11-21 17:02:23 +10:00

5.6 KiB
Raw Blame History

Version next (202Y-MM-DD)

  • ExtOpenScad interface changes

    • Added rands and lookup support #433
    • Added several primitives
      • cone(r, h, center)
      • torus(r1, r2)
      • ellipsoid(a, b, c)
    • Adding vector-matrix, matrix-vector, and matrix-matrix multiplication support to * #414
    • Several mathematical functions that have undefined values for some inputs or tend to infinity have been given finite but extremely large bounds.
  • Haskell interface changes

    • Added matching primitives for cone, torus, and ellipsoid
    • Adding vector-matrix, matrix-vector, and matrix-matrix multiplication support to mult #414
  • Other changes

    • Migrating StateC and StateE to a ReaderT/WriterT/StateT transformer stack, rather than being just StateT. #432
    • Fixing an off by one error in variable stack lookups. #431
    • Fixing exponent operator precedence. #428
    • Fixing some crashes relating to unclosed loops when generating surfaces. #373

Version 0.4.0.0 (2022-06-06)

  • Changelog started. Previous release was 0.3.0.1.

  • Haskell interface changes

    • Added support for XY-scaling on linear_extrude #269
      • ExtrudeRM scale type changes from (Either ( -> )) to ExtrudeRMScale
    • Replaced the Rect primitives with SquareR and CubeR #296
      • squareR and cubeR are now available
    • Added support for mirroring objects around axis using mirror function #300
    • differenceR changes type to require mandatory shape to substract from #294
      • from Object obj vec => R -> [obj] -> obj
      • to Object obj vec => R -> obj -> [obj] -> obj
    • Both SymbolicObj2 and SymbolicObj3 now have Semigroup and Monoid instances, where <> acts as union #301
    • Added rotateQ function for rotating with Quaternions #314
    • 2 and 3 are now using V2 and V3 from linear instead of tuples #342
    • Rounding is now separate from primitives #362
      • Introduces withRounding function.
      • Instead of primitiveR roundingValue ... we now use withRounding roundingValue (primitive ...)
      • Replaces squareR, rectR, polygonR, cubeR, rect3R, extrudeR, extrudeRM with versions without rounding arugment (square, rect, ...).
    • Removed ExtrudeRotateR #365
    • rotateExtrude now longer accepts rounding paramater #367
    • Added transform3 (transform using 4x4 matrix representing affine transformation) #410
    • Changed Object obj vec class to Object obj f a #420
  • ExtOpenSCAD interface changes

    • scale function with single parameter now behaves similar to OpenSCAD one #258
      • scales 2D object in both dimensions
    • rotateExtrude angle a parameter renamed to angle to match OpenSCAD #259
    • Added mirror support #300
    • Added multmatrix support #410
  • Other changes

    • Fixed the ExtOpenSCAD lexer bug where newlines were part of identifiers #256
    • implicitsnap not built by default anymore #272
      • Can be enabled again with cabal configure --flag=implicitsnap
    • Fixed vertex coordinates of OBJ output #281
      • discreteAprox of NormedTriangleMesh now runs in parallel #282
    • Binaries now built with default -rtsopts "-with-rtsopts -N -qg -t" to allow automatic parallelization
    • Added haddocks for Haskell eDSL #284 & #287
    • Added golden test machinery #311
    • Added quickcheck test machinery for implicit functions #316
    • Rotate now internally uses quaternions #314
    • Fixes to triangle generation #355 and #375
    • ExtOpenSCAD vector addition #408