Initial conversion to markdown
This commit is contained in:
parent
a96a114403
commit
5e10794a24
362 changed files with 67353 additions and 0 deletions
94
52-01.md
Normal file
94
52-01.md
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
------------------------ --------------------------------- --------------------
|
||||
[Previous](51-06.html) [Table of Contents](index.html) [Next](52-02.html)
|
||||
------------------------ --------------------------------- --------------------
|
||||
|
||||
Chapter 52\
|
||||
Fast 3-D Animation: Meet X-Sharp {#Heading1}
|
||||
---------------------------------
|
||||
|
||||
### The First Iteration of a Generalized 3-D Animation Package {#Heading2}
|
||||
|
||||
Across the lake from Vermont, a few miles into upstate New York, the
|
||||
Ausable River has carved out a fairly impressive gorge known as “Ausable
|
||||
Chasm.” Impressive for the East, anyway; you might think of it as the
|
||||
poor man’s Grand Canyon. Some time back, I did the tour with my wife and
|
||||
five-year-old, and it was fun, although I confess that I didn’t loosen
|
||||
my grip on my daughter’s hand until we were on the bus and headed for
|
||||
home; that gorge is deep, and the railings tend to be of the single-bar,
|
||||
rusted-out variety.
|
||||
|
||||
New Yorkers can drive straight to this wonder of nature, but Vermonters
|
||||
must take their cars across on the ferry; the alternative is driving
|
||||
three hours around the south end of Lake Champlain. No problem; the
|
||||
ferry ride is an hour well spent on a beautiful lake. Or, rather, no
|
||||
problem—once you’re on the ferry. Getting to New York is easy, but, as
|
||||
we found out, the line of cars waiting to come back from Ausable Chasm
|
||||
gets lengthy about mid-afternoon. The ferry can hold only so many cars,
|
||||
and we wound up spending an unexpected hour exploring the wonders of the
|
||||
ferry docks. Not a big deal, with a good-natured kid and an entertaining
|
||||
mom; we got ice cream, explored the beach, looked through binoculars,
|
||||
and told stories. It was a fun break, actually, and before we knew it,
|
||||
the ferry was steaming back to pick us up.
|
||||
|
||||
A friend of mine, an elementary-school teacher, helped take 65 sixth
|
||||
graders to Ausable Chasm. Never mind the potential for trouble with 65
|
||||
kids loose on a ferry. Never mind what it was like trying to herd that
|
||||
group around a gorge that looks like it was designed to swallow children
|
||||
and small animals without a trace. The hard part was getting back to the
|
||||
docks and finding they’d have to wait an hour for the next ferry. As my
|
||||
friend put it, “Let me tell you, an hour is an eternity with 65 sixth
|
||||
graders screaming the song ‘You Are My Sunshine.’”
|
||||
|
||||
Apart from reminding you how lucky you are to be working in a quiet,
|
||||
air-conditioned room, in front of a gently humming computer, free to
|
||||
think deep thoughts and eat Cheetos to your heart’s content, this story
|
||||
provides a useful perspective on the malleable nature of time. An hour
|
||||
isn’t just an hour—it can be forever, or it can be the wink of an eye.
|
||||
Just think of the last hour you spent working under a deadline; I bet it
|
||||
went past in a flash. Which is not to say, mind you, that I recommend
|
||||
working in a bus full of screaming kids in order to make time pass more
|
||||
slowly; there are quality issues here as well.
|
||||
|
||||
In our 3-D animation work so far, we’ve used floating-point arithmetic.
|
||||
Floating-point arithmetic—even with a floating-point processor but
|
||||
especially *without* one—is the microcomputer animation equivalent of
|
||||
working in a school bus: It takes forever to do anything, and you just
|
||||
*know* you’re never going to accomplish as much as you want to. In this
|
||||
chapter, we’ll address fixed-point arithmetic, which will give us an
|
||||
instant order-of-magnitude performance boost. We’ll also give our 3-D
|
||||
animation code a much more powerful and extensible framework, making it
|
||||
easy to add new and different sorts of objects. Taken together, these
|
||||
alterations will let us start to do some really interesting real-time
|
||||
animation.
|
||||
|
||||
### This Chapter’s Demo Program {#Heading3}
|
||||
|
||||
Three-dimensional animation is a complicated business, and it takes an
|
||||
astonishing amount of functionality just to get off the launching pad:
|
||||
page flipping, polygon filling, clipping, transformations, list
|
||||
management, and so forth. I’ve been building toward a critical mass of
|
||||
animation functionality over the course of this book, and this chapter’s
|
||||
code builds on the code from no fewer than five previous chapters. The
|
||||
code that’s required in order to link this chapter’s animation demo
|
||||
program is the following:
|
||||
|
||||
- Listing 50.1 from Chapter 50 (draw clipped line list);
|
||||
- Listings 47.1 and 47.6 from Chapter 47 (Mode X mode set, rectangle
|
||||
fill);
|
||||
- Listing 49.6 from Chapter 49;
|
||||
- Listing 39.4 from Chapter 39 (polygon edge scan); and
|
||||
- The **FillConvexPolygon( )** function from Listing 38.1 from Chapter
|
||||
38. Note that the **struct** keywords in **FillConvexPolygon( )**
|
||||
must be removed to reflect the switch to typedefs in the animation
|
||||
header file.
|
||||
|
||||
As always, all required files are in this chapter’s subdirectory on the
|
||||
CD-ROM.
|
||||
|
||||
------------------------ --------------------------------- --------------------
|
||||
[Previous](51-06.html) [Table of Contents](index.html) [Next](52-02.html)
|
||||
------------------------ --------------------------------- --------------------
|
||||
|
||||
* * * * *
|
||||
|
||||
Graphics Programming Black Book © 2001 Michael Abrash
|
||||
Loading…
Reference in a new issue