首先让我说这可能看起来很愚蠢的问题,但 SVG 经常被低估(例如,请参阅 Z/ClosePath 命令的描述@Mozilla开发网站并将其与SVG Rec. 1.1进行比较)。
根据SVG 建议。1.1:
“moveto”命令(M或m)建立一个新的当前点。效果就像“笔”被抬起并移动到一个新位置。
即“当前点”是M
或m
。
这里写道:
“closepath”(Z 或 z)结束当前子路径并导致从当前点到当前子路径的初始点绘制一条自动直线。
那么,如果我假设“初始点”是当前子路径开始的点,我是对的吗?但是如果正在执行的工作是在当前子路径上完成的,并且“当前点” == M
or m
,那么“初始点”也应该等于M
or m
。这怎么可能,我没有得到什么?
感谢 Robert Longson,这里解释了“当前点”和“初始点”是什么。我的逻辑错误是由语句““moveto”命令(M或m)建立一个新的当前点中未发现的单词“建立”引起的。效果就像“笔”被抬起并移动到一个新位置。” 即M
或m
仅在处理开始时填充此“变量”。
例如,想象这样的路径数据:
m1 c11 c12 c13 z1 m2 c21 c22 c23 z2
在其中,m1
将填充current_point
变量并设置 new initial_point
。之后,当处理将转到下一个绘图命令时,current_point
将成为该命令的最后一个点。例如(V
是指向当前处理状态的指针):
V
m1 c11 c12 c13 z1 m2 c21 c22 c23 z2
initial_point = current_point = m1
V
m1 c11 c12 c13 z1 m2 c21 c22 c23 z2
current_point = c11.last_point
V
m1 c11 c12 c13 z1 m2 c21 c22 c23 z2
current_point = c12.last_point
...
V
m1 c11 c12 c13 z1 m2 c21 c22 c23 z2
initial_point = current_point = m2