p1和p2是空间两点 r是球半径
Point3d p1 = new Point3d(...);
Point3d p2 = new Point3d(..); double a = (p2.X - p1.X) * (p2.X - p1.X) + (p2.Y - p1.Y) * (p2.Y - p1.Y) + (p2.Z - p1.Z) * (p2.Z - p1.Z);
double b = 2.0*((p2.X - p1.X)*(p1.X) + (p2.Y - p1.Y)*(p1.Y) + (p2.Z - p1.Z)*(p1.Z));
double c = p1.X*p1.X + p1.Y*p1.Y + p1.Z*p1.Z - r * r;double discriminant = b*b - 4 * a * c;以上a b c根据什么公式算出来的

解决方案 »

  1.   

    p1和p2是空间两点 r是球半径 
    Point3d p1 = new Point3d(...); 
    Point3d p2 = new Point3d(..); double a = (p2.X - p1.X) * (p2.X - p1.X) + (p2.Y - p1.Y) * (p2.Y - p1.Y) + (p2.Z - p1.Z) * (p2.Z - p1.Z); 
    //(p2.X - p1.X) * (p2.X - p1.X) + (p2.Y - p1.Y) * (p2.Y - p1.Y) + (p2.Z - p1.Z) * (p2.Z - p1.Z); 这是什么公式得到的double b = 2.0*((p2.X - p1.X)*(p1.X) + (p2.Y - p1.Y)*(p1.Y) + (p2.Z - p1.Z)*(p1.Z));
    //2.0*((p2.X - p1.X)*(p1.X) + (p2.Y - p1.Y)*(p1.Y) + (p2.Z - p1.Z)*(p1.Z)); 这是什么公式得到的
    double c = p1.X*p1.X + p1.Y*p1.Y + p1.Z*p1.Z - r * r; 
    //p1.X*p1.X + p1.Y*p1.Y + p1.Z*p1.Z - r * r;  这是什么公式得到的
    double discriminant = b*b - 4 * a * c; 以上a b c根据什么公式算出来的代码不是我写的