Move everything into one directory, update links
This commit is contained in:
parent
b946ff9e70
commit
4eef8b2919
680 changed files with 1638 additions and 1638 deletions
141
50-05.html
Normal file
141
50-05.html
Normal file
|
|
@ -0,0 +1,141 @@
|
|||
<HTML>
|
||||
<HEAD>
|
||||
<META name=vsisbn content="1576101746">
|
||||
<META name=vstitle content="Michael Abrash's Graphics Programming Black Book, Special Edition">
|
||||
<META name=vsauthor content="Michael Abrash">
|
||||
<META name=vspublisher content="The Coriolis Group">
|
||||
<META name=vspubdate content="07/01/97">
|
||||
<META name=vscategory content="Web and Software Development: Game Development,Web and Software Development: Graphics and Multimedia Development">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<TITLE>Michael Abrash's Graphics Programming Black Book Special Edition: Adding a Dimension</TITLE>
|
||||
|
||||
<!-- HEADER -->
|
||||
<!-- Empty Reference Subhead -->
|
||||
|
||||
<!--ISBN=1576101746//-->
|
||||
<!--TITLE=Michael Abrash's Graphics Programming Black Book Special Edition//-->
|
||||
<!--AUTHOR=Michael Abrash//-->
|
||||
<!--PUBLISHER=The Coriolis Group, Inc.//-->
|
||||
<!--CHAPTER=50//-->
|
||||
<!--PAGES=945-946//-->
|
||||
<!--UNASSIGNED1//-->
|
||||
<!--UNASSIGNED2//--></HEAD><BODY LINK=#0000FF ALINK=#000099 VLINK=#0000FF BGCOLOR=#FFFFFF>
|
||||
|
||||
<CENTER>
|
||||
<TABLE BORDER>
|
||||
<TR>
|
||||
<TD><A HREF="50-04.html">Previous</A></TD>
|
||||
<TD><A HREF="index.html">Table of Contents</A></TD>
|
||||
<TD><A HREF="50-06.html">Next</A></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</CENTER>
|
||||
<P><BR></P>
|
||||
<P><B>LISTING 50.4 POLYGON.H</B></P>
|
||||
<!-- CODE //-->
|
||||
<PRE>
|
||||
/* POLYGON.H: Header file for polygon-filling code, also includes
|
||||
a number of useful items for 3-D animation. */
|
||||
|
||||
#define MAX_POLY_LENGTH 4 /* four vertices is the max per poly */
|
||||
#define SCREEN_WIDTH 320
|
||||
#define SCREEN_HEIGHT 240
|
||||
#define PAGE0_START_OFFSET 0
|
||||
#define PAGE1_START_OFFSET (((long)SCREEN_HEIGHT*SCREEN_WIDTH)/4)
|
||||
/* Ratio: distance from viewpoint to projection plane / width of
|
||||
projection plane. Defines the width of the field of view. Lower
|
||||
absolute values = wider fields of view; higher values = narrower */
|
||||
#define PROJECTION_RATIO -2.0 /* negative because visible Z
|
||||
coordinates are negative */
|
||||
/* Draws the polygon described by the point list PointList in color
|
||||
Color with all vertices offset by (X,Y) */
|
||||
#define DRAW_POLYGON(PointList,NumPoints,Color,X,Y) \
|
||||
Polygon.Length = NumPoints; \
|
||||
Polygon.PointPtr = PointList; \
|
||||
FillConvexPolygon(&Polygon, Color, X, Y);
|
||||
|
||||
/* Describes a single 2-D point */
|
||||
struct Point {
|
||||
int X; /* X coordinate */
|
||||
int Y; /* Y coordinate */
|
||||
};
|
||||
/* Describes a single 3-D point in homogeneous coordinates */
|
||||
struct Point3 {
|
||||
double X; /* X coordinate */
|
||||
double Y; /* Y coordinate */
|
||||
double Z; /* Z coordinate */
|
||||
double W;
|
||||
};
|
||||
/* Describes a series of points (used to store a list of vertices that
|
||||
describe a polygon; each vertex is assumed to connect to the two
|
||||
adjacent vertices, and the last vertex is assumed to connect to the
|
||||
first) */
|
||||
struct PointListHeader {
|
||||
int Length; /* # of points */
|
||||
struct Point * PointPtr; /* pointer to list of points */
|
||||
};
|
||||
|
||||
/* Describes the beginning and ending X coordinates of a single
|
||||
horizontal line */
|
||||
struct HLine {
|
||||
int XStart; /* X coordinate of leftmost pixel in line */
|
||||
int XEnd; /* X coordinate of rightmost pixel in line */
|
||||
};
|
||||
|
||||
/* Describes a Length-long series of horizontal lines, all assumed to
|
||||
be on contiguous scan lines starting at YStart and proceeding
|
||||
downward (used to describe a scan-converted polygon to the
|
||||
low-level hardware-dependent drawing code) */
|
||||
struct HLineList {
|
||||
int Length; /* # of horizontal lines */
|
||||
int YStart; /* Y coordinate of topmost line */
|
||||
struct HLine * HLinePtr; /* pointer to list of horz lines */
|
||||
};
|
||||
struct Rect { int Left, Top, Right, Bottom; };
|
||||
|
||||
extern void XformVec(double Xform[4][4], double * SourceVec,
|
||||
double * DestVec);
|
||||
extern void ConcatXforms(double SourceXform1[4][4],
|
||||
double SourceXform2[4][4], double DestXform[4][4]);
|
||||
extern void XformAndProjectPoly(double Xform[4][4],
|
||||
struct Point3 * Poly, int PolyLength, int Color);
|
||||
extern int FillConvexPolygon(struct PointListHeader *, int, int, int);
|
||||
extern void Set320x240Mode(void);
|
||||
extern void ShowPage(unsigned int StartOffset);
|
||||
extern void FillRectangleX(int StartX, int StartY, int EndX,
|
||||
int EndY, unsigned int PageBase, int Color);
|
||||
extern int DisplayedPage, NonDisplayedPage;
|
||||
extern struct Rect EraseRect[];
|
||||
</PRE>
|
||||
<!-- END CODE //-->
|
||||
<P><BR></P>
|
||||
<CENTER>
|
||||
<TABLE BORDER>
|
||||
<TR>
|
||||
<TD><A HREF="50-04.html">Previous</A></TD>
|
||||
<TD><A HREF="index.html">Table of Contents</A></TD>
|
||||
<TD><A HREF="50-06.html">Next</A></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</CENTER>
|
||||
|
||||
<hr width="90%" size="1" noshade>
|
||||
<div align="center">
|
||||
<font face="Verdana,sans-serif" size="1">Graphics Programming Black Book © 2001 Michael Abrash</font>
|
||||
</div>
|
||||
<!-- all of the reference materials (books) have the footer and subfoot reveresed -->
|
||||
<!-- reference_subfoot = footer -->
|
||||
<!-- reference_footer = subfoot -->
|
||||
|
||||
<!-- BEGIN SUB FOOTER -->
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
<!-- END FOOTER -->
|
||||
|
||||
|
||||
Loading…
Reference in a new issue