日期:2014-05-18  浏览次数:20937 次

平面和平面的交线算法?
平面和平面的交线算法?

我知道平面方程
a1x+b1y+c1z+d1=0;
a2x+b2y+c2z+d2=0;

连立得:
(a1-a2)x+(b1-b2)y+(c1-c2)z+(d1-d2)=0;

现在需要返回一个直线,即两个点~
C# code
  public Line3D CrossPlane(Plane3D p) //求平面与平面的交线
        {
            Line3D CrossLine = new Line3D();
            float tempA = (p.d - d) - (norm.x - p.norm.x);
            float tempB = (p.d - d) - (norm.y - p.norm.y);
            float tempC = norm.z - p.norm.z;
            if (tempC != 0)
            {
                CrossLine.ptBegin.x = 1;
                CrossLine.ptBegin.y = 0;
                CrossLine.ptBegin.z = tempA /tempC;

                CrossLine.ptEnd.x = 0;
                CrossLine.ptEnd.y = 1;
                CrossLine.ptEnd.z = tempB / tempC;

                return CrossLine;
            }
            else
            {
                return null;
            }
            
        }


感觉有问题,我定了2个点,就定跟直线,

如何返回他们的交线?
谢谢!

------解决方案--------------------
随便确定两组(x,y)、(x,y),算出z,不就得到两个(x,y,z)、(x,y,z)了吗,这不就可以确定直线了吗?