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 ⊕
-- | (∪) = 'union'
--
-- U+222A, UNION
(∪) :: Vector v => Model v -> Model v -> Model v
(∪) = (<>)
-- | (∩) = 'intersection'
--
-- U+2229, INTERSECTION
(∩) :: Vector v => Model v -> Model v -> Model v
a ∩ b = intersection [a, b]
-- | (∖) = 'difference'
--
-- U+2216, SET MINUS
(∖):: Vector v => Model v -> Model v -> Model v
(∖) = difference
-- | (⊖) = Symmetric difference
--
-- U+2296, CIRCLED MINUS
(⊖) :: Vector v => Model v -> Model v -> Model v
a ⊖ b = (a ∖ b) ∪ (b ∖ a)
-- | (ࣷ) = 'minkowski'
--
-- U+2295, CIRCLED PLUS
(⊕) :: Vector v => Model v -> Model v -> Model v
a ⊕ b = minkowski [a, b]
|