In the real world, a sphere, cylinder, or arch is perfectly smooth (if made by a master craftsman or builder), but in computer graphics you need to create a zillion little polygons to approximate said curves. My question then is what computer engineering breakthrough will allow you to draw a curved surface as a true curved surface, and not as an approximation made up of a bunch of little flat shapes?
Computer graphics are inevitably approximations, as they are built up of pixels of finite size.
But so are real word shapes, because solids are built of atoms and molecules, again of finite size. If you have a powerful enough microscope, you’ll see that no surface is smooth: it’s an approximation, built of atom-sized bumps.
First, what Giles said is correct.
Second, for all intents and purposes, what you’re talking about is vector graphics, which already exists.
This is simply not correct. True vector displays have already been around for decades. Those of us around in the 1970s and '80s will even recall some arcade games that made use of them.
Right, a vector-based graphic system can define some curves or surfaces exactly, but eventually you have to turn it into something that’s an approximation. That’s just how the universe works: at some level, everything is an approximation.
At a physical or chemical level, of course. Every sort of physical display is going to have to be made of individual molecules and atoms. But the difference between a vector display and a bitmap display is that the latter is dividied into of thousands of small, rectangular pixels, whereas the former is not. It’s easy for the naked eye to see jagged edges in lines and curves drawn on a bitmap display, but you’d probably need to use a microscope before you’d be able to see any physical imperfections in the line drawn by a vector display.
And if we’re taking “draw” literally, there are also plotters, which draw curves just fine, thank you very much.
One method of doing this, which I think hasn’t been mentioned here, without triangulating an approximation of a surface is to use ray tracing. For each pixel, a “ray” is sent through the scene, and then the objects’ surface equations can be used to determine whether the ray hit it or not. When a ray is determined to have hit a surface, different methods can be used to shade and color that specific point of the image, by taking the angle of incidence into account, various lights in the scene, lighting models, textures, etc. All that’s left is to assign the determined color to the pixel where the ray was initially originating from.
Illustration:
http://www.codinghorror.com/blog/images/ray-tracing-diagram.png
It’s quite easy to write a basic ray tracer, especially for geometric objects like spheres that have a simple representation (origin, radius). One can also add things like reflection for mirrors or shiny objects in general, refraction, shadows, etc.
Here is a sample image from somebody showing reflections, textures, shadows, and of course some good ol’ spheres:
http://www.markridgewell.co.uk/raytracer/3spheres.jpg
Smaller pixels.
Yes, but both only draw straight lines. Granted, the straight lines can be very short, but neither device is drawing a true curve. The length of the line segments is determined by the resolution of the D/A converter in your vector display, and by the number of steps/inch in the stepper motors of your plotter.
This is not really what’s happening, except when speed is essential (i.e. in realtime 3d applications).
If you want more exact results, it’s “just” a question of calculating the color of each pixel. You can do that by representing the surfaces / geometries as mathematical functions.
As an extremely simplified 2 dimensional example, the function for a circle with the origin at coordinate 0,0 with a 10 unit radius is xx + yy = 100. If you set x=0, y=0 at the center of the screen, you can set each (x,y) pixel/coordinate that for which xx + yy = 100 to white and the rest black, and voila, you’ve got a “perfect” circle.
That example doesn’t take into account that pixels have an actual width and height, so none of the pixels might match exactly, and that you can draw circles much more efficiently but you get the idea. Ray tracing etc are just much more elaborate examples of the same principle.
And this part isn’t true, either.
They may look perfectly smooth to the eye, but measure them accurately with calipers, and you will find they are not perfect. Or look at them with a magnifying glass, or a microscope, and you will find they are actually “a zillion” little flat sides that approximate a curve.
Really? I was sure the plotter, at least, could move both the paper and the pen continuously to create a true curve.
There need not be any revolution, we already have the technology: raytracing and other scanline rendering techniques. See any of Pixar’s films for examples of their use.
If you want realtime raytracing, then that’s necessarily limited by computational power. Massively parallel GPUs and CPUs (and the fact that raytracing is easily parallelisable) means its only a matter of time before we see real time raytracers running at resolutions higher than 320x240, too.
This assumes that the plotter is indeed driven by a stepper motor. I’m no mechanic, but it seems obvious to me that it’s possible to construct a plotter effecting true continuous motion, using, for example, falling weights.
And what sort of computer are you going to control your analog plotter with?
I know - an analog computer!
Maybe you can send Gort out to pick one up for you.
In the world of digital computers, there is only the appearance of continuity. Plotters are driven by digital signals that say how many steps to move the pen (or pen and paper) in each axis. The typical plotter resolution is no better than 1/2000 of an inch. SInce the pen tip has finite width, this resolution is sufficient to appear perfectly smooth on paper.
No they are not. Take a microscope to them and you’ll see they are anything but perfectly smooth. If anything, computer renditions are smoother than real life.
A regular one. Imagine a plotter consisting of a pen attached to a pendulum on a ball joint so that it can swing in two axes. If you tap the pendulum in a certain direction with a certain force, and impart to it a certain spin, you can precisely draw certain curves. A computer could easily control such a device. It would be limited in the number of unique curves it could draw, but those it could draw would be drawn exactly (modulo the granularity of the ink and paper).