2

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

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

4

1 回答 1

6

你想要lwL,它代表“线宽,本地”,并且使用与长度相同的线宽单位。

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

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

于 2018-09-05T18:54:26.317 回答