杂项-当两个线条连接时拥有任意角度弯曲的填充

内容目录

file
可以看到,当两条具有粗度的白线连接时(绿色点为两条线重合的轴点)并具有一个大幅度弯曲的情况下,如何保证线条折叠的位置不出现凹下去的痕迹。
其实我们完全可以将白线的长度拉长一个厚度,从而使其正好延长遮蔽凹陷。
但在工程环境里,会遇到诸多问题,以至于部分时候这种做法不太好用。

所以我想到了一个做法,首先得到两条线向外侧的向量并归一化,这样就得到了两条线朝向外部的方向。
并在这两条线所组成的夹角的外侧(你可以用叉乘找到具体在顺时针还是逆时针)得到基于朝向外部方向的垂线,而这个垂线会正好垂在绿点上。
file

接下来将垂线移动一个厚度,你就得到了两条线的边缘位置,也就是最外侧的那个地方。
那么很好,接下来你就可以如法炮制,再次使用方向,只不过这次方向是从外侧那个地方射出的,也就得到了图1的两个蓝线。
求出蓝线的交点,也就是红点。

这个时候你就已经拥有了四个具体的位置,分别是两条蓝线的起点,重合轴,以及两条蓝线的交点。
这个时候你可以绘制任何你想绘制的图形,例如可以生成一个网格体,只需要取这四个位置的顶点再简单的输入一下三角形索引就行了。

当然由于你有四个位置,你也可以每次只用三个来生成两个,分别是左半侧的三角和右半侧的三角。
最后可以根据自己喜欢将三角面拉长,让他变成一个三菱柱之类的。

滚动至顶部