我们的银河吧 关注:1贴子:19
  • 0回复贴,共1

unity3d求两直线交点

只看楼主收藏回复

private void Intersection()
{//求两直线交点
Vector2 p1 = new Vector2(0, 0);
Vector2 p2 = new Vector2(3, 3);
Vector2 p3 = new Vector2(0, 1);
Vector2 p4 = new Vector2(1, 1);
Vector2 pos = Inter(p1, p2, p3, p4);
Debug.Log(pos.ToString());
}
private float Cross(Vector2 p1,Vector2 p2,Vector2 p3,Vector2 p4)
{
return (p2.x-p1.x)*(p4.y-p3.y) - (p2.y-p1.y)*(p4.x-p3.x);
}
private float Area(Vector2 p1, Vector2 p2, Vector2 p3)
{
return Cross(p1, p2, p1, p3);
}
private float fArea(Vector2 p1, Vector2 p2, Vector2 p3)
{
return Mathf.Abs(Area(p1, p2, p3));
}
private Vector2 Inter(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4)
{
float s1 = fArea(p1, p2, p3), s2 = fArea(p1, p2, p4);
return new Vector2((p4.x * s1 + p3.x * s2) / (s1 + s2), (p4.y * s1 + p3.y * s2) / (s1 + s2));
}


IP属地:江苏1楼2018-11-02 04:53回复