我正在创建自己的2D绘制引擎,该引擎能够描边和填充路径。我在连接线段的角时遇到麻烦。
我这样做的方法是计算每个线段的法线,在拐角处,我使用两个相邻边的平均法线。要计算线宽的顶点,我使用线段坐标,然后减去/相加平均法线乘以线宽的一半。
在草图上,这意味着我计算了淡蓝色的法线(也将其用于自由线的末端,除非是循环的),并计算两个角的平均值,即红色法线(和绿色是负面版本。
我用1/2粗细(橙色线)缩放法线以得到顶点。
尽管红色/绿色法线的方向正常,但是幅度计算对于角点而言是不正确的。
这看起来很不错,但还不够好:根据拐角的角度,线会变得比要求的厚度更细/更粗。
所以采用平均法线似乎还不够。
这是它的外观:看看角落有多糟糕...任何人都可以给我有关如何改善此问题的提示?
ps.s。无需告诉我使用第3方库,而忽略了这个问题
您对数学的描述尚不清楚,但是我认为您要寻找的因素是两条边之间的夹角正弦中的一个(您可以用叉积得到)。
当心接近零或pi的角度;决定要如何处理这样的角度之前遇到它们。