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

    −103

    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
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    package _3d
    {
    
        public class Vector extends Object
        {
            private var xx:Number;
            public var z:Number;
            private var L:Number;
            private var zz:Number;
            private var yy:Number;
            private var c:Number;
            public var x:Number;
            public var y:Number;
            private var s:Number;
    
            public function Vector(param1:Number = 0, param2:Number = 0, param3:Number = 0)
            {
                x = param1;
                y = param2;
                z = param3;
                return;
            }// end function
    
            public function mul(param1:Number) : void
            {
                x = x * param1;
                y = y * param1;
                z = z * param1;
                return;
            }// end function
    
            public function normalize() : void
            {
                var _loc_1:* = length;
                L = length;
                if (_loc_1 > 0)
                {
                    x = x / L;
                    y = y / L;
                    z = z / L;
                }
                return;
            }// end function
    
            public function revolutiony(param1:Number) : void
            {
                c = Math.cos(param1);
                s = Math.sin(param1);
                zz = z;
                xx = x;
                z = zz * c - xx * s;
                x = zz * s + xx * c;
                return;
            }// end function
    
            public function revolutionz(param1:Number) : void
            {
                c = Math.cos(param1);
                s = Math.sin(param1);
                xx = x;
                yy = y;
                x = xx * c - yy * s;
                y = xx * s + yy * c;
                return;
            }// end function
    
            public function toString() : String
            {
                return "(" + x + "," + y + "," + z + ")";
            }// end function
    
            public function clone() : Vector
            {
                return new Vector(x, y, z);
            }// end function
    
            public function revolutionx(param1:Number) : void
            {
                c = Math.cos(param1);
                s = Math.sin(param1);
                yy = y;
                zz = z;
                y = yy * c - zz * s;
                z = yy * s + zz * c;
                return;
            }// end function
    
            public function add(param1:Vector) : void
            {
                x = x + param1.x;
                y = y + param1.y;
                z = z + param1.z;
                return;
            }// end function
    
            public function crossProduct(param1:Vector) : Vector
            {
                return new Vector(y * param1.z - z * param1.y, z * param1.x - x * param1.z, x * param1.y - y * param1.x);
            }// end function

    Запостил: Lure Of Chaos, 21 Декабря 2010

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

    • показать все, что скрытоэтот код шедевр, но всю гениальность столь не тревиального решения тупым приматам не понять
      Ответить
    • Переназначить Vector - офигенное решение! :D
      Ответить
    • public function revolutiony
      public function revolutionx
      public function revolutionz
      Возможно объединить?..
      --
      var _loc_1:* - это Вы так названия переменным даёте?
      (очень похоже на дебаг swf)...
      Ответить
      • _loc_1 - это происки декомпилятора.
        Ответить
      • это не я, это я флеш-игруху декомпилил.
        меня смущает другое: полное отсутствие каких-либо структур и массивов. Че, неужто экшонскрипт не обзавелся такими вещами?
        Ответить
        • Так ведь используется:
          param1.x;
          param1.y;
          param1.z;
          --
          Ответить
          • а вот это че?
            private var xx:Number;
                    public var z:Number;
                    private var L:Number;
                    private var zz:Number;
                    private var yy:Number;
                    private var c:Number;
                    public var x:Number;
                    public var y:Number;
                    private var s:Number;

            по-моему, и здесь можно было использовать то же самое
            Ответить
            • Это - описание свойств класса Vector. Прямого аналога сишного struct нет, т.к. в нём нет смысла в AS. Массивы/хэши есть в полном объёме. В том числе и типизированные (Vector), которые автор кода неосторожно переопределил. Видать, не пользуется. Или использует классы по полному имени.
              Ответить
            • Это объявление тех самых полей, к которым обращаются через точку. Вы просто запостили сюда непонятный Вам код, да?
              Ответить
        • Кстати при декомпиляции, есть такие декомпиляторы, которые лезут в библиотеки и декомпилируют библиотечные фукнции тоже...
          Ответить
          • sothink swf decompiler. Среди поделок этого жанра мне как-то этот показался более адекватным... Вам не приходилось таким заниматься?
            Ответить
            • Да, SourceTec'овская тулза наиболее адекватная. Но я при вскрытии swf'ок применяю гибридный метод: частично вскрываю нативным дебаггером (OllyDBG).
              Ответить
            • > sothink swf decompiler
              это он... точно он...

              А вот OllyDBG юзать пока не приходилось...
              Ответить
              • Olly не для отладки swf, если что. Это дизассемблер/дебаггер нативного кода. Я его использую хитро: загоняю swf в standalone Flash Player (который exe, а не плагин к браузеру или ActiveX) и "олькой" дебажу сам Flash Player. Фишка в том, что Flash Player наиболее адекватно распаковывает swf, поскольку они для него родные.

                SourceTec'овская софтина, кстати, использует схожий подход: заставляет флэшевский ActiveX загрузить swf и вытягивает распакованные им ресурсы. На простых флэшках работает отлично. А вот на хитростях с использованием недокументированных AVM-опкодов или на попытках защитить swf от декомпиляции, часто валится.

                В общем, не нужно заставлять машину делать человеческую работу. И наоборот. ;)
                Ответить

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