Это то, что вы подразумеваете под прямым углом интеллекта? псевдо следует ...
Point pA(x,y);
Point pB(x,y);
if abs(pB.X-pA.X) < abs(pB.Y-pA.Y) // Going vertically or horizontal?
{
DrawLine(pA.X, pA.Y, pA.X, pB.Y); //Long vertical
DrawLine(pA.X, pB.Y, pB.X, pB.Y); //Short horizontal
}
else
{
DrawLine(pA.X, pA.Y, pB.X, pA.Y); //Long horizontal
DrawLine(pB.X, pA.Y, pB.X, pB.Y); //Short vertical
}
или для кривой линии (от макушки головы):
Point pA=(x,y);
Point pB=(x,y)
if abs(pB.X-pA.X) < abs(pB.Y-pA.Y) // Going vertically or horizontal?
{
Point pHalfwayY = (pB.Y-pA.Y)/2 + pB.Y
DrawLine(pA.X, pA.Y, pA.X, pHalfwayY ); //Long vertical 1st half
DrawLine(pA.X, pHalfwayY , pB.X, pHalfwayY ); //Short horizontal
DrawLine(pA.X, pHalfwayY , pA.X, pB.Y); //Long vertical 2nd half
}
else
{
Point pHalfwayX = (pB.X-pA.X)/2 + pB.Y
DrawLine(pA.X, pA.Y,pHalfwayX , pA.Y); //Long horizontal 1st Half
DrawLine(pHalfwayX , pA.Y, pHalfwayX , pB.Y); // Short Vertical
DrawLine(pHalfwayX , pA.Y, pA.X, pB.Y); //Long horizontal 2nd half
}
Надеюсь, это поможет.