Open
Conversation
5f6f940 to
48a6d08
Compare
for more information, see https://pre-commit.ci
behackl
requested changes
Apr 5, 2026
Member
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!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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