我想制作一条宽度等于圆直径的圆形线。 经过反复试验,这似乎产生了所需的输出。
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兼容?
假设我错过了一些东西,如何使一条圆形的线像一个圆一样宽?
答案 0 :(得分:6)
您要使用lwL
,它代表“局部线宽”,并且线长和长度使用相同的单位。
the manual中有更多详细信息,以下是相关摘录:
本地单位最容易解释。就像大多数其他长度测量(例如,诸如圆和平方的函数的参数)一样,在局部向量空间的上下文中解释以局部单位表示的值。例如,正方形1#lwL 0.2指定一个正方形,该正方形所画的线的宽度是其边长的五分之一,即使按比例缩放也将始终如此:线宽随正方形一起缩放。 (lwL中的L代表“本地”。)