如何使线像圆一样粗?

pee*_*eer 2 haskell haskell-diagrams

我想制作一条宽度等于圆直径的圆形线.经过多次试验和错误后,这似乎产生了想要的输出.

import Diagrams.Prelude
import Diagrams.Backend.Cairo.CmdLine
main = mainWith example

path = fromVertices [p2 (0,0), p2 (3,0)] # lw 80

example :: Diagram B
example = atPoints [p2 (0,0)] n
  <> (path # lineCap LineCapRound  . lineJoin LineJoinRound)
  <> atPoints [p2 (3,0)] n
  <> square 10 # lw none # fc white
 where
   n =[circle 1 # fc green # lw none]
Run Code Online (Sandbox Code Playgroud)

但感觉不对.我希望lw 2对应circle 1因为2是半径的两倍,但肯定不是lw 80?!
为什么它适用于80?假设我错过了一些东西,怎么做一个像圆一样宽的圆形线?

ber*_*gey 6

你想要的lwL,它代表"线宽,局部",并使用相同的单位来表示线条粗细和长度.

手册中有更多细节,以下是相关摘录:

当地单位是最直接的解释.局部单元中的值在局部向量空间的上下文中解释,就像大多数其他长度测量一样(例如,圆形和方形等函数的参数).例如,square 1#lwL 0.2指定一个正方形,该正方形用其边长为五分之一的宽线绘制,并且总是如此,即使它被缩放:线宽与正方形一起缩放.(lwL中的L代表"Local".)