如何使线条像圆一样粗?



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

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? 假设我错过了什么,如何制作一条像圆一样宽的圆线?

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

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

本地单位是最容易解释的。局部单位的值是在局部向量空间的上下文中解释的,就像大多数其他长度测量一样(例如,圆形和平方等函数的参数(。例如,正方形 1 # lwL 0.2 指定了一个正方形,该正方形的线条宽度是其边长的五分之一,并且始终如此,即使它被缩放:线宽与正方形一起缩放。(lwL 中的 L 代表"本地"。

最新更新