-a3); dian[0]=(k2*a3-k1*a2+b2-b3)/(k2-k1); dian[1]=(dian[0]-a2)*k1+b2; ss.x=dian[0];ss.y=dian[1]; return ss; } } else { k2=(b2-b3)/(a2-a3); dian[0]=a0; dian[1]=(a0-a2)*k2+b2; ss.x=dian[0];ss.y=dian[1]; return ss; } } else if((a0-a1)!=0&&(b2-b3)==0) { if((b0-b1)==0) /*所比较的直线平行*/ { if((a1-a2)==0) { dian[0]=a1; dian[1]=(b3-b0)*(a1-a0)/(a3-a0)+b0; ss.x=dian[0];ss.y=dian[1]; return ss; } else if((a3-a0)==0) { dian[0]=a0; dian[1]=(b2-b1)*(a0-a1)/(a2-a1)+b1; ss.x=dian[0];ss.y=dian[1]; return ss; } else { k1=(b2-b1)/(a2-a1); k2=(b0-b3)/(a0-a3); dian[0]=(k2*a3-k1*a2+b2-b3)/(k2-k1); dian[1]=(dian[0]-a2)*k1+b2; ss.x=dian[0];ss.y=dian[1]; return ss; } } else { k1=(b0-b1)/(a0-a1); dian[1]=b2; dian[0]=(b2-b0)/k1+a0; ss.x=dian[0];ss.y=dian[1]; return ss; } } else { k1=(b0-b1)/(a0-a1); k2=(b2-b3)/(a2-a3); if(k1==k2) /*所比较的直线平行*/ { if((a1-a2)==0) { dian[0]=a1; dian[1]=(b3-b0)*(a1-a0)/(a3-a0)+b0; ss.x=dian[0];ss.y=dian[1]; return ss; } else if((a3-a0)==0) { dian[0]=a0; dian[1]=(b2-b1)*(a0-a1)/(a2-a1)+b1; ss.x=dian[0];ss.y=dian[1]; return ss; } else { k1=(b2-b1)/(a2-a1); k2=(b0-b3)/(a0-a3); dian[0]=(k2*a3-k1*a2+b2-b3)/(k2-k1); dian[1]=(dian[0]-a2)*k1+b2; ss.x=dian[0];ss.y=dian[1]; return ss; } } else { dian[0]=(k1*a0-k2*a2+b2-b0)/(k1-k2); dian[1]=b0+(dian[0]-a0)*k1; ss.x=dian[0];ss.y=dian[1]; return ss; } } } /* 求四边形的面积 */ double si_area(double s[]) { double t1,a1; t1=(s[0]+s[1]+s[2]+s[3])/2.0; a1=sqrt((t1-s[0])*(t1-s[1])*(t1-s[2])*(t1-s[3])); return a1; }

|