mmp / pbrt-v2

Source code for the version of pbrt described in the second edition of "Physically Based Rendering"
http://pbrt.org
990 stars 343 forks source link

Fix Paraboloid::Area(). #47

Closed ghost closed 9 years ago

ghost commented 9 years ago

It looks like Paraboloid::Area is not correct:

  1. It does not contain radius, which means paraboloid with different radius returns the same area.
  2. Since zmin < zmax, it actually returns a negative value.

src/main/pbrt.cpp contains 3 test cases. The results on my laptop is: old: Analytic surface area: -6.53139 Numerical surface area: 14.0804 Analytic surface area: -712.633 Numerical surface area: 39564.1 Analytic surface area: -4198.65 Numerical surface area: 418.419

new: Analytic surface area: 14.0808 Numerical surface area: 14.0804 Analytic surface area: 39587.1 Numerical surface area: 39564.1 Analytic surface area: 418.474 Numerical surface area: 418.419

mmp commented 9 years ago

Thanks!!