1. Си / Говнокод #8328

    +138

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 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

    Запостил: Akari, 27 Октября 2011

    Комментарии (9) RSS

    Добавить комментарий