我有一組點代表一條線。它可能是封閉的形狀或開放的形狀。 我需要繪製一條平行線,除了原始線之外沒有任何交點。繪製平行線
我有以下代碼返回生成的行。我在形狀的角度有問題。有一點可以超越原來的界限。
我的代碼是:
PointF[] GetParrarel(PointF[] lst, double width, float distance)
{
List<PointF> final = new List<PointF>();
width = width + distance;
for (int i = 0; i < lst.Length-1 ; i++)
{
int index = i;
PointF current = lst[index];
PointF next = lst[index + 1];
double dx = next.X - current.X;
double dy = next.Y - current.Y;
PointF first = current;
PointF second = next;
if (dx > 0)
{
if (dy == 0)
{
first.Y += (float)width;
second.Y += (float)width;
}
first.X += (float)width;
second.X += (float)width;
}
else if (dx < 0)
{
if (dy == 0)
{
first.Y -= (float)width;
second.Y -= (float)width;
}
first.X -= (float)width;
second.X -= (float)width;
}
else //// X = 0
{
if (dy > 0)
{
first.X -= (float)width;
second.X -= (float)width;
}
else if (dy < 0)
{
first.X += (float)width;
second.X += (float)width;
}
else
{
continue;
}
}
final.Add(first);
final.Add(second);
}
return final.ToArray();
}
這是一個偶然的家庭作業.. ?? – MethodMan
'寬度'和'距離'是什麼。在我看來,你只需要一個標量'offset'。 – ja72
可能重複http://stackoverflow.com/questions/845254/polyline-offset-with-closed-polygon-and-islands – ja72