如果我结合\psline
和\pscurve
创建一个对象并将其放入\pscustom
,则该对象会变形。在我看来,贝塞尔曲线由于关闭路径而获得了一些额外的边界条件,但我可能完全搞错了。
这个例子是一个更大的草图的一部分(因此可能有奇怪的数字),我试图绘制一个凹透镜:
\begin{pspicture}(.2,1)
\pscustom[fillstyle=solid, fillcolor=lightgray, linestyle=dashed]{
\psline(2.9,2.15)(3.1,2.15)
\pscurve(3.1,2.15)(3.03,1.65)(3.1,1.15)
\psline(3.1,1.15)(2.9,1.15)
\pscurve(2.9,1.15)(2.97,1.65)(2.9,2.15)}
\psline(2.9,2.15)(3.1,2.15)
\pscurve(3.1,2.15)(3.03,1.65)(3.1,1.15)
\psline(3.1,1.15)(2.9,1.15)
\pscurve(2.9,1.15)(2.97,1.65)(2.9,2.15)
\end{pspicture}
加倍和linestyle=dashed
ofc 只是为了演示。有没有办法像我在外面一样填充物体\pscustom
?
答案1
\pscustom
创建一条封闭路径。它使用直线/曲线的最后一个点作为下一条直线/曲线。这就是为什么对于沿着直线或另一条曲线的曲线只需要 2 个点,而对于直线只需要一个点的原因。第一个点始终是前一个宏的最后一个点:
\documentclass[a4paper,12pt]{article}
\usepackage{pstricks}
\begin{document}
\psset{unit=10}
\begin{pspicture}(2.5,1)(4,3)
\pscustom[fillstyle=solid, fillcolor=lightgray, linestyle=dashed]{
\psline(2.9,2.15)(3.1,2.15)
\pscurve(3.03,1.65)(3.1,1.15)
\psline(2.9,1.15)
\pscurve(2.97,1.65)(2.9,2.15)}
\psline(2.9,2.15)(3.1,2.15)
\pscurve(3.1,2.15)(3.03,1.65)(3.1,1.15)
\psline(3.1,1.15)(2.9,1.15)
\pscurve(2.9,1.15)(2.97,1.65)(2.9,2.15)
\end{pspicture}
\end{document}
使用\psline(0,0)(1,1)\pscurve(1,1)(3,1)(4,2)
insinde\pscustom
绘制为\pscurve(1,1)(1,1)(3,1)(4,2)
不同于
\pscurve(1,1)(3,1)(4,2)