Updated MetaPict today in order to fix missing exports from node.rkt.

The following example now produces this picture:

    https://imgur.com/a/AYTz7

The parameters to control the shape of the arrow is explained here:

    http://www.ntg.nl/maps/36/19.pdf

but the default arrow looks fine.

#lang racket
(require metapict)

(set-curve-pict-size 400 400)           ; pict size
(curve-pict-window (window -1 3 -1 3))  ; x in [-1;3] and y in [-1;3]

; ah means "arrow head"
(ahangle         45)       ; default head angle 45 degrees
(ahflankangle    0)        ; default "curvature" of flank (in degrees)
(ahtailcurvature 0)        ; default "curvature" of the back  todo!
(ahratio         1)
(ahlength        (px 6))

; node centers
(define c1 (pt 0 0))
(define c2 (pt 2 0))
(define c3 (pt 0 2))
(define c4 (pt 2 2))

; nodes
(define n1 (circle-node c1 .3))
(define n2 (circle-node c2 .3))
(define n3 (square-node c3 .3))
(define n4 (circle-node c4 .3))

(define (outside n1 v s)
  (define a (anchor n1 v))
  (define n (normal n1 v))
  (pt+ a (vec* s n)))

(define (besides p dir s)
  ; point next to p in the direction dir,
  ; the parameter s determines how far
  (pt+ p (vec* s dir)))

(define (between p1 p2)
  (med 1/2 c1 p2)) ; midpoint

(margin 5
        (draw n1 n2 n3 (filled-node n4)                ; the nodes
              (label-bot "AB"  (outside n1 down 0.05)) ; label below node n1
              (label-cnt "42" c1)                      ; contents (42) in
the center of node 1
              (draw-edge n1 n2)                        ; edge from node n1
to node n2
              (draw-edge n1 n3 west south)             ; edge from west
side of n1 to south side of n3
              (draw-edge n1 n4)                        ; edge from node n1
to node n4
              ;                                        ; label right of
midpoint of nodes 1 and 4
              (label-rt "transition"
                        (besides (between c1 c4) east 0.1))))



2017-08-19 16:19 GMT+02:00 Jens Axel Søgaard <jensa...@soegaard.net>:

> 2017-08-18 12:10 GMT+02:00 Andrew Gwozdziewycz <apg...@gmail.com>:
>
>> Hi folks,
>>
>> I've been using graphviz for years for basic network architecture
>> diagrams and things, mostly to avoid answering the question of "which
>> annoying tool should I use?" Graphviz has limitations for the type of
>> stuff I use it for, but I settle for it anyway, since it's a lot less
>> frustrating to use a language for laying out relationships than
>> clicking and dragging lines connecting things, in an agreed upon
>> diagramming tool.
>>
>> Has anyone started work (or finished work, or even somewhere in
>> between?) on a diagramming language that might be, or even eventually
>> will be a suitable replacement for performing these types of tasks?
>>
>> And if not, does anyone have suggestions for getting started with
>> layout drawing algorithms suitable for such a thing? I'm fairly sure
>> that the pict language will do the heavy lifting work for actually
>> drawing on a canvas, and simple layout techniques probably would go
>> along way, but getting to know the field a bit might be useful...
>>
>
> Maybe you can find something useful in MetaPict?
>
>     http://soegaard.github.io/docs/metapict/metapict.html
>
> As for algorithms, this module contains references to interesting tree
> drawing algorithms:
>
>     https://github.com/soegaard/metapict/blob/master/metapict/tree.rkt
>
>
> /Jens Axel
>
>


-- 
-- 
Jens Axel Søgaard

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to