如何使线像圆一样粗?

时间:2018-09-05 16:39:53

标签: 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]

但是感觉不对。我希望lw 2对应于circle 1,因为2是半径的两倍,但肯定不是lw 80 ?!
为什么与80兼​​容? 假设我错过了一些东西,如何使一条圆形的线像一个圆一样宽?

1 个答案:

答案 0 :(得分:6)

您要使用lwL,它代表“局部线宽”,并且线长和长度使用相同的单位。

the manual中有更多详细信息,以下是相关摘录:

  

本地单位最容易解释。就像大多数其他长度测量(例如,诸如圆和平方的函数的参数)一样,在局部向量空间的上下文中解释以局部单位表示的值。例如,正方形1#lwL 0.2指定一个正方形,该正方形所画的线的宽度是其边长的五分之一,即使按比例缩放也将始终如此:线宽随正方形一起缩放。 (lwL中的L代表“本地”。)