1. C++ / Говнокод #19840

    −3

    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
    namespace raytracing
    {
        struct Scene::Implementation
        {
            std::vector<std::unique_ptr<RenderObject>> renderObjects;
            std::vector<Light> lights;
            Camera camera;
        };
    }
    
    Scene::Scene() :
        implementation{std::make_unique<Implementation>()}
    {
    }
    
    void Scene::insertObject(RenderObject* renderObject) noexcept
    {
        implementation->renderObjects.push_back(std::unique_ptr<RenderObject>{renderObject});
    }
    
    const RenderObject* Scene::getIntersectedObject(Ray ray, vec3f* intersectionPoint) const noexcept
    {
        const auto& renderObjects = implementation->renderObjects;
    
        if (renderObjects.empty())
            return nullptr;
    
        struct IntersectionData
        {
            const RenderObject* renderObject;
            float t;
            bool isIntersect;
            vec3f intersectionPoint;
        } temp{};
    
        for (decltype(implementation->renderObjects)::const_iterator iter = renderObjects.cbegin();
                iter != renderObjects.cend(); ++iter)
        {
            IntersectionData intersectionData;
    
            intersectionData.renderObject = (*iter).get();
            intersectionData.isIntersect = (*iter)->isIntersect(ray, intersectionData.t,
                    &intersectionData.intersectionPoint);
    
            if (intersectionData.isIntersect)
            {
                if (temp.isIntersect)
                {
                    if (temp.t > intersectionData.t)
                        temp   = intersectionData;
                }
                else
                    temp = intersectionData;
            }
        }
    
        if (intersectionPoint)
            *intersectionPoint = temp.intersectionPoint;
    
        return temp.renderObject;
    }
    
    namespace raytracing
    {
        struct Renderer::Implementation
        {
            vec3f trace(const Scene& scene, Ray ray) const noexcept
            {
                vec3f intersectionPoint;
                const RenderObject* const renderObject = scene.getIntersectedObject(ray, &intersectionPoint);
    
                vec3f color{};
    
                if (!renderObject)
                    return color;
    
                for (Light l : scene.getLights())
                {
                    const Ray lightRay{intersectionPoint, (l.position - intersectionPoint).normalize()};
    
                    float brightness = renderObject->getNormal(intersectionPoint).dot(lightRay.direction);
                    if (brightness < 0.0F)
                        brightness = 0.0F;
    
                    color += renderObject->getColor(intersectionPoint) * 255.0F * brightness;
                }
    
                return color;
            }
        }
    }

    Сумеете ли вы найти ошибку?

    Запостил: jangolare, 18 Апреля 2016

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

    • Ксоникс, что ли?
      Ответить
    • C++?
      Ответить
      • нет блядь, это Oberon-2
        Ответить
        • Сам себе ответил?
          Ответить
          • Сам себе ответил?
            Ответить
            • Сам себе ответил?
              Ответить
              • Combo-breaker. А то вы тут совсем в рекурсию уйдёте.
                Ответить
                • Не ушли бы, через два с половиной часа среда.
                  Ответить
                  • Так вот зачем это ограничение...
                    Ответить
                    • а у меня уже. Еще один день проебан...
                      Ответить
                      • > Еще один день проебан
                        Но зато осталось прожить на 1 день меньше. Надо во всём видеть положительные стороны.
                        Ответить
                        • Но я люблю жить!
                          Ответить
                          • зачем?
                            что в твоей жизни такого уж хорошего?
                            Ответить
                          • Зачем обманывать нас и себя? Если бы ты действительно любил жить - ты бы не считал день проёбанным.

                            З.Ы. Скоро у роскомнадзора будет ещё один повод забанить ГК.
                            Ответить
                            • да весна просто на улице, ау него бабы нету
                              вот он и депрессует
                              Ответить
                              • А я ведь предлагал ему купить дакимакуру...
                                Ответить
                                • а может просто перестать быть хикки?

                                  а то ведь если круг общения ограничен ГК, то шанс найти кого-нить не много
                                  Разве что с немцем местным подружиться
                                  Ответить
                                  • > перестать быть хикки
                                    Зачем?
                                    Ответить
                                    • Так то я очень даже не хикки

                                      Хожу, играю в настолочки, песни пою под гитару

                                      Просто рассказ, который я пишу, не клеится, поэтом у и день проебан
                                      Ответить
                                      • Вы оба с бормандом пиздец. Впрочем, о чём это я?
                                        Ответить
                                        • Я дожил до того для, когда меня сравнивают с самим бормандом!
                                          Ответить
                                          • А чем тебе борманд не нравится, он что, расово неполноценный или вообще негр?
                                            Ответить
                                            • > расово неполноценный
                                              > негр
                                              Хуже - анимешник.
                                              Ответить
                                              • фубля

                                                и уши лисьи у тебя есть?
                                                Ответить
                                                • ушки не страшно. Страшно когда есть ананльная пробка с лисьем хвостом
                                                  Ответить
                                                  • да Кегги, ну ио пыт у тебя
                                                    Ответить
                                                    • https://www.youtube.com/watch?v=9nfc4uSf4uo
                                                      Ответить
                                                      • Посмотрел я этого Вашего "слоника", теперь до меня дошло, какие извращенцы зесь сидят впечатление, надо сказать, двоякое; мерзко было - не без этого, - зато теперь мне ясен смысл пёрлов, вроде "Братиш, я тебе покушать принёс", "иди, работать - говно чистить", и некоторых других, также.
                                                        Ответить
                                                        • Сначала на парад, а потом в дом офицеров пойдём.
                                                          Ответить
                                                        • Если последнюю треть не смотреть - вполне ржачный фильм.
                                                          Ответить
                                                        • Полное погружение в говфилософию и культуру.
                                                          Чтобы испить традиционного английского чайку, надо почитать томик Шекспира.
                                                          Чтобы прочувствовать атмосферу ГК, надо посмотреть фильм про слоника.
                                                          Ответить
                                                        • просто заткнутьця, блядь, нужно чистить? чисти! говно лтцюда, пошёл, блядь! всё засрал, блядь, а от тебя! ну покушал хоть, когда ребята уходиди, зелёний слоник наш трубу, отламывает.)

                                                          ааа! эх, что же за дебил, бля, в тарелку с головы пахома под зад.) иди мойся, нахуй тогда спать. я… я ложусь тоже, сейчас лягу… я тебя сейчас я вмпомню, сейчас могу пизды дать, тебе, братишка! бляяя, заебаал, блядь!.. они спят, сука, блядь… ну чё ты… оторвалася!.. я не срао сегодня вообще!

                                                          уйди нахуй, мне не надо, ну не надо поспать, полежать немножка, братишка. ну что ты сердишься, покушать-то!.. мух убить что ли? чисти! блядь, висти. козлов этих, ёбаных, блядь!
                                                          Ответить
                                                        • Умница
                                                          Поешь сладково хлебушка
                                                          Ответить
                                                  • зато простатита не будет :3
                                                    Ответить
                                                  • Ладно пробка. Вон пидар банкой сгущенки закупоривается. Это страшно.
                                                    Ответить
                                                    • Вася, ты бревно из своей жопы уже достал, пидарас?
                                                      Ответить
                                                      • Да хватит уже этой гомосятины. Лучше неси её в укротред и там выясняйте.

                                                        Кстати а зачем ты на пидара отзываешься?
                                                        Ответить
                                                        • Было бы странно, если бы он не стал отзываться.
                                                          1. Имя у него такое.
                                                          2. состояние души
                                                          3. состояние жопы.
                                                          Ответить
                                                          • Вась, у тебя в жопе поезд проедет? А два разъедутся?
                                                            Ответить
                                                            • Соревнование?

                                                              Дамы и господа, два поезда. Кто больше?
                                                              Два поезда раз, два поезда два, два поезда три.
                                                              Продано пидару с синим ником.
                                                              Ответить
                                                              • Итак, у вас есть два поезда с ограничением на размер - N. Поезда поддерживают операции вход, выход, вперёд, назад.
                                                                Необходимо из этих двух поездов смоделировать поезд с таким же размером, но с дополнительным свойством -\
                                                                вход заполненного поезда вызывает затирание последнего пасажира.
                                                                где N=3.
                                                                Время пошло. Язык программирования любой
                                                                Ответить
                                                                • >> вход заполненного поезда вызывает затирание последнего пасажира.

                                                                  последний пассажир просто понимает, что поезд едет в жопу и выпрыгивает в окно
                                                                  Ответить
                                                                • Смотри,есть два поезда

                                                                  на какой сам сядешь, на какой мать посадишь?
                                                                  Ответить
                                                          • Объяснение про очередь и стек на примере васиной сраки.
                                                            Ответить
                                                            • И даже про дек - можно вставлять в голову, тогда выйдет с хвоста (аля очередь). А можно вставлять в хвост и доставать оттуда же (аля стек).
                                                              Ответить
                                                              • А что такое дек?
                                                                Ответить
                                                                • > А что такое дек?
                                                                  Ну написал же: Можно вставлять в голову, тогда выйдет с хвоста (аля очередь). А можно вставлять в хвост и доставать оттуда же (аля стек).

                                                                  https://ru.wikipedia.org/wiki/Двухсторонняя_очередь
                                                                  Ответить
                                                                  • Не совсем ты правильно написал же.
                                                                    Ответить
                                                                    • > Не совсем ты правильно
                                                                      Не упомянул про то, что из головы тоже можно доставать? Ну ок, подловил.

                                                                      Хотя у дека на односвязном списке и правда из головы нельзя доставать (или в хвост нельзя вставлять, в зависимости от реализации).
                                                                      Ответить
                                                                      • Я не зря спросил что это. Интуитивно и так было примерно понятно.

                                                                        >Хотя у дека на односвязном списке и правда из головы нельзя доставать (или в хвост нельзя вставлять, в зависимости от реализации).
                                                                        Так это не совсем дек будет? Таки обязан или нет?
                                                                        Кстати слышал что реальные связные списки практически не применяются ибо массивы или гибриды эффективнее даже на типикал юзкейсах для связных списков.
                                                                        Ответить
                                                                        • > Таки обязан или нет?
                                                                          Да хуй его знает. Честно. На английской вики эти варианты, кстати описаны.

                                                                          > реальные связные списки практически не применяются
                                                                          В прикладнухе - скорее да, чем нет. А вот в системщине довольно часто вшивают next/prev от кольцевого списка прямо в структуру с данными. Довольно удобно, когда доступ по индексу не нужен.
                                                                          Ответить
                                                                • дабл queue

                                                                  пидар ниграмотный
                                                                  Ответить
                                            • Наоборот, он мой кумир
                                              Ответить
                                        • > Вы оба с бормандом пиздец.
                                          Присоединяйся, у нас есть печеньки.
                                          Ответить
                            • мое свмоубийство из-за бородатых подстрекателей?
                              Ответить
                            • Неуловимый Джо, такой неуловимый. Не будет никто ГК банить.
                              Ответить
                • Сам себе ответил?
                  Ответить
    • > noexcept
      > push_back

      Зато ты знаешь модерн сипласплас.
      Ответить
    • >intersectionData.isIntersect = (*iter)->isIntersect(ray, intersectionData.t,
      > &intersectionData.intersectionPoint);
      вот тут intersectionData.t не инициализирован.
      Ответить
    • Блядь, а за поиск ошибок кто-нибудь будет платить? Ну или хотя бы кормить
      Ответить
      • а у тебя так все плохо что ты готов искать ошибки в чужом С++ коде за еду?
        Ответить
        • Ну хотя бы за еду, но не бесплатно же...
          Ответить
    • надо unique_ptr передвинуть в неймспейс std::i_know_what_im_doing.
      Ответить
      • Почему?
        Ответить
        • потому что он нужен настолько редко, что его чаще используют не по назначению.
          Ответить
          • > потому что он нужен настолько редко
            Говорите за себя, сударь
            Ответить
          • > потому что он нужен настолько редко
            Говорите за себя, сударь
            Ответить
          • Как его можно использовать не по назначению? Это ж не auto_ptr...
            Ответить
            • Ну я вот думаю, что как то можно, потому что нихуя в крестах не понимаю. Antervis наверное хотел сказать тоже самое
              Ответить
              • >>, потому что нихуя в крестах не понимаю
                вот потому-то ты и не нужен
                Ответить
                • Буянит гость, глаголит он
                  Никто мол больше не нужОн
                  Ни борманд, ни паскаль, ни я
                  Не пожалел он и себя

                  И вот бессильный слышен стон
                  "Гость тоже не нужОн..."
                  Ответить
                  • >> я
                    >>себя
                    очень хуевая рифма, кстати

                    теперь я точно убедился что ты не нужен
                    Ответить
        • unique_ptr не нужен
          Ответить
    • Возврат указател на локальную переменную. Лучше б тоже юник вернул.
      Ответить
    • ДНК.
      Ответить
    • Вот же она *тыкает пальцем в монитор*
      Ответить
    • Где здесь ошибка, jangolare?!
      Ответить

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