用于计算三角线串的线宽的数学运算

问题描述 投票:0回答:1

我正在创建自己的2D绘制引擎,该引擎能够描边和填充路径。我在连接线段的角时遇到麻烦。

我这样做的方法是计算每个线段的法线,在拐角处,我使用两个相邻边的平均法线。要计算线宽的顶点,我使用线段坐标,然后减去/相加平均法线乘以线宽的一半。

sketch of what I am trying to do

在草图上,这意味着我计算了淡蓝色的法线(也将其用于自由线的末端,除非是循环的),并计算两个角的平均值,即红色法线(和绿色是负面版本。

我用1/2粗细(橙色线)缩放法线以得到顶点。

尽管红色/绿色法线的方向正常,但是幅度计算对于角点而言是不正确的。

这看起来很不错,但还不够好:根据拐角的角度,线会变得比要求的厚度更细/更粗。

所以采用平均法线似乎还不够。

这是它的外观:看看角落有多糟糕...任何人都可以给我有关如何改善此问题的提示?

screenshot of the varying line thickness

ps.s。无需告诉我使用第3方库,而忽略了这个问题

c++ math opengl 2d drawing
1个回答
0
投票

您对数学的描述尚不清楚,但是我认为您要寻找的因素是两条边之间的夹角正弦中的一个(您可以用叉积得到)。

当心接近零或pi的角度;决定要如何处理这样的角度之前遇到它们。

© www.soinside.com 2019 - 2024. All rights reserved.