绘制两条相互交叉的线,需要使用directx?
在c#中找到交点答案 0 :(得分:3)
我现在记不起direct3d了;这个网站应该让你开始:http://www.drunkenhyena.com/cgi-bin/view_net_article.pl?chapter=2;article=21
就交叉线而言,下面的函数应该计算a)两条线是否相交,如果是,那么约为。
static Point lineIntersect(Point a1, Point a2, Point b1, Point b2)
{
float dx, dy, da, db, t, s;
dx = a2.X - a1.X;
dy = a2.Y - a1.Y;
da = b2.X - b1.X;
db = b2.Y - b1.Y;
if (da * dy - db * dx == 0) {
// The segments are parallel.
return Point.Empty;
}
s = (dx * (b1.Y - a1.Y) + dy * (a1.X - b1.X)) / (da * dy - db * dx);
t = (da * (a1.Y - b1.Y) + db * (b1.X - a1.X)) / (db * dx - da * dy);
if ((s >= 0) & (s <= 1) & (t >= 0) & (t <= 1))
return new Point((int)(a1.X + t * dx), (int)(a1.Y + t * dy));
else
return Point.Empty;
}
你没有指定你的线是否表示为坐标(每条线2个坐标)或者它是否是一个等式,所以我假设你有2个点。
另外,我假设线条不是无限长,因此它们可能不相交,因为它们是平行的,或者根本不足以相交。
最后,这些只适用于2d行,如果你想要3d中的等价物,你需要询问相交的平面