Maintainer | diagrams-discuss@googlegroups.com |
---|---|
Safe Haskell | None |
Drawing arrows in two dimensions. For a tutorial on drawing arrows using this module, see the diagrams website: http://projects.haskell.org/diagrams/doc/arrow.html.
- arrowV :: Renderable (Path R2) b => R2 -> Diagram b R2
- arrowV' :: Renderable (Path R2) b => ArrowOpts -> R2 -> Diagram b R2
- arrowAt :: Renderable (Path R2) b => P2 -> R2 -> Diagram b R2
- arrowAt' :: Renderable (Path R2) b => ArrowOpts -> P2 -> R2 -> Diagram b R2
- arrowBetween :: Renderable (Path R2) b => P2 -> P2 -> Diagram b R2
- arrowBetween' :: Renderable (Path R2) b => ArrowOpts -> P2 -> P2 -> Diagram b R2
- connect :: (Renderable (Path R2) b, IsName n1, IsName n2) => n1 -> n2 -> Diagram b R2 -> Diagram b R2
- connect' :: (Renderable (Path R2) b, IsName n1, IsName n2) => ArrowOpts -> n1 -> n2 -> Diagram b R2 -> Diagram b R2
- connectPerim :: (Renderable (Path R2) b, IsName n1, IsName n2) => n1 -> n2 -> Angle -> Angle -> Diagram b R2 -> Diagram b R2
- connectPerim' :: (Renderable (Path R2) b, IsName n1, IsName n2) => ArrowOpts -> n1 -> n2 -> Angle -> Angle -> Diagram b R2 -> Diagram b R2
- connectOutside :: (Renderable (Path R2) b, IsName n1, IsName n2) => n1 -> n2 -> Diagram b R2 -> Diagram b R2
- connectOutside' :: (Renderable (Path R2) b, IsName n1, IsName n2) => ArrowOpts -> n1 -> n2 -> Diagram b R2 -> Diagram b R2
- arrow :: Renderable (Path R2) b => Double -> Diagram b R2
- arrow' :: Renderable (Path R2) b => ArrowOpts -> Double -> Diagram b R2
- data ArrowOpts = ArrowOpts {
- _arrowHead :: ArrowHT
- _arrowTail :: ArrowHT
- _arrowShaft :: Trail R2
- _headGap :: Measure R2
- _tailGap :: Measure R2
- _headStyle :: Style R2
- _headLength :: Measure R2
- _tailStyle :: Style R2
- _tailLength :: Measure R2
- _shaftStyle :: Style R2
- arrowHead :: Lens' ArrowOpts ArrowHT
- arrowTail :: Lens' ArrowOpts ArrowHT
- arrowShaft :: Lens' ArrowOpts (Trail R2)
- headGap :: Lens' ArrowOpts (Measure R2)
- tailGap :: Lens' ArrowOpts (Measure R2)
- gaps :: Traversal' ArrowOpts (Measure R2)
- gap :: Traversal' ArrowOpts (Measure R2)
- headTexture :: Setter' ArrowOpts Texture
- headStyle :: Lens' ArrowOpts (Style R2)
- headLength :: Lens' ArrowOpts (Measure R2)
- tailTexture :: Setter' ArrowOpts Texture
- tailStyle :: Lens' ArrowOpts (Style R2)
- tailLength :: Lens' ArrowOpts (Measure R2)
- lengths :: Traversal' ArrowOpts (Measure R2)
- shaftTexture :: Setter' ArrowOpts Texture
- shaftStyle :: Lens' ArrowOpts (Style R2)
- straightShaft :: Trail R2
- module Diagrams.TwoD.Arrowheads
Examples
Example 1
-- Connecting two diagrams at their origins. sq = square 2 # showOrigin # lc darkgray # lw ultraThick ds = (sq # named "left") ||| strutX 3 ||| (sq # named "right") shaft = cubicSpline False ( map p2 [(0, 0), (1, 0), (1, 0.2), (2, 0.2)]) example1 = ds # connect' (with & arrowHead .~ dart & arrowTail .~ quill & arrowShaft .~ shaft & headLength .~ huge & tailLength .~ veryLarge) "left" "right" # pad 1.1
Example 2
-- Comparing connect, connectPerim, and arrowAt. oct = octagon 1 # lc darkgray # lw ultraThick # showOrigin dias = oct # named "first" ||| strut 3 ||| oct # named "second" -- Connect two diagrams and two points on their trails. ex12 = dias # connect' (with & lengths .~ veryLarge) "first" "second" # connectPerim' (with & lengths .~ veryLarge) "first" "second" (15/16 @@ turn) (9/16 @@ turn) -- Place an arrow at (0,0) the size and direction of (0,1). ex3 = arrowAt origin unit_Y example2 = (ex12 <> ex3) # centerXY # pad 1.1
Creating arrows
arrowV :: Renderable (Path R2) b => R2 -> Diagram b R2Source
arrowV v
creates an arrow with the direction and magnitude of
the vector v
(with its tail at the origin), using default
parameters.
arrowV' :: Renderable (Path R2) b => ArrowOpts -> R2 -> Diagram b R2Source
arrowV' v
creates an arrow with the direction and magnitude of
the vector v
(with its tail at the origin).
arrowAt :: Renderable (Path R2) b => P2 -> R2 -> Diagram b R2Source
Create an arrow starting at s with length and direction determined by the vector v.
arrowBetween :: Renderable (Path R2) b => P2 -> P2 -> Diagram b R2Source
arrowBetween s e
creates an arrow pointing from s
to e
with default parameters.
arrowBetween' :: Renderable (Path R2) b => ArrowOpts -> P2 -> P2 -> Diagram b R2Source
arrowBetween' opts s e
creates an arrow pointing from s
to
e
using the given options. In particular, it scales and
rotates arrowShaft
to go between s
and e
, taking head,
tail, and gaps into account.
connect :: (Renderable (Path R2) b, IsName n1, IsName n2) => n1 -> n2 -> Diagram b R2 -> Diagram b R2Source
Connect two diagrams with a straight arrow.
connect' :: (Renderable (Path R2) b, IsName n1, IsName n2) => ArrowOpts -> n1 -> n2 -> Diagram b R2 -> Diagram b R2Source
Connect two diagrams with an arbitrary arrow.
connectPerim :: (Renderable (Path R2) b, IsName n1, IsName n2) => n1 -> n2 -> Angle -> Angle -> Diagram b R2 -> Diagram b R2Source
Connect two diagrams at point on the perimeter of the diagrams, choosen by angle.
connectPerim' :: (Renderable (Path R2) b, IsName n1, IsName n2) => ArrowOpts -> n1 -> n2 -> Angle -> Angle -> Diagram b R2 -> Diagram b R2Source
connectOutside :: (Renderable (Path R2) b, IsName n1, IsName n2) => n1 -> n2 -> Diagram b R2 -> Diagram b R2Source
connectOutside' :: (Renderable (Path R2) b, IsName n1, IsName n2) => ArrowOpts -> n1 -> n2 -> Diagram b R2 -> Diagram b R2Source
arrow :: Renderable (Path R2) b => Double -> Diagram b R2Source
arrow len
creates an arrow of length len
with default
parameters, starting at the origin and ending at the point
(len,0)
.
arrow' :: Renderable (Path R2) b => ArrowOpts -> Double -> Diagram b R2Source
arrow' opts len
creates an arrow of length len
using the
given options, starting at the origin and ending at the point
(len,0)
. In particular, it scales the given arrowShaft
so
that the entire arrow has length len
.
Options
ArrowOpts | |
|
headGap :: Lens' ArrowOpts (Measure R2)Source
Distance to leave between the head and the target point.
tailGap :: Lens' ArrowOpts (Measure R2)Source
Distance to leave between the starting point and the tail.
headTexture :: Setter' ArrowOpts TextureSource
A lens for setting or modifying the texture of an arrowhead. For
example, one may write ... (with & headTexture .~ grad)
to get an
arrow with a head filled with a gradient, assuming grad has been
defined. Or ... (with & headTexture .~ solid blue
to set the head
color to blue. For more general control over the style of arrowheads,
see headStyle
.
headStyle :: Lens' ArrowOpts (Style R2)Source
Style to apply to the head. headStyle
is modified by using the lens
combinator %~
to change the current style. For example, to change
an opaque black arrowhead to translucent orange:
(with & headStyle %~ fc orange . opacity 0.75)
.
headLength :: Lens' ArrowOpts (Measure R2)Source
The length from the start of the joint to the tip of the head.
tailTexture :: Setter' ArrowOpts TextureSource
A lens for setting or modifying the texture of an arrow tail.
lengths :: Traversal' ArrowOpts (Measure R2)Source
Set both the headLength
and tailLength
simultaneously.
shaftTexture :: Setter' ArrowOpts TextureSource
A lens for setting or modifying the texture of an arrow shaft.
straightShaft :: Trail R2Source
Straight line arrow shaft.
See Diagrams.TwoD.Arrowheads for a list of standard arrowheads and help creating your own.
module Diagrams.TwoD.Arrowheads