- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 - 31
 - 32
 - 33
 
                        POINT Point_X(POINT a1,POINT a2,POINT a3,POINT a4){
	POINT T;
	if(((a1.x<=T.x)&&(a2.x>=T.x)&&(a3.x<=T.x)&&(a4.x >=T.x))||((a1.y<=T.y)&&(a2.y>=T.y)&&(a3.y<=T.y)&&(a4.y>=T.y))){
		float x1=a1.x,x2=a2.x,x3=a3.x,x4=a4.x,y1=a1.y,y2=a2.y,y3=a3.y,y4=a4.y;
		float k1,k2;
		if(y2-y1!=0){
			k1=(x2-x1)/(y2-y1);
			if(y4-y3!=0){
				k2=(x4-x3)/(y4-y3);
				if(k1!=k2){
					T.x=((a1.x*a2.y-a2.x*a1.y)*(a4.x-a3.x)-(a3.x*a4.y-a4.x*a3.y)*(a2.x-a1.x))/((a1.y-a2.y)*(a4.x-a3.x)-(a3.y-a4.y)*(a2.x-a1.x));
					T.y=((a3.y-a4.y)*T.x-(a3.x*a4.y-a4.x*a3.y))/(a4.x-a3.x);
					T.x*=-1;
					return T;
				}else{
					T.x=969; T.y=969;
					//text2("Паралельны");
				}
			}else{
				T.x=969; T.y=969;
				//text2("Паралельны");
			}
		}else{
			T.x=969; T.y=969;
			//text2("Паралельны");
		}
	}else{
		//text2("Пересечение вне отрезка");
		T.x=979; T.y=979;
		return T;
	}
}
                                     
        
            http://programmersforum.ru/showpost.php?s=2ce0c55a82de1e293561c547e  291e374&p=858737&postcount=5