In The Road to Reality there are plots of surfaces that use a variable density of dots to suggest curvature. You can see some examples here and here.
I suppose they've been drawn by Penrose, but to me they look like something that could be quite easily generated algorithmically---say, starting from image of a surface of 3D object with lighting.
Some of my initial attempts at this below. First, for a sphere:
ImageAdd[#, ColorNegate@ImageEffect[#, {"SaltPepperNoise", 0.5}]] & [
Graphics3D[{GrayLevel[.25],
Specularity[White, 1], Sphere[]},
Lighting -> "Neutral",
Boxed -> False]
// Rasterize]
And for a more complex object:
Binarize@ImageAdd[#, ColorNegate@ImageEffect[#, {"SaltPepperNoise", 0.78}]] & [
Graphics3D[
{GrayLevel[.25], Specularity[White, 1], KnotData[{6, 2}, "ImageData"]},
Lighting -> "Neutral",
Boxed -> False]]
I'm decidedly inexperienced at using all of Mathematica's image processing functions, especially compared to others on this site! I've been reading the many answers to this related question to get ideas.
So I have two questions. Firstly, can some of you do better than I at generating these diagrams (I'm sure many can!), or perhaps point me in a fruitful direction?
Second, suppose I have a series of frames of surfaces that together make a smooth animation. As soon as I "Penrose-ify" them, I expect that the placements of the points in the frames will sort of "quiver" from frame to frame (if there is a random component in how they are placed), thereby breaking the continuity of the animation. How can one get around this?
I ask this question in hesitation after reading this on meta. I hope it will not be judged too similar to other questions or uninteresting. Personally I can see many semi-practical applications of automated ways to generate diagrams like these, e.g. for illustration purposes. Many thanks in advance.