1. ActionScript / Говнокод #1720

    −97.5

    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
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    //-------------------РИСОВАНИЕ и МАТЕМАТИКА--------------------------------
    //Рендерить сцену
    _root.onEnterFrame = render;
    
    //Функция отрисовки текущего положения
    function render()
    {
    	if (enable_anim)		//Рисовать только ЕСЛИ разрешена анимация, т.е. файл загружен
    	{
    		empty.clear();		//Очистка области для рисования
    		for (obj in arr_m)	//Пройтись по всем элементам кинематической схемы
    		{
    			switch(arr_m[obj].type){
    				case "crank":  /*type="0" l="50" angle="0" s0="2" s1="1"*/
    					//Кривошип
    					//trace(arr_m[obj].type);
    					//trace(arr_m[obj].num + " " + arr_m[obj].angle);
    					empty["arr_o"+arr_m[obj].s1]._x = empty["arr_o"+arr_m[obj].s0]._x +arr_m[obj].l*Math.cos(arr_m[obj].angle*k);
    					empty["arr_o"+arr_m[obj].s1]._y = empty["arr_o"+arr_m[obj].s0]._y +arr_m[obj].l*Math.sin(arr_m[obj].angle*k);
    					
    					if (enable_dv) //------------------------Движение звена разрешено-------
    					{
    						arr_m[obj].angle += 0.3; 
    						if (arr_m[obj].angle >= 360)
    						{ 
    							arr_m[obj].angle = 0;
    						}
    					}
    						
    					//Невидимка
    					if(arr_m[obj].hidden) continue;					
    					empty.lineStyle(2,0x404040);					empty.moveTo(empty["arr_o"+arr_m[obj].s0]._x,empty["arr_o"+arr_m[obj].s0]._y);
    					empty.lineTo(empty["arr_o"+arr_m[obj].s1]._x,empty["arr_o"+arr_m[obj].s1]._y);
    				break;
    				case "1":  /*type="1" l1="100" l2="100" s0="2" s1="3" s2="4"*/
    					//шатун + коромысло
    					//trace(arr_m[obj].type);
    					
    					var x0 = empty["arr_o"+arr_m[obj].s0]._x;
    					var y0 = empty["arr_o"+arr_m[obj].s0]._y;
    					var x1 = empty["arr_o"+arr_m[obj].s1]._x;
    					var y1 = empty["arr_o"+arr_m[obj].s1]._y;
    					
    					var r = distance(x0, y0, x1, y1);
    					var a0 = Math.acos((Math.pow(arr_m[obj].l1,2) + Math.pow(r,2) - Math.pow(arr_m[obj].l2,2))/(2*arr_m[obj].l1*r));
    					var a1 = get_angle(x0, y0, x1, y1); 
    					
    					var x2 = x0 + arr_m[obj].l1 * Math.cos(a1 - a0);
    					var y2 = y0 + arr_m[obj].l1 * Math.sin(a1 - a0);
    					//trace(a1/k);
    					
    					empty["arr_o"+arr_m[obj].s2]._x = x2;
    					empty["arr_o"+arr_m[obj].s2]._y = y2;
    					
    					//Невидимка
    					if(arr_m[obj].hidden) continue;
    					
    					empty.lineStyle(2,0x404040);
    					empty.moveTo(x0,y0);
    					empty.lineTo(x2,y2);
    					empty.lineTo(x1,y1);					
    				break;
    //... Тут еще очень много таких кейсов
    		}
    	}
    }

    Давненько писал на симулятор механический, это функция апдейта всех элементов.
    Что в остальном коде, догадаться несложно.

    Запостил: Werdn, 29 Августа 2009

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

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

    Ошибка компиляции комментария:
    1. Гости могут высказаться только в понедельник, среду, четверг или воскресение
    ava Семь раз отмерь — один отрежь, guest!
    А не использовать ли нам bbcode?
    • [b]жирный[/b] — жирный
    • [i]курсив[/i] — курсив
    • [u]подчеркнутый[/u] — подчеркнутый
    • [s]перечеркнутый[/s] — перечеркнутый
    • [blink]мигающий[/blink] — мигающий
    • [color=red]цвет[/color] — цвет (подробнее)
    • [size=20]размер[/size] — размер (подробнее)
    • [code=<language>]some code[/code] (подробнее)
    Проверочный код