理想我想提供一系列点,并在每个点(从第二点开始)以直角绘制一条线。
每条线的方向会交替出现,所以如果我碰巧绘制了一条由6个点组成的曲线,则从第二个点开始绘制每个点的给定长度的线,即在交替的两侧有5个额外的线。曲线,有点像毛毛虫交替腿。
(据我所知,线条与曲线不是完全成直角,而是与曲线上任意两点形成的直线成直角)。
答案 0 :(得分:32)
这是vector mathematics的问题。您可以通过从A中减去B来计算两个点A和B之间的定向矢量。在2D中,只有在2D中,通过反转x和y分量并将一个分量置为负,可以获得与该矢量成直角的矢量。如果你否定新的x分量,你将左转,否定你将向右转。然后,您可以通过将每个分量除以矢量的长度(sqrt(x x + y y)),将定向矢量减少到单位大小(=长度1)。最后,您可以再次按所需的长度拉伸单位矢量,并使其具有您想要的尺寸。如果将此向量添加到A或B,您将获得要绘制线条的点。
这里有一点数学帮助:
这些是A和B点,表示为矢量。
通过简单的减法计算定向矢量。
通过翻转定向矢量给出法向量,即反转分量并使一个分量为负。 nl =正常,向左翻转,nr =正常,向右翻转
法向量的单位向量是通过将每个分量除以向量的长度给出的。
计算向量的长度
如果你想从B向左画一条线(当来自A时),你计算要画线的点P为
因此,当您在点上方进行迭代时,您需要交替进行一次绘制。
如果你的画布外面有点,那么你的长度可能太大了。您当然可以通过计算矢量BP和边界的交点来计算P向量穿过边界的点。