New Feature: Implicit Surface#4640
Conversation
5f6f940 to
48a6d08
Compare
for more information, see https://pre-commit.ci
behackl
left a comment
There was a problem hiding this comment.
Hi! Thanks for the nice refactor, I generally like this cleaned up version quite a bit. There are some things I'd need you to take a second look at though:
- You have implemented the new surface using the ConvertToOpenGL metaclass meaning that when users run this with the
openglrenderer, some of the mobject's inheritance trees get swapped (its super ugly and somewhat temporary). However, when constructing there are at least two places where you use plain VMobjects or a VGroup; doing that breaks this mechanism.- You can use
self.get_group_class()instead ofVGroupto make the grouping renderer-independent, - and in the other place you would have to do something like
VMobject if config.renderer == "cairo" else OpenGLVMobject, given that you have replaced theThreeDVMobjectwhich was able to switch to OpenGL-logic itself.
- You can use
except Exceptionisn't great, and it would be better to at least re-raise the context of the last exception, or just actually catch expected exceptions, as far as possible.
Again, thank you very much for your effort!
ec0f938 to
07fed11
Compare
9eef8e3 to
a272936
Compare
for more information, see https://pre-commit.ci
|
Hi, thanks for maintaining this too. I added The except Exception has been changed to except AssertionError. |
Overview: What does this pull request change?
Surfacehas incorrect checkerboard coloring #4639Surfaceso that is shares a commonBaseSurfaceclass and methods with the newImplicitSurfaceThreeDVMobjectwhich is now deprecated with the fixed checkerboard coloring above.ImplicitSurfaceandSurfaceMotivation and Explanation: Why and how do your changes improve the library?
New
ImplicitSurfaceClassThis adds a new
ImplicitSurfaceclass to plot surfaces specified by implicit equations off(x,y,z)=0.This allows plotting of complex surfaces like gyroids which are otherwise difficult to specify via parametric equations.
Example: Gyroid
Example: Sphere
Checkerboard Coloring Fix
This also fixes an existing bug with checkerboard coloring of
Surfacewhich was discovered during refactoring.After Fix
Before Fix
Code for reproducing the problem
Misc Housekeeping
Surfaceclass since it shares common methods with the newImplicitSurface, keeping things tidy.ThreeDVMobjectwhich is deprecated with the refactoring.ImplicitSurfaceand regenerated the tests associated withSurfaceLinks to added or changed documentation pages
Further Information and Comments
This uses the existing
isosurfacepackage that is already being used in manim.Reviewer Checklist