以前做过一个UE4绘制户型图的项目,当我们画两条有宽度的矩形相交时,会产生接口上的错位,如图:
通过计算A线3,4与B线1,2的交点,重置B线1,A线3的坐标,通过计算A线1,3与B线3,4的交点,重置A线1,B线3的坐标;即可得到计算后的线条样式;
C++计算线条交点的代码:
// Get A,B,C of first line - points : ps1 to pe1
float A1 = pe1.Y - ps1.Y;
float B1 = ps1.X - pe1.X;
float C1 = A1 * ps1.X + B1 * ps1.Y;
// Get A,B,C of second line - points : ps2 to pe2
float A2 = pe2.Y - ps2.Y;
float B2 = ps2.X - pe2.X;
float C2 = A2 * ps2.X + B2 * ps2.Y;
// Get delta and check if the lines are parallel
float delta = A1 * B2 - A2 * B1;
if (delta == 0)
{
success = false;
}
else
{
success = true;
}
return FVector2D(
(B2*C1 - B1 * C2) / delta,
(A1*C2 - A2 * C1) / delta
);