{"action":"created","issue":{"url":"https://api.github.com/repos/ssloy/tinyrenderer/issues/6","labels_url":"https://api.github.com/repos/ssloy/tinyrenderer/issues/6/labels{/name}","comments_url":"https://api.github.com/repos/ssloy/tinyrenderer/issues/6/comments","events_url":"https://api.github.com/repos/ssloy/tinyrenderer/issues/6/events","html_url":"https://github.com/ssloy/tinyrenderer/issues/6","id":123467523,"number":6,"title":"z-buffer","user":{"login":"boddicheg","id":2886378,"avatar_url":"https://avatars.githubusercontent.com/u/2886378?v=3","gravatar_id":"","url":"https://api.github.com/users/boddicheg","html_url":"https://github.com/boddicheg","followers_url":"https://api.github.com/users/boddicheg/followers","following_url":"https://api.github.com/users/boddicheg/following{/other_user}","gists_url":"https://api.github.com/users/boddicheg/gists{/gist_id}","starred_url":"https://api.github.com/users/boddicheg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/boddicheg/subscriptions","organizations_url":"https://api.github.com/users/boddicheg/orgs","repos_url":"https://api.github.com/users/boddicheg/repos","events_url":"https://api.github.com/users/boddicheg/events{/privacy}","received_events_url":"https://api.github.com/users/boddicheg/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-12-22T11:51:38Z","updated_at":"2015-12-22T12:38:56Z","closed_at":null,"body":"Доброго времени суток!\r\n\r\nХочу сказать спасибо за ваши статьи на хабре о компьютерной графике - это то, что нужно таким новичкам, как я.\r\nИ, как полагается, у меня возникли некоторые вопросы по статье №3, и, когда у вас появится свободное время, прошу ответить.\r\n\r\nВ комментариях вы привели пример картинки с \"дырками\", когда mr. guyfawkes спросил у вас насчет хака\r\n```\r\n    P.x = j; P.y = t0.y+i; // a hack to fill holes (due to int cast precision problems)\r\n```\r\nВы указали, что это ошибка с округлениями, и добавили на репозиторий конструктор копирования для Vec3i с округлением.\r\n\r\nВ чем моя проблема: 1.png в прикрепленных\r\nВроде бы очень похоже на вашу картинку с \"дырками\". НО, я использую double представление точки, т.е. все коодинаты:\r\n```\r\n      struct vertice {\r\n        double x;\r\n        double y;\r\n        double z;\r\n```\r\nт.е. как видите, округлений особо нет(и да, я понимаю, что это медленне по сравнению с int)\r\n\r\nПоскольку у меня координаты типа [-1.0, 1.0], то и прохожусь я по по координатам с помощью такого костыля:\r\n```\r\n    for (double y = f.y; y < t.y; y += m_delta)\r\n```\r\nгде m_delta - некое магическое число(шаг), которое для 1.png  установлено в 0.001\r\n\r\nесли уменьшить шаг, то количество дырок уменьшается, но не пропадает(2.png - шаг установлен в 0.00035). Сами понимаете, что производительность падает при таком решении(у меня, для сравнения, 0.26105 сек для первого изображения, и 1.71324 сек для второго)\r\n\r\nНужна ваша конструктивная критика моих решений.\r\nвот код метода рисования треугольника: [github](https://github.com/boddicheg/simple_wkit/blob/158a1db8d99238a97b60f1b5ab80f0653760b155/examples/2d/tinyrenderer/app.cpp#L109)\r\n\r\n![1.png](https://cloud.githubusercontent.com/assets/2886378/11954683/10bd420c-a8b3-11e5-8022-328098aef886.png)\r\n![2.png](https://cloud.githubusercontent.com/assets/2886378/11954684/10be2334-a8b3-11e5-84c2-fd0217b99c7b.png)\r\n"},"comment":{"url":"https://api.github.com/repos/ssloy/tinyrenderer/issues/comments/166607969","html_url":"https://github.com/ssloy/tinyrenderer/issues/6#issuecomment-166607969","issue_url":"https://api.github.com/repos/ssloy/tinyrenderer/issues/6","id":166607969,"user":{"login":"ssloy","id":1029298,"avatar_url":"https://avatars.githubusercontent.com/u/1029298?v=3","gravatar_id":"","url":"https://api.github.com/users/ssloy","html_url":"https://github.com/ssloy","followers_url":"https://api.github.com/users/ssloy/followers","following_url":"https://api.github.com/users/ssloy/following{/other_user}","gists_url":"https://api.github.com/users/ssloy/gists{/gist_id}","starred_url":"https://api.github.com/users/ssloy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ssloy/subscriptions","organizations_url":"https://api.github.com/users/ssloy/orgs","repos_url":"https://api.github.com/users/ssloy/repos","events_url":"https://api.github.com/users/ssloy/events{/privacy}","received_events_url":"https://api.github.com/users/ssloy/received_events","type":"User","site_admin":false},"created_at":"2015-12-22T12:38:55Z","updated_at":"2015-12-22T12:38:55Z","body":"Добрый день, собственно, это и есть проблема округления.\nПопробуйте _перед_ отрисовкой всех треугольников округлить экранные координаты вершин.\nДС\n\n\nOn 15-12-22 03:51:39, Bogdan wrote:\n> Доброго времени суток!\n> \n> Хочу сказать спасибо за ваши статьи на хабре о компьютерной графике - это то,\n> что нужно таким новичкам, как я\n> И, как полагается, у меня возникли некоторые вопросы по статье №3, и, когда у\n> вас появится свободное время, прошу ответить\n> \n> В комментариях вы привели пример картинки с \"дырками\", когда mr guyfawkes\n> спросил у вас насчет хака\n> \n>     Px = j; Py = t0y+i; // a hack to fill holes (due to int cast precision problems)\n> \n> Вы указали, что это ошибка с округлениями, и добавили на репозиторий\n> конструктор копирования для Vec3i с округлением\n> \n> В чем моя проблема: 1png в прикрепленных\n> Вроде бы очень похоже на вашу картинку с \"дырками\" НО, я использую double\n> представление точки, те все коодинаты:\n> \n>       struct vertice {\n>         double x;\n>         double y;\n>         double z;\n> \n> те как видите, округлений особо нет(и да, я понимаю, что это медленне по\n> сравнению с int)\n> \n> Поскольку у меня координаты типа [-10, 10], то и прохожусь я по по координатам\n> с помощью такого костыля:\n> \n>     for (double y = fy; y < ty; y += m_delta)\n> \n> где m_delta - некое магическое число(шаг), которое для 1png установлено в 0001\n> \n> если уменьшить шаг, то количество дырок уменьшается, но не пропадает(2png - шаг\n> установлен в 000035) Сами понимаете, что производительность падает при таком\n> решении(у меня, для сравнения, 026105 сек для первого изображения, и 171324 сек\n> для второго)\n> \n> Нужна ваша конструктивная критика моих решений\n> вот код метода рисования треугольника: github\n> \n> 1png\n> 2png\n> \n> —\n> Reply to this email directly or view it on GitHub.*\n> \n"}}