World类其他都一样的,就修改build函数就行了,以后测试所有代码,都是基于两个或多个球体的,不再重复阐述。
void World::build() { vp.set_hres(200); vp.set_vres(100); tracer_ptr = new MultiSphere(this);//这里变成MultiSphere Geometrics* obj = new Sphere(0, 0.5); obj->set_color(RGBColor(1, 0, 0)); add_object(obj); obj = new Sphere(Point3(0, -100.5, 0), 100); obj->set_color(RGBColor(0, 0, 1)); add_object(obj); }
运行后看下测试效果:
还行吧,如果照书上的World::Render代码,你会发现,这个图像是颠倒的。哈哈哈哈。因为默认的是从左上角向右下角渲染。