Home › Forums › GAMES在线课程(现代计算机图形学入门)讨论区 › 作业2绘图舍入的bug This topic has 5 replies, 3 voices, and was last updated 4 years, 10 months ago by 戴皓天. Viewing 2 reply threads Author Posts 2020年3月4日 at 上午1:44 #3232 Score: 0 左趋趋Participant Karma: 4 pts void rst::rasterizer::set_pixel(const Eigen::Vector3f& point, const Eigen::Vector3f& color) { //old index: auto ind = point.y() + point.x() * width; auto ind = (height-1-point.y())*width + point.x(); frame_buf[ind] = color; } 改成 void rst::rasterizer::set_pixel(const Eigen::Vector3f& point, const Eigen::Vector3f& color) { //old index: auto ind = point.y() + point.x() * width; auto ind = (height-1-round(point.y()))*width + point.x(); frame_buf[ind] = color; } 2020年3月4日 at 下午5:42 #3256 Score: 0 Shi YuChen(助教)Keymaster Karma: 4 pts 感谢你的反馈! 2020年3月4日 at 下午5:48 #3258 Score: 0 戴皓天Participant Karma: 9 pts 请问一下这里为什么只对y做一个取整,而不对x取整呢。 因为我自己传的实参就是由整型索引转成float而构成的vector3f向量所以就没在这里考虑取整的问题了 2020年3月4日 at 下午6:28 #3262 Score: 0 左趋趋Participant Karma: 4 pts 理论上都应该取整,而且应该做边界判断,你其实可以写一个更准确的版本出来,我随便取一下只是避免了移行问题。 理论上,就不应该给set_pixel传递浮点值。 2020年3月4日 at 下午6:36 #3265 Score: 0 左趋趋Participant Karma: 4 pts 你看这样行不 void rst::rasterizer::set_pixel(const Eigen::Vector3f &point, const Eigen::Vector3f &color) { // old index: auto ind = point.y() + point.x() * width; int j = round(point.y()); int i = round(point.x()); if (j < 0 || j > height - 1) return; if (i < 0 || i > width - 1) return; // auto ind = (height - 1 - round(point.y())) * width + round(point.x()); auto ind = (height - 1 - j) * width + i; frame_buf[ind] = color; } 2020年3月5日 at 上午7:57 #3290 Score: 0 戴皓天Participant Karma: 9 pts 谢谢!这样写的话就很严谨了 Author Posts Viewing 2 reply threads You must be logged in to reply to this topic. Log In Username: Password: Keep me signed in Log In