我想从另一个形状中减去一个形状,然后将得到的形状与另一个形状结合起来。在我的示例中,一个正方形将被剪成两半,而剪裁后的版本将向右延伸半个圆。所以我从另一个过孔中减去一个正方形,difference
并用整个圆圈制作一个union
,假设重叠区域只会合并。我正在考虑设置操作,其中 ({1,2,3,4} / {3,4}) U {2,3}
等于{1,2,3}
但在我的实现中它等于{1,3}
:
import Diagrams.Backend.SVG.CmdLine
{-# LANGUAGE NoMonomorphismRestriction #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TypeFamilies #-}
import Diagrams.Prelude
import qualified Diagrams.TwoD.Path.Boolean as B
main = mainWith (combination # fc red # bgFrame 0.1 white)
where
combination :: QDiagram B V2 Double Any
combination = strokePath plusCircle
shorterSquare = B.difference Winding (square 2) (square 2 # translateX 1)
plusCircle = B.union Winding (circle 1 <> shorterSquare)