summaryrefslogtreecommitdiff
path: root/openscad/Graphics/OpenSCAD/Unicode.hs
blob: e6309416ffdb20ebb3a70a70e6614723d692eca4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
{-# LANGUAGE UnicodeSyntax #-}

{-
Module      : Graphics.OpenSCAD.Unicode
Description : Unicode operators so you can write 'Model' expressions.
Copyright   : © Mike Meyer, 2014
License     : BSD4
Maintainer  : mwm@mired.org
Stability   : experimental
-}

module Graphics.OpenSCAD.Unicode where

import Data.Semigroup ((<>))
import Graphics.OpenSCAD

infixl 6 ∪
infixr 6 ∩
infixl 9 ∖
infixl 9 ⊖
infixl 9 ⊕

-- | (&#x222A;) = 'union'
--
-- U+222A, UNION
(∪) :: Vector v => Model v -> Model v -> Model v
(∪) = (<>)

-- | (&#x2229;) = 'intersection'
--
-- U+2229, INTERSECTION
(∩) :: Vector v => Model v -> Model v -> Model v
a ∩ b = intersection [a, b]

-- | (&#x2216;) = 'difference'
--
-- U+2216, SET MINUS
(∖):: Vector v => Model v -> Model v -> Model v
(∖) = difference

-- | (&#x2296;) = Symmetric difference
--
-- U+2296, CIRCLED MINUS
(⊖) :: Vector v => Model v -> Model v -> Model v
a ⊖ b = (a ∖ b) ∪ (b ∖ a)

-- | (&#2295;) = 'minkowski'
--
-- U+2295, CIRCLED PLUS
(⊕) :: Vector v => Model v -> Model v -> Model v
a ⊕ b = minkowski [a, b]