我有一条由2D点列表组成的路径.我想将它们变成一条三角形,以渲染具有指定厚度的纹理线条(和其他类似的东西).因此,2D点的列表基本上需要成为顶点列表,指定多边形的轮廓,如果渲染将呈现该线.问题在于处理拐角连接,斜角,盖帽等.在没有过度拉伸,清洁连接等意义上,所产生的多边形需要是"完美的",以便它可以被挤压或以其他方式玩弄.
是否有任何简单的资源可以提供算法洞察,代码或有效执行此操作的更多信息?
我绝对不想要一个完整的2D矢量库(cairo,antigrain,OpenVG等),包括曲线,弧形,破折号以及所有的铃声和口哨声.我一直在挖掘OpenVG实现和其他东西的多个源代码树以找到一些见解,但它们都非常复杂.
我绝对愿意自己编写代码,但有很多退化情况(小段+粗宽+尖角)会产生各种连接问题.即使是一点点帮助也可以节省我数小时的时间来处理它们.
编辑:这是一个例子,如果你只是从顶点到顶点,那些导致丑陋的退化情况.红色是原始路径.橙色块是以指定宽度绘制的矩形,对齐并以每个段为中心.

所以我有一个由n个点组成的任意线(见图1所示的例子)
我想围绕这条线绘制一个轮廓(见图2),所以我需要计算周围多边形的点.
我开始在线上进行扩张,但这不起作用 - 见图3
有关如何做到这一点的任何建议?
我怀疑计算每个线段的法线是否用于翻译下面的新线和在当前位置上方的新线,然后将每个新线延伸到无穷大并将点定义为交叉点?
用于渲染填充路径的矢量图形中使用的标准算法是什么?
我不仅对渲染笔画的过程感兴趣,我还想知道如何填充形状 - 如何确定给定的点是在路径的内部还是外部(我相信甚至指定内部和外部的规则)意思是不是一件简单的事情).
我的代码有问题.它在线上产生交叉点和尖点.(附件)
也许有人可以帮我这个代码提供我可以遵循的任何工作示例.
// LEFT SIDE OF MAIN LINE
int numberOfLines = 10;
float offset = 10f;
lastLinePoints = outerPoints; // outerPoint = Points from Main Line
for(int i = 0; i < numberOfLines; i++)
{
List<Vector3> tempPoints = new List<Vector3> ();
for (int k = 0; k < lastLinePoints.Count; k++) {
if (k + 1 < lastLinePoints.Count) {
Vector3 direction = lastLinePoints [k + 1] - lastLinePoints [k];
// up direction:
Vector3 up = new Vector3(0.0f, 1.0f, 0.0f);
// …Run Code Online (Sandbox Code Playgroud)