CA1293814C - Parallel surface processing system for graphics display - Google Patents

Parallel surface processing system for graphics display

Info

Publication number
CA1293814C
CA1293814C CA000580379A CA580379A CA1293814C CA 1293814 C CA1293814 C CA 1293814C CA 000580379 A CA000580379 A CA 000580379A CA 580379 A CA580379 A CA 580379A CA 1293814 C CA1293814 C CA 1293814C
Authority
CA
Canada
Prior art keywords
generating
data
parallel
processor
spline
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CA000580379A
Other languages
French (fr)
Inventor
Bob C.C. Liang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of CA1293814C publication Critical patent/CA1293814C/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation

Abstract

ABSTRACT

A Pipeline and Parallel Processing system for generating Surface Patches for both Wireframe and Solid/Shaded Models in a Raster Graphics Display. The inputs to a Transformation Processor are the parameters for the Rational Bezier Surfaces: a 2-dimensional array of control points, and weights. The outputs are the coordinates of the corner points and the normals (to the surface) of the patches, which make up the surface. The system consists of three Pipeline stages: 1. A front-end processor fetches the data from memory and feeds the Transformation Processor: 2. four Floating Point Processors in Parallel for tessellating the surfaces into small patches; and 3. one Floating Point Processor for generating normals at the vertices of the small patches. The output is sent to the rest of the Graphics System for clipping, mapping, and shading.

Description

A PARALLEL SUR~ACE PROCESSING SYSTEM FOR ~RAPHICS DISPLAY

BACKGROUND OF TRE INVENTION
J, ~ield ~f the _ ntion ~his inventio~ relates to computer graphics displav systems, a~d more particularly relate~ to such a graphics computer ~ystem tha~ employ3 parallel processors in a display processor portion thereof.

Backqround Art Be~ides Lines, Markers and Polygons, Computer Graphic3 ~isplays today support more qeneral geometric primitives, such as Spline Curves and Sptine Surfaces.

In the Co~puter Aided Design~Computer Aided Manufacture ~"CAD/CAMn) area, most of the geometri~ data can be covered ~ by ~sing Non-Uniform Rational B-Spline of degree less th~n ;~ 15 or equal to ~hree-linear, quadrati~ or cubi~ (see the sections below). For Non-U~iform Rational B-Spline Surfaces, there exist techniqu~s to break up the surface into simpler Rational Bezier Surface Patches.

A system i5 descrihed herein which uses Parallel ZO Processors to implement the di~play function o~ Rational Bezier Surface patches for both wireframe ~oael and solid~shaded model. The use of Parallel Processors to implement display functions in computer graphics system has been described generally in an article bY James Clark of 25 : Stamford Universitv, "A V~SI Geometry Processor for Graphics," Clark~ James, COMP~TER, Julv 1380, pp. 59-68.
.. ~

KI9-86-Oll -l-U.5. Patent No. 4,187,539 to Ea~on describes a pipelined data processing system with ~entralized microprogram control.

, However, ab~en~ in t~e prior art is a processin~ system that permits efficient parallel and pipelined processing for generating surfac~ in~ormation for a graphics display svstem~ Prior art arrangements require complicated and extensive external control logic, where attempts have been made ~o combine a number of processors together in graphics processing. A~ a result, progress heretofore in the area of more efficient proces~ing in workstations o~ graphics computer systems has been limited.

For example, conventionally CAD~CAM applications use graphics workstations by sending down the polygons which make up the objects stored in the host computer data base, rather than the Spline surface form data stored in the data base. According to this procedure, the host computer decomposes the Spline surface into flat polygons, and then srlds the polygons to the graphics works~ation. The graphics workstation then processes the polvgons for display.

~he drawbacks of this approach are several. First, the host processor takes more time to do the Spline surface de~omposition than would be desired. Second, by requiring 25 ~ the host processor to generate the data corresponding to the polygons, more data must be sent between ~he host processox and the graphics workstation. This ties up the transmission link which may be sharing with other applications and graphics workstations. Thirdly, when local 200ming is applied to the polygonal data, the displav of the model loses its smoothness. As a re~ult, the program in the 3~

graphics workstatiOn must notify the host computer to decompose the surface data and send the polygon a~ain, to restore the smoothnes5 of the object being zoomed.
.. / .
Ac~ordingly, it is an object of ~he present in~ention -5 to provide a proce~sing system that generate~ surface information for a graphics display svstemO

It is a further ob~ect of the invention to provide a processing system wherein ~he processing to generate surface information is performed in parallel, pipelined fashion.

It is a still further object of the present invention to provide a processing system in which surface info~nation is generated according to rational B Spline computation in an eficient manner.

It is a still further ob~ect of ~h~ present invention to provide a processing system in which Spline $urface computation of poly~ons can be performe~ in a graphics workstation, rather than in a host pr_cessor.

SU~IARY OF T~IE INVENTIO~

The present invention pro-~ides a method and apparatus for generating surface infonmation for a graphics display system. Data that represents the surface to be processed is provided $rom ~torage to a transformation processor that further comprises a plurality of floating point processors connected in parallel. The data is processea in parallel in the transformation processor, such that the surface is tesselated into a plurality of patches. A floating point processor is provided for further processing to generate the normals at the vertices of the patches, the furth~r float~ng KI9-86-Oll -3 ':
~3 !3i4 point processor being connected ~o the ou~puts of the parallel processors.

This novel arrangemen~ of floating point processors in parallel and pipeline configurat~on repre~en~ an advance in .5. the art ~ha~ permits the generation o~ surface data in an efficient manner, as compared with prior ar~ arrangemen~s.
By doing the processing to tesselate a surface into patches b~ wav of processors connected in. parallel,. and then providing that data to a further processor and pipeline to generate the normals at.the ~ertices o~ the patches, greatly enhanced processing, e~ficiency is provided as compared with the prior art.

The foregoing and other ,obje,cts, eatures and : , ad~antages of the,invention will be ap,pare~t from the more particular description of the preferred embodiments of the ; invention, as illustrated in the accompanving drawings.

Fig, 1 is a block diagram of a raster graphics system embodying the present invention.

Fig. 2 is a block diagram of a transformation processor embodying the present invention.

' Fig. 3 is a flow chart of a functional partitio~ for : surface patch processing according ~o the present invention.

Fig. 4 is a block diagram of a svstem for generating rational bezier surfaces according to the present invention.

Fig. 5 is an input/output of the system components.

KI9-86-Oll _4_ 3L~931~3~4 Fig. 6 is a surface patch orientatio~.

Fig. 7 is a ~low chart o~ a X-component processor according to the present invention.

Fig. 8 is a f1QW ehart of a Y-component processor 5according to ~he present inventio~.

Fig. 9 is a flow chart of a Z-component pro~essor according to th~ presen~ invention.

Fig. 10 is a ~low chart of a W-component processor according to the present invention.

10Fig. 11 is a procedures for generating points.

Fig. 12, which includes Figs. 12, 13 and 14 together is a flow chart of patch processing in aocordance with the present invention.

Detailed Descri~tion of the Preferred Embodiment .. ..... . .
~ lS of the Invention .
A Graphics sys~em for raster display in accordance with the preferred embodiment of the present invention is descrihed in this section and shown in block diagram form in Fig. 1. The the display has 24-bit planes, and the Z0resolu~ion is 1024 by 1024. ----,~
Raster Graphics Displa~ System 10 is shown in Fig. 1.
It comprises System Memory 12, a Display Processor 14, and Video Pixel Memory 16 which is read to drive a Monitor (not shown3. Memories 12, 16 are of conventional desi~n~ and are 25not explained in detail herein.

~, ~ '~I

The Display Pro~essor 14 compriseS:

1. a Graphics Control Processor (GCP) 20, 2. a Transformation Processor ~TrP) 30, 3. a Drawing Processor (DRP) 40, and 5. 4O a Shading Processor (ShP~ 50O

DRP 40 and ShP 50 operate in pipeline and/or parallei.
They are special purpose proce~sors that exe~ute programs residing in system memory 12, using a set of prestored ~ ~pr~7ograms residin~ in ~their own wri~able contrvl store. They use their ow~ working memory, to store constants and parameters, used by the programJ

There are two types of geometric data processed by the Graphics Display System 10:

1. Wireframe Data ~ 15 This data includes the basic geometric prïmitives : ~ lines (vectorsl, markers, and polygons (the edges of the polvgons~, the segments representing : spline c~rves, and the segments representing the boundaries of a spline ~ur~ace patch (wireframe model).

2. Solid and Shaded Surface Data The data flow through System 10 shown in Fig. 1 is from the System Memory 12, through the GCP-TrP-DrP pipeline of Displa~ Processor 14 to the Video Pixel Memory 16, then to the monitor (not shown) for display.
-~L2~93~14 .

For the processing of the geometric primitives, the Functional Partition o~ the graphics system is as follows:

fe~ches and processes instructions from the S~stem Memory 12 decomposes the non-uniform ~a~ional B splin~ into Rational Bezier Patches;
:: ~
passes the geometric data to the TrP 30 for ` `
trans~ormation and clippiny;

passes the command (e.g. frame co,ntrol orders) to the DrP 40.
TrP - 30 receives the geometri~ data (e.g. end points of lines) from GCP 20;

transforms and clips the coordinates of the data in the floating point format;
generates the segments for the spline cur~e generates the boundarY data for the surface patch;

passes the data to the DrP 40 for the drawing of wireframe mo~el;
.
passe.s the data to the ShP 50 for the drawing of solid/shaded model.

DrP ~ 40 receives the geometric data - lines 7 characters markers, polvyons from the ~rP 30 and ras~erizeS
the data to the Video Pixel Me~ory 16 for display receives the commands from GC~ 20 and interfaces with :
- a Vector-to~Raster Converter:
: ~ viaeo Pixel Memory Frame Buffers;
- a Viaeo ~ook-Up Table;
all of conventional design.

ShP - 50 receives the geometric data--boundary information about the surface patches, the coordinates of the corners, and the normals from the TrP 30--s~hades the patches by calculating the color/intensitv for each pixel, and then rasterizes the data to ~he Video Pixel Memory 16 for display.

A major building block o the Display Processor 14, :: used repeatedly throughout as described ~elow, is a Graphics Floating Point Processor, a VLSI processor with 32-bit ~ : floating point capability.
~, . .
~ , It includes: :
,?
: C~ ~ 1. a floating point multiplier;

7 2. a floating point adder, also used as an ~ accumulator for the multiplier;

KI9-86-011 ~8-, .

~L2~38~

3. a simple sequencer, 4. RAM for microcode;
5. FIF0 for input and output for înterface;
:
; 6. Sixty-four registers for storing data.j Floating point processors are known generally in the art. U.S. Patent No. 4,876,644, issued January 24, 1989, discloses an invention which provides special input and output FIFOs for advantageous parallel and/or pipelined interconnection in the manner herein described. The Graphics Floating Point Processor can be used in a number of different configurations as will become apparent from the description below.

GCP 20 includes a CPU, an interface to the Transformàtion Processor 30, a bus interface, and a floating point processor, e.g. a Graphics Floating Point Processor.
,~ .
TrP 30, shown in Fig. 2, comprises ten Graphics Floating Point Processors (hereinafter "GFPP"), in serial and parallel a~ shown to handle transformation, clipping, and mapping.

The GCP 20 - TrP 30 data interface is the 32-bit IEEE floating point format.

The output 32 of the TrP 30 is sent to the D~P 40 and to a register (not shown) which can be read by the GCP 20.

,~

~?~

~Z~3~
. .

The TrP 30 consists. of ten GFPP chips, which are arranqed in ~he following four stagesO

1. Transformation Module 300 four GFPPs 310, 320, 330, 340, ~n parallel for transformation, generatin~ spline curves, and generatin~ spline surface patches.
.: . . .
. 2. Surface Patch Module 350 one GFPP ~or generatin~ the ~oundary da~a ~or surface patches - vertices coordinates and norm~ls (tesselation).
3. Clipping Module 301 ' : three GFPPs 360, 37Q, 380, in series for line and polygon clipping.

4. Mapp~ng Modu}e 302 two GFPPs 390, 400, in series for perspective projection and mapping to the viewport on the screen.

The TrP 30 supports Ratio~al Bezier Surfaces. The definition of the Cubic Rational Bezier Surface Patches are :20 covered here; the case of Quadratic is similar.
.
The Rational Bezier Surface Patch is defined by:

.

~ ~I9-86-011 -10-12~3~
.. .

1. Coordinates of sixteen control pointsy together with their associated weiqhts w~s (which are all ; positive) .~, j, ~
. for i - 1 to 4, and j ~ 1 to 4:

S Pri,j~ - ~x~ ,yti,j},z~ ,w{i,i~l : 2. Blending functions (for Cubic Bezier) Bl(t), B 2 ( t ), B 3 ( t ), B 4 ( t) Bl(t) ~ t)3 B2(t) = 3t~1-t)2 B3~) = 3~1-t)t2 B4(t) = t3 3. The parametric equations for the patch in ( s, t) for O<s<l and O<t<l: ~:

Xts,t) = sum(wEi~i}x~ Biis~Bi(t~)tsum(w~ )Bi(s)B~(t)) Y(s,t) = sum(w{i,j~y{i,j}Bi(s)B~(t))/sum~w{i,j}Bi(s)B~(t)) .
Z(s,t) ~ sum~wti,j~xli,j~Bi~s)Bj(tj)/sum(w~i,jlBi(s)Bj(t)) where the sum is over the index l<i<4, and 1<j<4.

:: ~ .
Using the notation of Homogeneous Coordinate, the above ~three parametric equations can be rewritten as follows: ;

: x(s,t) = sum~w~ x{i,j]Bi(s)Bj(t)) - ~ :
~: y(s,t) = sum(wli,j~y{i,~}Bi(s)B~(t)) ~I9-86-0ll ::
;

~3~1~

z(s,t) - sum(w~ z~i,j}P,i(s)Bj(t)) w(~,t) = sum~w~ s)BJ(t)) ~ .
: and .
X(s,t) = x(s,t)/w(s,~) ' Y(s, ) 3 y(s,t3/w(s,t) :
Z(s,t) - z(s,t)/w(s,t) .

Each of x~s,t), y~s,t), z(s,t), and w(s,t) is a polynomial o~ two variables; and each has sixteen terms~

all(s )~t ) + al2(s3)(t2) al3(s3)(t) + al4(s3) + a21(s2)lt3) ~ a22(s2)(t2) + a23(s2~(t) + a24(s2) + a31(s)~t ~ + a32(s)(t2) + a33(s)~t) + a34~s) + a41~t3) + a42(t2) + a43(t) + a44 There is another way to qenera~e the unctions x(t), Y(t), z(t), w(t);`

: 15 of the sixteen coefficients o~ each polynomials bv using matrix multiplication:

Let S be the lx4 matrix S a ( ~ s ~ s~ 1) i and ~1) T the 4xl matrix ' It3!
T = It2~ (2) ; ' ' The Cuhic splines can be represented as a 4x4 matrix vll v12 v13 v14l V = ~v21 v22 v23 v24~ (3) v31 v32 v33 v34 IV41 v42 v43 v44~ .

B~ selecting the elements in the matrix V, different splines can be generated.

e.g. Tbe ~ezi-r ~ILn~ is given by -l 3 -3 1 1 1 3 -6 3 0 1 ~3) 15! -3 3 0 0 1 1 1 0 o o I

Let Vt be the ~ranspose Matrix of V

vll v21 v31 v41 ~
Vt I v12 v22 v32 v4~ ~ ~4) 2~1 ~13 v23 v33 ~43 ~ . .
I vl~ v24 v34 v44 1 ~25~3~

for the Bezier s~line, Vt is gi~en b~

3 -6 3 0; / ' (4) . which is the same as V.
:
Let WX denote the 4x4 matrix - -~ wll~xll w12*x12 W13*x13 wl~*x14 1 WX ~ w21*x21 w22*x22 X23*X23 w24*x24 1 (5) ~ lO ~ w31*x31 w32*x32 w33*x33 w34*x3 ; ~ w41*x41 w42*x42 w43*x43 w44*x44 1 In the no~ation above, the five matrices are multiplied in the following order:

i lx4 matrix S
~ ~ ' 4x4 matrix V
:
4x4 matrix WX

~k4 matrix Vt 4xl matrix T
; ~ :
: The product S.V.WX.Vt.T is x(s,t~

Since V = Vt for Rational Bezier Surfaces, this is the : : same as the product S.V.WX.V.T.
. .

.

~. ~ : ' .~~ `:
3~1~
..

The product V.WX.V is a 4x4 matrix ¦ all al2 al3 al4 1 A = ¦ a21 a22 a23 a24 ;
¦ a31 a32 a33 a34 ¦
¦~a41 a42 a43 a44 ~
: . which are the coefficients of x~s,t).

Matric~s WY, WZ, and W can be defined in the same way to yield y(s,t), z~s,t), and w(s,t);

and matrices V.WY.V., V~WZ.V, and V.W.V will yield the coefficients matrices B, C, and D for y(s,t), z(s,t) and w(s,t).
for y(s,t) . ¦ bll bl2 bl3 bl4 ¦
: B = I b21 b22 b23 b24 1 I b31 b32 b33 b34 ¦
¦ b41 b42 b43 b44 ~i for z(s,t);
; . .
: :~ I cll c12 c13 c~4 C = I c21 c22 cZ3 c24 20~ c31 ~32 c33 c34 c41 ~42 c43 c44 ' .

.
: KI9-86-011 -15-~3~4 , .

for w~s,t);

¦ dll dl2 dl3 dl4 D = I d21 d22 d23 d24 -~ ! d31 d32 d33 d34 1 `~
¦ d41 d42 d43 d44 ~ .
The spline equation is invariant under an affine transformation:

If M is an af~ine transformation represent~d by the 4x4 matrix~

~ mll ml2 ml3 Q ~
M ~ m21 m22 m23 0 ¦
¦ m31 m32 m33 0 m41 m42 m43 1 !, then ~he Rational Bezier Surfaces after the transfo~mation is the same as the Rational Bezier Surfaces defined bv the same matrix V, same weights hut with the transfonmed control points.

There are two different types of graphics displavs associated with Rational Bezier Surfaces:

:20 : 1. the Wirefrzme Model, in which.the.~urface patch is displayed as wireframe meshes; and ~ :

2. the Filled or Shaded Model, in which the surface patch is displayed either in solid color, or as a shaded -model with given light sources which yield different color and intensity for each pixel on the patch.

~3~4 The four stayes in generating the spline curves for wireframe display are as followsO

ransform the sixteen control points;

. 2. Construct four polynomials^

x(s,~), y~st,t), z(s,t), w(s,t);
:, , 3. Compute the three equations for P(s,t):

Xts,t) = x~s,t)/w(s,~) Y(s,t) = y(s,t)/w(s,t) Z~s,tl = z(s,t)/w~s,t) for each of the x, v, z coordinates; and 4. Generate line segments from the three equa~ions for display:

Usin~ two parameters s,t to generate two families of parametric curves by two numbers ds and dt -for n = O to l/dt; generate line segments for the curve F(s) = P(s,n*dt) for m = O to ljds; generate line segments for the curve F(~) = Plm*ds,t).

KI9-86-Oll -17-, ~3~ 1~
" .
In Filled or Shaded ~odel processiny, TrP 30 ~enerates small patches ~or Shading. The parameters of each output patch are the coordinates of the four corner~ of the pat~h, and S the normal vector (to the s~r~ac~ at the corner.

The four stages in ~enerating the ~ational Bezier Surface patche~ for display are as follows:

1. ~ransform the ~sixteen control points;

2. Construct for polynomials to x(~,ti, y(s,t), z(s,t~, w(s,t):

Compute the three equations for P(s,t) o X~s,t) = x~s,t)/w(s,t) Y(s,t) = v~s,t)/wl "t) Z~s,t) = z(~,t)~w(s,t).

for each of the x, y, z coordinatas; and 4. Generate patches fro~n ~he three equations for display:

Using ~wo parame~ers s,t to generate two families of parametric curves by two numbers ds and dt -generate the coordinates of the four : vertices of a patch: for n = 0 to 1/d~; and , 3~
, .

for m = 0 to l/ds;

F~m,n~1) = P(m*ds,(nll~*dt) F (m,n) - ' P ~m*ds ,n*dt~ ~

F~m+l,n) = P(lm+l)*ds,n*dt) - . .
F(m~l,n~1) = P((m+l)*ds,(n+l)*dt) : generate normals (to the patch) at the . .
: vertices :;

output the data, and generate next patch.

The Rational Bezier Surfaces can be consid~r~d as a special case of the ~ore general Non-Uniform Rational B-Spline Surfaces.
' . ::
~`: A pre-processing program can be implemented in he GCP
20 to decompose Non-Uniform Rational B-Spline Surfaces into patches of Rational Bezier Surfaces according to kno~n mathematical procedures.

Now follows a brief description of the Rational Bezier - Spline Curves, which can be viewed as special case of Rational Bezier Spline Surfaces.
... .. ... _ The input of a Cubi~ Rational Bezier Spline Consists of 20: the coordinates of four control points: Pl, P2, P3, P4; and ; four positive numbers wl, w2, w3, w4, called weights.

~ Pl = (xl, vl, zl), wl `~ P2 = (x2, y2, z2), w2 3~ 4 : P3 = ~x3, ~3, z3), w3 P4 = (x4, v4, z4), w~

The formula for the cubic is as follows:

R(t) = Bl(t~ wl Pl ~ B2(t) w2 P2 + B3(t) w3 P3 ~ B4(t) w4 P4 w~t) = Bl~t3 wl ~ B2(t) w2 B3(t) w3 ~ B4 It) w4 : ~:

~lt) = R(t)Jw(t) ~
` :' . where t ranges ~orm 0 to 1.

: 10 P(t) represents three equations X(t), Y(t), Z(t) ' R~tl - (x(t),v(t),z(t)) : X(t) = x(t)/w(t) Y(t) = y(t)/w(t) , z~t) = z(t)/w~t) Bl(t), B2(t), B3(t), B4(t) are called the blending functions for cubi~ sp}ine:
:
: Bl(t~ t)**3 B2lt) = 3t(1-t)**2 ... ..
B3~t) = 3(1-t)t**2 20~ B4(t) - t**3 : There are three stages in generating the cubic spIine ~urves for display:

~ .
~ KI9-86-011 -20-1;293B~4 1. transform control points;

2. construct four polynomials x(t), y(t~ z(t)~ and w(t) from the control points, weights, and blending functions; ~ -3. the three ~quations are:

X~t) 2 X(t)/W(~) Ylt) ~ y(t)/w~t) Z(t) = z(t)/w~t) . .
for each of the x, y, z coordinate i 4. generate the line segment from the three equations ~or display~

The matrix expression for s~lines curves is covered above.

To generate segments approximating the spline, we choose a sequence of t-values between O and l in the increasing order O = tO, tl; tm = l; and evaluate the corresponding x, y, ~ value.

For simplicity, the t-value is chosen in such a way that the differences between two ad~acent t-values are the same.

Because the weights are posi~ive the curve is inside the convex hull generated by the four control points.

?3~
,, .

Let xdiameter = max(xl,x2,x3,x4~ - min(xl,x2,x3,x4) vdiameter - max(yl,v2,v3,y4) - min(vl,y2,y3,v4)-zdiameter ~ max(zl,z2~z3,z4~ - min(zl,z2,z3,z4) diameter = maxIxdiameter,ydiameter,zdiameter) S The num~er m is then ~iven by:
:, .
2 * diameter * window-to-viewport ratio.
:. . . .
: Assume f(t) ~- a t**3 + b t**2 + c t ~ d is a polvnomial function over the interval (0,1), and e = l/m is the increment.

To evaluation the polvnomial values:

Assume f(t) = a t**3 + b t**2 + c t + d is a polynomial. It can be expressed into the followin~ form ((a t + b) t + c) t + d.

For each t-value, we use three multiplication and three addition to evaluation the function.

The operation and microprogramming of the Pipeline sub-system which is comprised of the TrP 30 sets and Surface Patch Module 350 will now be described. See Fig. 3. Al~o ~ see Fig. 4 for the svstem configuration~ .

The output of GCP 20 is sent to the four Graphics Floating Point Processors, 310, 320, 330, 340, Isee Fig. 2) in parallel simultaneouslv - to their FIFOs.

'' , ~3~
, .

rhe outputs of ~he four GFPPs 310, 320, 330, 340, to the Sur~ace Patch Module GFPP 350 are stored in th~ outpu~
FIFO of the four GFPPs, and are, in turs~, read out by the : Surface Patch Module GFPP 350 synchronized by mi~rocode inside the GFPP.

The following is a description of the programming of the TrP 30, which comprises ~he TrP 30 and a Surface Pa~ch Module 350.

The Inputs and Outputs of these components are shown in Fig. 5.

Three commands, Load Spline Curve Ma~rix - LSCM, Atart Spline Surface Processing - STPSI and End Pline Surface Processing ENPS, are used in the system processing. They will now be described.

A. Load Spline Curve Matrix - LSCM
~: .
The LSCM command loads the Spline Curve Matrix or Surface Matrices to TrP 30. The command indicates whether the data words are matxix elements for one matrix for a Spline Curve, or elements for two matrices for a Spline Surface.

In Spline curve processiny, the LSCM control word is followed by 16 words of data - the matrix elements defining the spline: LSCM, sll, sl2, s13, s14, s21, s22, s23, s24, s31, s32, s34, s41, s42, s43, Sa4.

2S The Spline matrix is given b~
.
- I sll sl2 sl3 sl4 1 3~
,. .

s21 s22 s23 524 s31 s32 s33 s34 ~ s41 s42 s43 s44 1 The above 4x4 matrix is for Cubic Splines.

For Quadratic Splines, the 4th row and the 4~h column contain O's.
.
sll sl2 sl3 sl4 ~
s21 s22 sZ3 s24 I sl~ = s24 = s34 = s44 - 0 I s31 s32 s33 s34 I s41 = s42 = s43 = O
I s41 942 s43 s44 1 In Spline sur~ace processing, the LSCM control word is followed by 32 words o~ data - the matrix element defining the spline surface: LSCM, sll, sl2, sl3, sl4, s21, s22, 523~ s24, s31, s32, .s33, s34, s41, s42, s43, s44, tll, tl2, lS tl3, tl4, t21, t22, t23, t24, t31, t32,t33, t23, t41, t42, t43, t44.

There are ~wo matrices: S and T.

The Splin~ matrix S is given by:

sll sl2 sl3 sl4 I s21 s22 s23 s24 ~
s31 s32 s33 s34 1 .
s41 s42 s43 s~4 1 The above 4x4 matrix is for Cubic Splines.
, For Quadratic Splines, the 4th row and the 4th column contain O's.

~2~3~ 4 sll sl2 s13 sl4 !
s21 s22 ~23 s24 I sl4 8 c;24 = s34 = s44 ~ 0 s31 s32 s33 s34 I s41 = ~;42 = s43 = 0 ; s41 s~2 s43 s44 1 The Spline matrix T is given by ~ I tll tl2 tl3 tl4 : I t21 t~2 t23 tZ4 ~, I t31 t32 t33 t34 ~ t41 t42 t43 t44 The above 4x4 matrix is ~or Cu~ic Spline~.

. For Quadratic Splines, the 4th row and .the 4th column contain O's.

: I tll tl2 tl3 tl4 ~; I t21 t22 t23 t24 I tl4 = t24 = t34 = t44 =
I t31 t32 t3~ t3~ I t41 = t4~ = t43 = 0 I t41 t42 t43 t44 ' B. S~art Spline Surface Processing - STPS

: This command is followed by coordinates of contxol points and weights definin~ the spline surface.

The control points defining the surface are ~iven bv a - two dimensional array, associated with the S and T matricesu The command denotes the degree of the spline curves associated with the S matrix, either a cubic spline or a quadratic spline~

12~3~

., .

The command also denotes the degr~e of the spline curves associated with the T matrix, again, ei~her a cubic spline or a quadratic spline~

J, The ~ontrol points are given in a matrix format~

number of row = order of S curve, number of column - order of T curve, and order of S = degree of S+l.
.
Fo~ exampl~., if the command indicates S matrix. cubic spline, T matrix quadratic spline, then. the control points are given by the following matrix pll pl2 pl3 p21 p22 p23 p31 p~2 p33 p41 p42 p43 1 ; 15 where each pij - (xij, yij, zij) is a control point.
: Thus, the data flow is as follows: STPS, tag, xll, ~11, z}l, wll, x12~ Y12, z12, w12; xlj, yl~, zlj, wlj, x21, y21, z21, w21, x22, y22, z22, w22; x2j, y2j,.z2~, w2j; xil, til, zil, wil, xi2, yi2,,zi2, wi2; xij, yij, zij, F,NPS, :20 where i = b'ss' + b'01' :.
and j = b'tt' + b'01'.

C. End Spline Surface Processing - ENPS
, `~

:.

~ 2~31~

~his command signals the end of data list for a spline surface.

The followin~ is a procedure to generate Rational : Bezier Surface Patches., Although only cu~ic splines are covered here, the quadratic ones can be handled in the same way.

The generation of Rational Bezier Surfaces is done in the TxP 30 and ~he Surface Patch Module GFPP 350 (see FigO
4).

The input parameters for a cubic spline to the TrP 30 are as follows:

First, however, note that the following is the matrix generating the cub~c Bezier splines~

I ~11 512 sl3 sl4 I s21 s22 s23 s24 s31` s32 s33 s34 I s41 s42 s43 s44 1 Explicitlv, the cubic Bezier spline is ~iven bv the follQwing matrix:

3 -6 : 3 0 The data list consists of the coordinates of 16 points 25and 16 weights.

KI9-86-011 -2?-ir/~l, ~' 3~1~
.

xll, yll, zll, wll;
x12, yl2, z12, w12:
x13, yl3, z13, w13;
x14, yl4, z14, w14;
.5. x21, y21, z~l, w21;
x22, y22, z22, w22;
x23, y23, z23, w23:
x24, y24, z24, w24;
x31, y31, z31, w31;
1~ x32, y32, z32, w32;
x33, y33, z33, w33;
x34, y34, z34, w34;
x41, y41, z41, w41;
x42, y42~ z42, w42;
. X43, y43, z43, w43;
x44, y44, z44, w44.

The generation of the Cubic Bezier Spline by using Transformation Module GFPPs 310-340 will now be described.
., The procedure for generating x-coordinate data (GFPP
310) follows. See Fig. 7.

Pirst, the input is as follows.

:~ xll, yll, zll, wll; ~coordinates of sixteen poin~s and sixteen weights) x12, yl2, z12, w12;
x13, yl3, z13, w13;
xl~, ~14, z14, w14;
x21, y21, z21, w21 x22, y22, z22, w22;

31~

X23, y23, z23, W23;
X24, Y24, Z24, W24 X31, v31, z31, w31;
X32, y32, Z32~ W32;
X33, y33, z33, W33;
.. X24, v34, z34, W34;
X41, y41, Z41, w41;
X42, y42, ~4~, w42;
X43, y43, Z43, w43;
X44, y4~, Z44, W44.
.. . .
The output is ~he four x-coordinates for four corner~
of patch.

Constants involved are: mll,m~l,m31,m41 ,(first column of the transformation matrix Spline matrix) ! vll ,v12,v13,v14 1 :~
I V21 ,v22,v23,v24 : I V31,V32,V33,V34 ~41 ,v42,v43,v44 , The ~ezier spline is given by the following matrix.

_3 3 0 1 Variables involved are: tempal tempa2 tempa 3 all,al2,al3,al4l (coefficient matrix) a21,a22,a23,a24 la31,a32,a33,a34l 3~
.. .

la41,a42,a43,a44 The pro~edure is as follows.

1. Transform the vertex, and multiply the coordinate5 by . ............ w~ights ; 5 all ~-- mll*xll ~ m21*yll ~ m31~zll ~ m41 all ~-- all*wll al2 ~-- mll*xl2 + m21*yl2 + m31*zl2 + m41 al2 <-- al2*wl2 al3 <-- mll*xl3 + m21*yl3 + m31*zl3 ~ m41 al3 ~-- al3*wl3 al4 ~-- mll*xl4 + m21~yl4 ~ m31*zl4 ~ m41 al4 <-- al4*wl4.
a21 ~-- mll~x21 + m21*v21 + m31*z21 + m41 a21 <-- a21*wll a22 ~-- mll*x22 + m21*y22 + m31*z22 + m41 ~` a22 <-- a22*wl2 a23 <-- mll*x23 + m21*y23 + m31*z23 ~ m41 ~- a23 ~-- x23*w13 a24 c-- mll*x24 + m21*y24 + m31*z24 + m41 ~ ~ a24 <-- x24*w14 :~ a31 <-- mll*x31 + m21*y31 + m31*z31 ~ m41 a31 <-- x31*wll a32 <-- mll*x32 + m21*y32 + m31*z32 + m41 a32 <-- x32*w12 a33 <-- mll*x33 + m21*y33 ~ m3t*z33 + m41 a33 ~-- a33*wl3 a34 <-- mll*x34 + m21~y34 + m32*z34 + m41 a34 <-- a34*wl4 a41 <-- mll*x41 + m21*y41 + m31*z41 + m41 a41 c-- a41*wll a42 <-- mll*x42 + m21*y42 + m31*z42 + m41 ~ ~ .
R~9-86-011 -30-3~

" .

a42 <-- a42*wl2 a43 <~- mll*x43 + m21*y43 + m31*z43 + m41 a43 <-- a43*wl3 a44 ~- ml~*x44 + m21*~44 + m31*z44 ~ m41 a44 c-- a44*wl4 2. Generat~ the coefficien~s for the polvnomial e~uation.

Concatenate thr~e matri~es, V.WX.V~, for Bezier Splin~;
V is equal to V~. Ten ~erms of V are non-zero for cubic Bezier.

1~ a. Concatenate WX.Vt , where Vt - ~, and ~24 = ~33 - v34 = v42 = v43 = v44 = ~.

tempal <-- all*vll ~ al2*v21 + al3*v31 + al4*v41 tempa2 ~-- all*vl2 + al2*v22 + al3*v32 tempa3 <-- all*vl3 + al2*v23 ~ 15 al4 <-- all*vl4 :~ all <-- tempal al2 <-- tempa2 al3 <-- tempa3 tempal <-- a21*vll + a22*v21 + a23*v31 + a24~v41 tempa2 <-- a21*vl2 1 a22*v22 + a23*v32 tempa3 <-- a21*vl3 ~ a22*v23 a24 <-- a21*vl4 a21 <-- tempal a22 <-- tempa2 a23 <-- tempa3 tempal ~-- a31*vll + a32*v21 + a33*v31 ~ a34*v41 tempa2 <-- a31*vl2 + a32*v22 ~ a33*v32 . tempa3 c-- a31*vl3 ~ a32*v23 a34 <-- a31*vl4 a31 <-- tempal ; KI9-86-011 -31-1A 2 ~ 3 ~ ~l 4 ,. . .
a32 ~-- tempa2 a~3 <-- tempa3 tempal <-- a41*vll + a42*v21 t a43*v31 ~ a44*v41 tempa2 c-- a41*vl2 + a42*v22 + a43*v32 tempa4 <-- a41*vl3 ~ a42*v23 - a44 <-- a41*vl4 :~ a41 <-- tempal a42 ~-- tempa2 a43 <-- tempa3 : 10 b. Concatenate V (WX.Vt). Only ten terms of V, the matrix for cubic 8ezier, are non-zero, and v24 = v33 ~ v34 = v42 - v43 = v44 = 0.

tempal <-- vll*all + vl2*a21 + vl3*a31 + vl4*a41 tempa2 ~-- v21*all + v22*a21 + v23*a31 tempa3 <-- v31*all ~ v32*a21 ~` a41 <-- v41*all ~; all <-- tempal a21 <-- tempa2 a31 <-- tempa3 tempal <-- vll*al2 ~ vl2*a22 + vl3*a32 I vl4*a42 tempa2 c-- v21*al2 ~ v22*a22 + v23*a32 tempa3 <-- v31*al2 ~ v32*a22 a42 <-- v41*al2 al2 <-- tempal a22 <-- tempa2 a32 <-- tempa3 tempal <-- vll*al3 + vl2*a23 1 vl3*a33 + vl4*a43 tempa2 <-- v21*al3 ~ v22*a23 + v23*a33 tempa3 <-- v31*al3 ~ v32*a23 KI9-86-011 ~ -32~

d~3~ ~ 4 " .

a43 <-- v41~al3 al3 <-- tempal a23 <-- tempa2 a33 <-- tempa3 tempal < - vll*al4 ~ vl2*a24 + vl3~a34 + vl4*a44 tempa2 <-- v21*al4 + v2~*a24 + v23*a34 tempa3 <-- v31*al4 + v32*a24 a44 <-- v41*al4 al4 < - tempal a24 <-- tempa2 a34 <-- tempa3 .

End of Generating Equation.

3. The procedure for generating points is as follows.

The following variables are involved:

1 all,al2,al3,al4 1 (Coefficient matrix) a21,a22,a23,a24 a31,a32,a33,a34 a41,a42,a43,a44 tempal tempa2 tempa3 tempa4 ds dt svar tvar tva~l :. xlst x2nd KI9-86~011 -33-c 3$1 This procedure generates the ~-coordinates of the four corners of a patch by using the irtcremental s-values and t-values dt and ds calculated bv the GCP 20s , The equation is:
x(~
: a11(s3)(t3)+al2(53)(t2)+a13(s3)(t)+al4ls3) +a2l(s2)~t3)~a22(s2)(t2)+a23(s2)(t)+a24( +a3l(s)(t3)+a32(s)(t2)~a33(s)~t)+a34(s) +a41(t3)+a42(t2)+a43( )~a44 . , The output is two points for each increment of svar The output is for tvar < 1; Do for svar < 1: Do ' output x(svar,tvar) output x(svar,tvar~dt) end;
:`
The procedure is as follows.

a. Wai~ for GCP 20 to fi~ish calculating the incremental s-value and t-value ~0 ds, dt b. Use ds, dt to generate the line segment of the curve D

tvar = 0 tvar~ = dt svar = 0 for tvar < 1; Do ~ .
~ KI9-86-011 -34-~3~

for svar c l; Do tempal = ~(all*s~ar~a2l)*svar+a3l)*s~ar+a4l tempa2 - ((al2*svar+a22)*svar~a32~*svar+a42 tempa3 = (~al3*~var~a23~*svar~a33~svar+a43 tempa4 = ((al4*svar~a24)*svar~aL34)*svar+a44 xlst = (~tempal~tvar*tempa23*~var~tempa3)*tvar+temp4 output xlst x2nd = ((tempal~varl+tempa23*tvarl~tempa3)*tvarl~
temp4 output x2nd svar <-- svar + ds end:
tvar <-- tvar ~ dt tvarl ~-- tvarl ~ dt . end.

The procedure for generating v-coordinate data (GFPP
3201 now follows. gee Fi~. 8.
First, the input is as follows.

xll, yll, zll, wll; (coordinates o~ sixteen points and sixteen weights), x12, yl2, z12, w12;
x13, yl3, z13, w13;
x14, yl4, z14, w14;
x21, y21, g21, w21 x22, v22, z22, w22;
x23, y23, z23, w7.3;
x24, y24, z24, w24;
- x31, v31, z31, w31:
x32, y32, z32, w32;
;

: KI9-86-011 -35-, . .
38:~

x33, v33, z33, w33;
x34, y34, z34, w34;
x41, v41, z41, w41;
x42, y42, z42, w42;
~` 5 x43, y43, z43, w43;
. ~44, y44, z44, w44.

The output is the ~our v-coordinates for four corners of the patch.

Constan~s involved are: ml2,m22,m32,m42 ~second coll~mn of the transformation matrix) I vll,v12,v13,v14 ~ (Spline matrix) v21,v22,v23,v24 1 .
v31,v32,v33,v34 ! v41,v42,v43,v44 1 The bezier spline is given by the following matrix.
.
-' 3 -3 1 -3 3 ~ 0 I 1 0 0 0 t Variables involved are: tempbl tempb2 tempb3 bll ,bl2 ,bl3 ,bl4 ¦ (coefficient matrix) ~ ; ¦ b21 ,b22 ~b23 ,b24 : 25 I b31,b32,b33,b34 1 ¦ b41,b42,b43,b44 ¦
::
The procedure is as follows.

: KI9-86-011 -36-:~ .

1~3~1~

1. Transform the vertex, and multiplv the coordinate h~.
weight bll <-- ml2*xll + m22*yll + m32*zll ~ m42 : bll <-- bll*wll bl2 <-- ml2*xl2 + M22*yl2 ~ m32*zl2 ~ m42 bl2 <-- bl2*w12 : bl3 <-- ml2*xl3 + m22*y}3 + m32*zl3 ~ m42 bl3 <-- bl3*w13 ; bl4 <-- ml2*xl4 ~ m22*yl4 ~ m32*zl4 ~ m42 bl4 ~-- bl4*w14 bZl <-- mI2~x21 + m22*y21 + m32*z21 ~ m42 b21 <-- b21*wll b22 <-- ml2*x22 ~ m22*v22 + m32*z22 ~ m42 b22 <-- b22*w12 . b23 <-- ml2*x23 ~ m22*y23 + m32*y23 + m42 b23 <-- x23*w13 b24 <-- ml2*x24 ~ m22*y24 + m32*z24 ~ m42 b24 <-- x24*w14 .
b31 <-- ml2*x31 + m22*v31 + m32*z31 + m42 ~31 <-- x31*wll b32 <- 12*x32 + m32*y32 + m32*z32 + m42 ~ b32 <-- x32*w12 .` b33 <-- ml2*x33 + m22*y33 + m32*z33 + m42 ; b33 <-- b33*w13 b34 <-- ml2*x34 + m22*y34 + m32*z34 + m42 b34 <-- b34*w14 b41 ~-- ml2*x41 ~ m22*v41 + m32*z41 ~ m42 ~ b41 <-- b41*wll ; b42 <-- ml2*~42 + m22*y42 + m32*z42 + m42 b42 <-- b42*w12 b43 <-- ml2*x43 ~ m22*y43 ~ m32*z43 ~ m42 b43 c-- b43*w13 b44 <-- ml2*x44 ~ m22*y44 + m32*z44 + m42 ~-; KI9-~6-011 -37-~3~t~

b44 <-- b44*w14 2. Generate the coefficients for the polynomial eauation.

Concatena~e the three ma~rices ~.~X.Vt~ ~or Bezier Spline, V is e~ual to Vt. Ten terms of V are non-zero for cubic Bezier.

a. Concatenate WX.Vt , where Vt = V, and v24 - v33 = v34 = v42 - v43 = ~44 = 0.

tempbl C-- bll*vll ~ bl2*v21 + bl3*v31 + bl4*v41 ~empb2 <-- bll*v12 + bl2*v22 + bl3*v32 tempb3 <-- bll*v13 ~ bl2*v23 bl4 <-- bll*v14 bll <-- tempbl bl2 <-- tempb2 bl3 <-- tempb3 tempbl <-- b21*vll + b22*v21 + b23*v31 + b24*v41 tempb2 < - bll*v12 + bl2*v22 + bl3*v32 tempb3 <-- bll*v13 + bl2*v23 bl4 <-- bll*v14 bll <-- tempbl bl2 <- tempb2 bl3 <-- tempb3 tempbl <-- b21*vll ~ b22*v21 +.b23*v31 + b24~v41 : tempb2 <-- b21*v12 ~ b22*v22 + b23*v32 tempb3 <-- b~l*v13 + b22*v23 b24 <-- b21*v14 b21 ~-- tempbl b22 <-- tempb2 : b23 <-- tempb3 tempbl ~-- b31*vll ~ b32*v21 f b33*v31 + b34*v41 tempb2 <-- b31*v12 ~ b32*v22 + b33*v32 ~3~
. , :
tempb3 <-- b31*v13 ~ b32*v23 ~ b34 <-- b31*v14 :: b31 <-- tempbl b32 <-- tempb2 b33 <-- tempb3 ~;-. tempbl <-- b41*vll + b42*v21 + b43*~31 ~ b44*v41 tempb2 <-- h41*v12 ~ b42*v22 + b43*v32 . tempb4 ~-- b41*~13 + b42*v23 . b44 <-~ b41*v14 b41 c-- tempbl ~ b42 <-- tempb2 : ~ b43 <-- tempb3 .
b. Concatenate V,(WX.Vt).

Only ten terms of V , the matrix for cubic Bezi~r are non-zero.
': :
: ~ v24 = v33 = v34 = v42 = v43 = v4~ = 0 tempbl <-- vll*bIl + v12*b21 + v13*b31 ~ v14*b41 tempb2 <-- v21*bll + v22*b21 + v23*b31 : tempb3 <-- v31*bll + v32*b21 : 20 b41 <-- v41*bll bll <-- tempbl : b21 ~-- tempb2 b31 <-- tempb3 ~ tempbl <-- vll*bl2 + v}2*b22 + ~13*b32 + v14*b42 tempb2 ~-- v21*bl2 + v22*b22 + v23*b32 tempb3 < - v31*bl2 + v32*b22 . h42 <-- v41*bl2 bl2 <-- tempbl b22 <-- tempb2 b32 ~-- tempb3 : KI9-86-011 -39-: ~

3~i~
,. .

tempbl <-- vll*bl3 ~ v12*b23 + v13*b33 + v~4*b43 tempb2 <-- v21*bl3 ~ v22*h23 ~ v23*b33 tempb3 <-- v31*bl3 ~ v32*b23 b43 < - v41*bl3 bl3 <-- tempbl b23 <-- tempb2 b33 <- tempb3 tempbl <-- vll*bl4 + v12*b24 ~ v13*b34 ~ v14*b44 . tempb2 <-- v21*bl4 + v22~b24 + v23*b34 tempb3 <-- v31*bl4 + v32*b24 b44 <-- v41*bl4 bl4 <-- tempbl h24 <-- tempb2 b34 ~-- tempb3 ~nd of Generating Equation.

3. The procedure for ~enerating points is as follows:

Variables involved are:
: I bll,bl2,bl3,bl4 ¦ (coefficient matrix) ¦ b21,b22,b23,b24 1 -I b31,b32,b33,b34 b41,b4~,b43,b44 tempbl tempb2 tempb3 tempb4 ds dt svar tvar tvarl yl~st . ' , ~
~2~38~

v2nd This generates the y-coordinate~; of the four Gorners o~ a patch by using the incremen~al s-vall e and t-value, dt and ds calculated bv t:he GCP 20.

' 3~

The equation is y(s,t) bll(s3)(t3~+bl2(s3)(t2)+~l3(s33?t)~bl4(s3) b21( 2)(t3)+b22(s2)(t2)~b23~s2)(~)+b24(s ) + b31(s)(t3l+b32(s)(t2)+b33(s)(t)+b34(s) + b41(t3)~b42~t2)~b43(t)+b44.

The output is two points for each increment of svar.
In pseudocode, The output is for tvar < 1; Do for syar < 1; Do output y(svar,tvar) output y(svar,tvar~dtl end;
lS end.

The procedure is:

a. Wait for Graphics Control Processor to finish calculating the incremental s-value and t-value.
ds, dt ; 20 b. Use ds, dt to generats the line segment of the curve.
.
tvar = 0 tvarl = dt ~ ' 3~
,~ . , svar = 0 for tvar < l; Do for svar ~: Do tempbl = (~bll*svar~b21)~svar+b'l1)~svar+b41 S tempb2 - (~bl2*svar~b22)*svar+b~2)*svar~b42 - tempb3 ~ (~bl3*svar+b231*s~ar+~33)*svar~b43 tempb4 = ((bl4*svar+b24)*svar~b34~*svar+b44 ylst = ~(tempbl*tvar+tempb2~*tvar+~empb3)*tvar+temp4 . :
outpu~ ylst y2nd = ~(tempbl*tvarlltempb2)*tvarl+tempb3)*tvarl+temp4 output y2nd svar ~-- svar ~ ds end;

tvar ~-- tvar + dt -: 15 tvarl <-- tvarl + dt end.

The procedure generating z-coordinate data (GFPP now follows. See Fig. 9.
, First, the input is as follows:

~ 20 xll, yll, zll~ wll ~coordinates of sixteen points :~ and sixteen weights~
:~: ` : :
x12, yl2, z12, w12;
x13, yl3, z13, w1:3;
x14, v14, z14, w14;
~ .
KI9-86-011 -43_ :

x21, y21, æ21, w21;
x22, y2~, z22, w22;
x23, y23, z23, w23;
x24, v24, z24, w24;
x31, y31, z31, w31;
. x32, y32, z32, w32;
x33, y33, z33, w33;
x34, v34, z34, w34;
: x41, y41, z41, w~l;
x42, y42, z42, w42;
x43, y43, z43, w43;
x44, v44, z44, w4~;

The output is the four z-coordinates for four corners o~ the patch.

Constants involved are: ml3,m23,m33,m43 ~third column of the transformation matrix) vll,v12 v13,v14 1 (Spline matrix) v21,v22,v23,v24 v31,v32,v33,v34 I v41,v42,v~3,v44 1 The Be~ier spline is given by the following matrix Z51 1 0 o 0 : Variables involved are:
tempc 1 P3~

tempc2 tempc3 cll,c12,c13,c14 1 (coefficient matxix) I c21,c22,c23,c2 I c31,c32,c33,c34 - I c41,c42,c~3,c44 1 The procedure is a~ follows.

1. Transform the vertex, a~d multiplv the coordinate bv weight cll ~-- ml3*xll + m23*yll + m33*zll + m43 cll <-- cll*wll c12 <-- ml3*xl2 + m23*yl2 f m33*zl2 + m43 . c12 <-- c12*w12 c13 <-- ml3*xl3 + m23*yl3 f m33*zl3 + m43 ~ 15 c13 <-- c13*w13 c14 <-- ml3*xl4 + m23*yl4 + m33*zl4 + m43 ~: c14 <-- c14*w14 :; c21 <-- ml3*x21 + m23*v21 ~ m33*z21 + m43 c21 <-- c21~wll c22 <-- ml3*x22 + m23*y22 + m33*z22 + m43 c22 <-- c22*w12 c23 <-- ml3*x23 + m23*y23 + m33*z23 + m43 .; c23 <-- x23*w13 c24 <-- ml3*x24 + m23*y24 f m33*z24 + m43 c24 C-~ x24*w14 c31 <-- ml3*x31 + m23*y31 + m33*z31 ~ m43 c31 <-- x31*wll c32 <-- ml3*x32 + m23*y32 + m33*z32 + m43 c32 <-- x32*w12 c33 <-- ml3*x33 + m23*v33 + m33*z33 + m43 :~ c33 <-- c33*w13 ~ KI9-86-011 -45_ ~"~
~3 c34 <-- ml3*x34 + m23*y34 ~ m33*z34 + m43 c34 <-- c34*w14 c41 C-- ml3*x41 + m23*y41 ~ m33*z41 + m43 c41 c-- c41*wll c42 <-- ml3*x42 ~ m23*y42 ~ m33*z42 ~ m43 - c42 <-- c42*w12 c43 < - ml3*x43 + m23*y43 + m33*z43 + m43 . c43 <-- c43*w13 ; c44 <-- ml3*x44 + m23*v44 + m33*z44 + m43 .
: 10 c44 <-- c44*w14 .
2. Generate the coefficients for the polvnomial equation Concatenate three matrices V.WX.Vt.
For B~zier Spline, V i~ eaual to Vt.
Ten terms of V are non-zero for cubic Be7.ier.

~ 15 a. Concatenate l~.Vt , where Vt ~ V, and :~ v24 - v33 = v34 = v42 = v43 = v44 = 0.

:~ : tempcl <-- cll*vll + c12*v21 +c13*v31 + C14*V41 ~empc2 <-- cll*v12 I c12*v22 + c13*v32 tempc3 <-- cll*v13 + c12*v23 c14 <-- cll*v14 cll <-- tempcl ; c12 S-- tempc2 c13 <-- tempc3 tempcl ~-- c21~vll + c22*v21 + c23*v31 ~ c24*v41 tempc2 <-- c21*v12 + c22*v22 + c23*v32 tempc3 <-- c21*v13 ~ c22*v23 c24 ~ - c21*v14 c21 ~-- tempcl c22 C-- tempc2 c23 <-- tempc3 tempcl <-~ c31*vll + c32*v21 + C33*V31 + c34*v41 tempc2 <-- c31*v12 ~ c32*v22 + c33*v32 tempc3 C-- c31*v13 + c32*v23 c34 <-- c31*v14 S c31 <-- empcl J
. c32 ~-- tempc2 c33 s-- tempc3 tempcl <-- c41*vll + c~2~v21 ~ c43*v31 + c44*v41 tempc2 <-- c41*v12 + c42*v22 ~ c43*v32 tempc4 <-- c41~v13 + c42*v23 c44 ~-- c41*~14 c41 <-- tempci - c42 <- tempc2 c43 <-- tempc3 ~' Concatenate V.(WX.Vk3.

; Only ten terms of V, the matrix for cubic Bezier are non-zero~

v24 = v.~3 = v34 = v42 = v43 = v44 = 0 tempcl <-- vll*cll + v12*c21 ~ v13*c31 + v14*c41 tempc2 <-- v21*cll + v22*c21 + v23*c31 tempc3 ~-- v31*cll + v32*c21 c41 <-- v41*cll cll <-- tempcl c21 <- tempc2 c31 <-- tempc3 tempcl <-- vll*c12 ~ v12*c22 ~ v13*c32 + v14*c42 tempc2 <-- v21*c12 ~ v22*cc2 + v23*c32 tempc3 <-- v31*c12 + v32*c22 ~42 <-- v41*c12 c12 <-- tempcl ., 38~

c22 <-- tempc2 c32 C-- tempc3 tempcl <-- vll*c13 ~ v12*c23 ~ v13*c33 + v14*-c43 tempc2 <-- v21*c13 + v22*c23 ~ v23*c33 tempc3 <-- v31*c13 + v32*c23 c43 <-- v41*c13 : c13 <-- tempcl c23 <-- tempc2 c33 <-- tempc3 ; 10 tempcl <-- vll*c14 + v12*c24 + v13*c34 I v14~c44 -- tempc2 < - v21*cl4 + v22*c24 + v23*c34 tempc3 <-- ~31*c14 + v32*c24 c44 ~-- v41*c14 c14 <-- tempcl c24 <-- tempc2 c34 <-- tempc3 End of Generating Equation.

3. The procedure for generating points is as follows.

~: : Variables involved are:
I cll,c12,c13,c14 1 (coefficient matrix) c21,c22,c23,c24 c31,c32,c33,c34 ~ c41,c42,c43,c~4 : tempcl tempc2 .. _ .
tempc3 :: tempc4 ds dt 3~ svar ; tvar -, KI9-86-oll ~ -48-1;2931!319~
..~
tvarl zlst z2nd This generate~ the y-coordinates of the 4 corners 5- of a patch by using the incremental s-value and t-value dt and ds calculated by the GCP 20.

The e~ua~ion is -. y~S~t) ~ll(s3)(t3)+c12(s3l(t2)+c13(s3)(t)+c14~s3) l~ IC21(S2)(t3)+C22(52)(t2)~C23(S2)(t)lC24(S2) +c31(s)(t ) +c32(s)(t ) +c33(s)(t) +c34(s) ~c41(t3) +c42tt2) +c43(t) +c44 The output is two points for each increment of svar.

In pseudocode:

The output is for tvar ~ 1; Do , .
for svar < l; Do output z(svar,tvar) output x(svar,tvar+dt) end;
end. .. .

The procedure is:

a. wait for GCP 20 to finish calculating the incremental s-value and t-value ,~ .
~ KI9-86-011 -49-: :

ds, dt b. Use ds, dt to generate the line segment of the curve.

. tvar - 0 S tvarl = dt svar = 0 for tvar < l; Do for svar < l; Do tempcl = (~cll*svar+c21)*svar+c31)*svar+c41 lQ tempc2 - (~cl2*svar+c22)~svar+c32~*svar+c42 tempc3 = ~(cl3*svar+c23)*svar-~c33)~svar~c43 tempc4 = ((cl4*svar~c24)~svar+c34)*svar~c44 zlst = ((tempcl*tvar+tempc2)*tvar+tempc3)*tvar+temp4 output zlst z2nd = ~ttempcl*tvarl~tempc2)*tvarl+tempc3)*~varl+temp4 output z2nd ; svar <-- svar + ds end;

tvar <-- tvar ~ dt tvarl <- tvarl + dt end.

The procedure for generating w coordinate data (GFPP
340) now follows. See Fig. 10.
First, the input is as follows:

KI9-86-011 _50_ 3~
, xll, yll, zll, wll (coordinates of six~e2n point~
and sixteen wei~hts) x12, yl2, z12, w12 x13~ ~13, z13, w13; /`
x14, yl4, z14, w14;
x21, y21, z21, w21;
x22, y22, z22, w22, ~ x23, y23, z23, w23;
: x24, y24, z24, w24 x31, v31, z31, w31;
x32, y32, z32, w32;
x33, v33t z33, w33;
x3~, y34, z34, w34;
x41, y41, z41, w41;
x42, y42, z4~., w42;
x43, y43, z43, w43;
x44, y44, z44, w44.

The output is the inverse of 4 w value~ - wei~hts associa~ed with four ~~rners of a patch.
~ ' .

Constants involved are:
., ml4,m24,m34,m44 (fourth column of the transformation matrix) .. . . .
vll,v12,v13,v14 ~ ISpline matrix) ~ v21,v22,v23,v24 I v31,v32,v33,v34 v41,v42,v43,v44 1 The Bezier spline is given bv the following matrix:
~' '''~''1`"'`
._~ F 3 33~14 -3 3 0 a I
1 o o i o I
, Variables involved are:
tempdl tempd2 tempc3 ¦ dll,dl2,dl3,dl4 ¦ (coefficient matrix) ¦ d21,d22,d23,d24 t ¦ d31,d32,d33,d34 ¦
¦ d41,d42,d43,d44 ¦

1. Transform the vertex, and multiply the coordinate by weight.

dll <-- ml4*xll ~ m24*yll + m34*zll + m44 dll <-- dll~wll dl2 <-- ml4*xl2 + m24*yl2 + m34*zl2 + m44 dl2 <-- dl2*w12 ~: dl3 ~-- ml4*xl3 + m24*yl3 + m34*zl3 + m44 ;~.
dl3 < - dl3*w13 dl4 <-- ml4*xl4 + m24*yl4 + m34*zl4 + m44 dl4 <-- dl4*w14 d21 <-- ml4*x21 + m24*y21 + m34*z21 + m44 ~ d21 < - - d21*wll _ .
: 25 d22 ~-- ml4*x22 ~ m24*y22 + m34*z22 ~ m44 d22 <-- d22*w12 d23 <-- ml4*x23 + m24*y23 + m34*z23 -~ m44 d23 <-- x23*w13 d24 <-- ml4*x24 + m24*y24 + m34*z24 ~ m44 d24 <-- x24*w14 .

1~3~1~

d31 <-~ ml4*x31 ~ m24*y31 + m34*z31 + m44 d31 <-- x31*wll d32 c-- ml4*x32 ~ m24*y32 ~ m34*z31 + m44 d32 <-- x32*w12 d33 <-- ml4*x33 ~ m24*y33 + m34*z33 ~ m44 d33 <-- d33*w13 d34 ~-- ml4*x34 + m24*y34 ~ m34*z34 ~ m44 d34 <-- d34*w14 d41 <-- ml4*x41 ~ m24*y41 + m34*z41 ~ m44 d41 <-- d41*wll d42 <-- ml4*x42 + m24*y42 1- m34*z42 + m44 d42 <-- d4~*w12 d43 <-- ml4*x43 + m24*y43 + m34*z43 + m44 d43 <-- d43*w13 d44 <-- ml4*x44 + m24*y44 + m34*z44 + m44 d44 <-- d44*w14 2. Generate the coefficients for the polynomial equation.
.
Concatena~e three matrices V.WX.Vt.
For Bezier Spline, V is e~ual to Vt.
Ten terms of V are non-zero for cubic Bezier.

a~ Concatenate WX.Vt, where Vt = V, and v24 = ~33 = v34 = v42 = v43 = ~44 - 0.

tempdl <-- dll*vll + dl2*v21 + dl3*v31 ~ dl4*v41 tempd2 <-- dll*v12 ~ dl2*v22 + dl3*v32 tempds C-- dll*v13 + dl2*v23 dl4 <-- dll*vi4 dll <-- tempdl ~ dl2 C-- tempd2 ;

jr ~L2~?3~

dl3 <-- tempd3 tempdl ~-- d21*vl~ + d22*v21 ~ d~3*v31 + d24*v41 tempd2 <-- d21*v12 + d22*v22 ~ d23*v32 tempd3 <-- d21*v13 + d22*v23 d24 <-- d21*v14 . d21 <-- tempdl : d22 <-- tempd2 : d23 <-~ tempd3 tempdl ~-- d31*vll + d32*v21 ~ d33*v31 + d34*v41 tempd2 < - d31*v12 + d32*v22 ~ d33*v32 tempd3 <-- d31*v13 ~ d32*v23 d34 ~-- d31*v14 d31 <-- tempdl d32 <~~ tempd2 d33 <-- tempd3 tempdl <-- d41*vll + d42*v21 + d43*v31 + d44*v41 ;:
; tempd2 <-- d41*v12 + d42*v22 + d43*v32 tempd4 <-- d41*v13 + d42*v23 d44 <-- d41*v14 d41 <-- tempdl d42 <-- tempd2 d43 <-- tempd3 b. Concatenate V.(WX.Vt).

Only 10 terms of V, the matrix for cubic Bezier are non-zero.
. .
v24 = v33 = v34 = v42 = v43 = v44 = 0.
:
tempdl <-- vll*dll + v12*d21 + v13*d31 + v14*d41 tempd2 <-- v21*dll + v22*d21 + v23*d31 tempd3 <-- v31*dll + v32*d21 d41 <-- v41*dll ~ "~ t,'''' ~9 ~
., 3~
., .

dll <-- tempdl d21 <-- tempd2 d31 ~-- tempd3 tempdl <-- vll*dl2 ~ v12*d22 + v13*d32 1 v14*d42 tempd2 <-- v21*dlZ + v22*d22 ~ v23~d32 tempd3 <-- v31*dl2 + v32*d22 d42 <-- v41*dl2 dl2 <-- tempdl d22 c-- tempd2 d32 <- tempd3 tempdl <-- vll*dl3 + v12*d23 ~ v13*d33 + v14*d43 tempd2 <-- v21*dl3 + v22*d23 + v23*d33 tempd3 <-- v31*dl3 + v32*d23 d43 <-- v41*dl3 dl3 <-- tempdl d23 <-- tempd2 d33 <-- tempd3 tempdl <-- vll*dl4 + v12*d24 ~ v13*d34 + v14*d44 tempd2 <-- v21*dl4 ~ v22*d24 ~ v23*d34 tempd3 <-- v31*dl4 + v32*d24 d44 <-- v41~dl4 dl4 <-- tempdl d24 <-- tempdZ
d34 <-- tempd3 ; 25 End of Generating Equation.

3. The procedure for generating points is as follows:

Variables involved are:

I dll,dl2,dl3,dl4 ¦ (coefficient matrix)f ¦ d21,d22,d23,d24 ¦
! d3l,d32,d33,d34, KI9-86-011 _55_ :

1~93B14 d41,d42~d43,d44 ¦
tempdl tempd2 tempd3 tempd4 . . ds dt svar t~ar . 10 t~arl wls~
: w2nd wls~ ' w2nd' 15. This generates th~ inverse w values of the four corn~rs of a patch by using the incremental s-value and t-value dt and ds calculated by the GCP 20.

: The equation is ; w(s,t) :~ 20 dll~s3)(t3)+dl2(s3)~t21+dl3(s3)(t)+dl4(s3) : +d2l(s2)(t3)+d22(s2)~t2)+d23(s2)(t~+d24(s2) :
~d31(s)~t3) +d32~s)(t2) +d33(s)tt) +d34(s) +d41~t3) ~d42(t ) +d43(t) +d44 . ~
The output is two points for each increment of svar.

The olltput is for tvar < l; Do for svar < l; Do : output l~w(svar,tvar) Output l/w(svar,tvar~dt) .

f~

3 ~ 1 4 ~var <-- tvar + dt tvarl <-- ~varl ~ dt .
end.i / ~ .
- The programming of the Surface Patch GFPP 350, which follows the Trans~ormation Nodule will now be described.

The function of the Surface Patch GFPP 350 is to take the outpu~ of the TrP 30 - the coordinates of the corner points and the inverses of the weights; construct the four normal vectors to the surface at the corner points of the patch, and pass the information to the next stages in the pipeline svstem.
~' .
The following is a procedure to generate boundary data for a small patch.
.
See Fig. 6 for orientation of the patch.

~his procedure uses as input the coordinates of two points, together with the previous two points to generate the coordinates of the corners and their associated normals of patch in an oriented fashion:

~svar,tvar+dt) (svar,t~ar) (svar+ds,tvar3 (svar+ds,tvar+dt) ~I9-86-Oll -58-3~4 ,. , :

end;
end.
' The procedure is~

a. Wait for GCP 20 to finish calculating ~he incremental S s-value and t-value.
ds, dt b. Use ds, dt to g~nerate the line segment of curv~.

tvar - 0 tvarl ~ dt ~10 svar = 0 for tvar < l; Do for svar < l; Do . tempdl = ((dll*svar+d21~*svar~d31)*svar+d41 tempd2 = ((dl2*svar~d22)*svar+d32)*svar~d42 tempd3 = ((dl3*svar~d23)*svar+d33~*svar+d43 tempd4 = (tdl4*svar+d24)*svar+d34)*svar+d44 wlst = (Itempdl*tvar+tempd2)*tvar+tempd3)*tvar~temp4 wlst <--l/xlst' output wlst w2nd'=t~tempdl~tvarlftempd2)*tvarl~temp~3)*tvarl+temp4 : w2nd ~--1/w2nd' output w2nd - svar <-- svar ~ ds end;

3~}3l4 ., .
The normals are not of unit length the nex~ staqe in the Transformation Processor pipeline calculates the unit normal.

Input: xlst, x2nd (z-coor. of the corner~
5. ylst, y2nd ~y-coor.~
zlst, z2nd (z-coor.) - wlst, w2nd (inverses of weights) ~ .
:~ Variables: xl, x2, x3, x4 yl, y2, y3, y4 zl, z2, z3, z4 normal} (x-component of the normal) normal2 ~y-component of the normal) normal3 (z-component of the normal) wl, w2, w3, w4 (inverse of weight) l~ (wl = w3, w2 = w4) x12,x34,x14,x23(dif~erence in coor.) yl2,y34,yl4,y23(for calculating) z12,z34,z14,z23(normal) The procedure is:
~ .
1. Read in xlst from GFPP 310 x2 <-- xls~

2. Read in ylst from GFPP 320 . .

y2 < - ylst 3. Read in zlst from GFPP 330 z2 <-- zlst ~3~

4. Read in wlst from GFPP 340 (inverse of weight) w2 <-- wlst - ~2 <-- x2*w2 y2 <-- y2*w2 z2 <~- z2*w2 5. Read in x2nd from GFPP 310 xl ~-- x2nd 6. Read 1n y2nd from GFPP 320 yl <---- V2na 7. Read in z2nd from GFPP 330 z1 <-- z2nd 8O Read in w2nd from GFPP 340 wl C-- w2nd xl <-- xl*wl yl <-- yl*wl zl <-- zl*wl x12 <-- x1 - x2 :: ~

yl2 <-- Yl - v2 z12 ~-- zl - z2 9- Loop ,, While the data is not a command; Do read in xlst from GFPP 310 x3 <-- xlst read in ylst from GFPP 320 ~3 <-- yls~
, ~ read in zlst from GFPP 330 : lC z3 <-- zlst read in wlst from GFPP 340 w3 <-- w}st x3 <-- x3*w3 y3 <-- y3*w3 z3 <-- z3*w3 read in x2nd from GFPP 310 x4 ~-- x2nd ~ .
: KI9-86-011 -61-.
38~
: read in y2nd from GFPP 320 y4 ~-- y2nd read in z2nd f rom GFPP 330 z4 <-- z2nd . .
; 5 read in w2nd from CGFPP 340 w4 <-- w2nd '' '' x4 <-- x4*w4 y~ ~-- v4*w4 z4 <-- z4*w4 : 10 x43 <-- x4 - x3 x14 <-- xl - x4 x23 ~-- x2 - x3 y43 <-- y4 - y3 ~` yl4 <-- yl - y4 y23 <-- y2 - y3 z43 <-- z4 - z3 z14 <-- zl - z4 z23 <-- z2 - z3 10. Calculate the normal at each of the corner of the ~: zo oriented patch.
.......
output xl outpu~ ~1 output zl normall = yl2*zl4 - yl4*zl2 output normall .. ~;2~3~

normal2 = z12*x14 - z14*x12 output normal2 normal3 = x12*yl4 - x14*yl2 output normal3 ;, 5. output x2 output y2 output z2 , normall = yl2*z23 - y23*zl2 output normall normal2 = z12*x23 - z23*x12 output normal2 normal3 - x12*y23 - x23*yl2 , output normal3 output x3 output y3 output z3 normall = y43*z23 - y23*z43 output normall normal2 = z43*x23 - z23*x43 output normal2 normal3 = x43*y23 - x23*y43 output norma l 3 , output x4 .
~ output y4 `~ 25 output z4 normall = y43*zl4 - yl4*z43 output normall normal2 = z43*x14 - z14*x43 ~;i ' .
KI9-86-011 _~3_ , 31~:L~

output normal2 normal3 = x43*yl4 - x14*y43 output normal3 The following update can be implemented bv using .5. poin~ers.

x2 <-- x3 y2 <-- y3 z2 ~-- z3 .
xl <-- x4 vl <-- y4 zl <-- z4 x12 <-- x43 yl2 <-- y~3 z12 <-- z43 Go to Loop End of Patch Chip Programming.

~he following is a procedure to generate Rational Spline Curves in the System.

Only cubic splines are covered here, and quadratic ones can be handled in the same way. .

The generation of the spline curves are done in the Trans~ormation Module (four chips in parallel) and the Surface Patch Module.

The parameters to the cubic spline:

3~
" .
The followin~ is the matrix generatinq the cuhic ~ezier splines:

sll sl2 sl3 sl4 s21 s22 s23 s24 J
5. s31 s32 s33 s34 s41 s42 s43 s44 Explicitly, the 8ezier spline is given by:

~; -1 3 -3 10 -3 3 o 0 , The above 4x4 matrix is .for cubic splines; for quadratic splines, the 4th column and 4th row are assumed to he zero.

The Data List consists of the coordinates o four ~: points and four weights.

xl, yl, zl, wl;
x2, v2, z2, w2;
x3, y3, z3, w3 ~4, y4, z4, w4.

For quadratic splines, the coordinates-of three points and three weights.

xl, yl, zl, wl;.
x2, y2, z2, w2;
x3, y3, z3, w3.

3~
. . , Generating Cubic Bezier Spllne by Using Transformation Chips:

Input: xl, yl, zl ~*coordinate of the control point*/
wl /*weight*/
-5 x2, y2, z2 /*coordinate of the control point*/
w2 /*weight*/
x3, y3, z3 J*coordina~e of the control point*/
w3 /*weight*/
:~ x4, v4, z4 /*coordinate of the control point*/
w4 /*weight*/

Output: x,y,z,w /*coordinate ~or end point of line se~ment*/
/*output to the Clipping Module*/

Constants: mll,ml2,ml3, /*transformation matrix M*/
m21,m22,m23, : m31,m32,m33, m41,m42,m43 . ~11,sl2,sl3,sl4 /*Spline matrix M*/
:~ s21,s22,s23,s24 :. 20 s31,s32,s33,s34 s41,s42,s43,s44 The procedure for Cubic-Spline Generation in~olves programming for all GFPPs 310-340 for parallel operation.
For GFPP 310, programminq is done as follo.ws.
:
~::25 Input: xl, yl, zl /*coordinate of the con~rol points*/
: wl /*we.ight*/
x2, y2, z2 /*coordinate of the control points*/
w2 /*weight*/
- x3, y3, z3 /*coordinate of th~ con~rol points*/

; KI9-~6-011 -66-315 ~
., .

w3 /*weiaht*/
x4, y4/ z4 /*coordinate o the control points*/
w4 /*weight*/

Output: x-coordiante~*coordinate for end polnt of line se~ment*/

Constants: mll,m21,m31,m41 /*first columIl of the transformation matrix*/
.~ sll,sl2, sl3,sl4 /*Spline matrix*/
: . s21,s22,s23,s24 s31,s32,s33,s34 s41,s42,s43,s~4 1. transorm the vertex:
xl' = mll*xl + m21*yl + m31*zl ~ m41 x2' = mll*x2 + m21*y2 + m31*z2 + m41 x3' = mll*x3 + m21*y3 + m31*z3 + m41 : x4' = mll*x4 + m21*y4 + m31*z4 + m41 :~ 2. multiply the coordinates by weight:

xl' <- xl' *wl : x2' <- x2'*w2 x3' <- x3'*w3 x4' C- x4'*w4 3. generating the coefficients for the polynomial equation : a3*t**3 + a2*t**2 ~ al*t + aO:

a3 = sll*xl' + sl2*x2' + sl3*x3' + sl4*x4' a2 = s21*xl' ~ s22*x2' + s23*x3' + s24*x4' al = s31*xl' + s32*x2' + s33*x3' + s23*x4' aO = s41*xl' ~ s42*x2' + s43*x3' ~ s44*x4' 3~i~

.
4. genera~ing line segment for curve approximation:
a. reading in the incremental parameter inct, b. using inct to genera~e the line segment of the curve tvalue = O
the x=coordinate of the end point is for tvalu~ < 1.

xl' = ~(a3*tvalue+a2~*t~alue~al~*tvalue~aO
tvalue <-- tvalue + inct ::
output x' to surface module ' /*End of program for GFPP 310*/
, For GFPP 320, programming is done as follows.

Input: xl, yl, zl /*coordinate of the control points*/
wl /*weight*/
x2, v2, z2 /*coordinate of the control points*/
w2 /~weight*/
x3, y3, z3 /*coordinate of the control points*/
w3 /*weight*/
x4, y4, z4 /*coordinate of the control points*/
w4 /*weight*/

Output: ml2,m22,m32,m42 /*second coiumn of transformation matrix*/
sll,sl2,sl3,sl4 /*Spline matrix*/
s21,s22,s23,s24 : s31,s32,s33,s34 s41,s42,s43,S44 ~` : : :~
1~ transform the vertex:

~' 3~314 ,,.
yl' ~ ml2~xl + m22*yl + m32*zl ~ m42 y2' - ml2*x2 + m22*y2 + m32*z2 + m42 y3' = ml2*x3 + m22*y3 + m32*z3 + m42 y4' = ml2*x4 .+ m22*y4 + m32*z4 + m42 5- 2. multipLy the coordinates by weight yl ' <- yl ' *wl y2' C- y2'*w2 y3' ~- ~3'*w3 y4' <-. y4'*w4 3. generating the coefficients for the polvnomial equation b3*t**3 + b2*t**2 + bl*t + bO

b3 - sll*yl' ~ sl2*~2' + s13*y3' + sl4*y4' b2 = s21*yl' I s22*y2' + s23*y3' + s24*y4' hl = s31*yl' + s32*v2' + s33*y3' + s34*v4' - 15 bO = s41*yl' ~ s42*y2' + s43*y3' ~ s44*y4' ' 4. generating line segment for curve approximation:
a. reading in the incremental parameter inct;
~` b. using inct to generate the line segment of the curve .
tvalue = O
the y-coordinate of the end point is or tvalue < 1 y' - ((b3*tvalue+b2)*tvalue+bl)*tvalue+bO
tvalue <-- tavlue + inct output y' to surface module /*End of program for GFPP 320*/

1.~931~
j,.

For GFPP 330, proqramming is done as follows.
: .
Input: xl, yl, zl /*coordina~e of the control points*/
wl . /*weight*/
: x2, y2, z2 /~coordinaté of the con~rol points*/
S w2 /*weight*~
x3, y3, z3 /*coordinate of the control points*/
w3 /*weight*/
x4, y4, z4 /*coordinate of the control points*/
w4 /*weight*/

; lO Output: z-coordinate/*coordinate for end point of line se~ment*/

Constants: ml3,m23,m33,m43 / *third column of transformation matrix*/

sll,sl2,sl3,sl4 /*Spline matrix*/
s21,s22,s23,s24 ; s31,s32,s33,s34 s41,s~',s43,s44 .
1. transform the vertex:

zl' = ml3*xl + m23*yl + m33*zl + m43 ~2' = ml3*x2 + m23*y2 + m33*z2 ~ m43 : x3' = ml3*x3 + m23*y3 ~ m33*z3 + m43 4' = ml3*x4 + m23*y4 + m33*z4 I m4-3 --2. multiply the coordinat~s by weight .
zl ' <---- zl ' *wl . 25 z2' <-- z2'*w2 z3' <-- z3'*w3 ~ KI9-86-011 -70-;:

:

3~

z4' <-~ z4'*w4 3. generating the coefficients for the polynomial equation c3*t**3 + c2*t-**2 + ~l*t ~ cO

. c3 = sll*zl' + sl2*z2' + sl3*z3' + s~L4*z4' ; 5 c2 = s21*æl' + s22*z2 ' ~ s23*z3 ' + s24*æ4 ' cl = s31*zl' ~ s32*z2' + s33*z3' + s34*z4' ~0 = s41*zl' + s42~z2' ~ s43*z3' + s4~*z~' 4. generating line se~ment for curve approximation .
a. reading in the incremental parameter inct;
b. using inct to generate the line segment of the cur~e tvalue = O .
, :
the z-coordinate of the end point is for tvalue ~ l : z' = ((c3*tvalue+c2)*tvalue+cl)*tvalue+cO
tvalue <-- tvalue ~ inct ~ output z' to surface module : /*End of program for GFPP 330*/

For GFPP 340, programming is done as follows~

Input: xl, yl, zl /*coordinate of the control points*/
wl /*weight*/
x2, v2, z2 /*coordinate of the control points*.
w2 /*weight*/
x3, y3, z3 /*coordinate of the control points*/
w3 /*weight*/
x4, y4, z4 /*coordinate of the control points*/

KI9-86-Oll -71-., ', . ...

w4 /*weight*/

Ou~put: w-coordinate/*coordinate for end point of line ~egment*/

. Constan~s: ml4,m24,m34,m44 /*fourth col~nn of transformation matrix*/
s11,sl2,s-13,sl4 /*Spline matr:ix*/
s22,~22,s23,s24 s31,s32,s33,s34 . s41,s42,s43,s44 1. transform the vertex:

wl' - ml4*xl ~ m24*yl ~ m34*zl + m44 w2' - ml4~x2 + m24*y2 + m34*z2 + m44 w3' = ml3*x3 ~ m24*y3 + m34*z3 + m44 .~ w4' = ml4*x4 + m24*y4 + m34*z4 + m44 2. multiple the coordinates by weights wl ' < - wl ' *wl : w2' <- w2'*w2 w3' <- w3'*w3 w4' <- w4'*w4 3. ~enerating the coeffici~nts for the polynomial equation d3*t**3 + d2*t**2 + dl*t ~ dO

d3 = sll*wl' + s12*w2' + sl3*w4' + sl4*w4' d2 = s21*wl' + s22*w2' + s23*w4' + s23*w4' dl = s31*wl' + s32*w2' + s33*w4' + s34*w4l dO = s41*wl' + s42*w2' + s43*w4' * s44*w4' ! , ' ' ' `
3~14 .

4. generating line segment for curve approximation:
a. reading in the incremental parameter inct;
b. using inct to generate the line segment of the : curve tvalue = O
the w-coordinate of the end poin~ is for tvalue < 1 w' = ((d3*tvalue+d2)*tvalue+dl)*tvalue+dO
- tvalue <-- tvalue + inct w" <-- l/w' output w" to surface module /*End of program or GFPP 340*/

The program for the Surface Patch Processor 350 is simply, : l. read in w"
?. read ;n x' 3. outpu~ x'*w"
4. read in y' 5. outpu~ y'*w"
6. read in z' ; 20 7. output z'*w"
8. go back to step 1 until another command~

Claims (8)

1. Apparatus for generating surface information for a graphics display system, comprising:
a first processor for controlling data flow from a data storage to a transformation processor;
a transformation processor which further comprises a plurality of floating point processors connected in parallel for tesselating a surface to be processed into a plurality of patches; and a floating point processor connected to outputs of said parallel processors for generating normals at the vertices of said patches.
2. A method for generating surface information for a graphics display system, comprising the steps of:
providing from storage data that represents a surface to be processed to a transformation processor that further comprises a plurality of floating point processors connected in parallel;
processing in parallel, in said transformation processor, said data so as to tesselate said surface into a plurality of patches and generate further data representing said patches; and providing said further data to a floating point processor for generating normals at the vertices of said patches.
3. A method according to Claim 2, wherein said step of providing from storage further comprises the steps of:
providing said data as input control points in the form of coordinates and weights, processable according to the Rational B-Spline computation;

and wherein said step of processing in parallel further comprises the steps of:
performing geometric transform computations, in parallel, on said input control points to derive transformed coordinate; and generating the x, y and z coordinates for the corners of each patch.
4. A method according to Claim 3, wherein said step of generating the x, y, and z coordinates further comprises the steps of:
multiplying the transformed coordinates by their associated weight values to generate intermediate data representing said product;
providing data representing two size variables;
generating from said intermediate data the coefficients of the coordinate components of a spline polynomial of said two size variables; and dividing said coefficients by their associated weight values to compute the coordinate values.
5. A method for generating surface information for a graphics display system, comprising the steps of: ..
storing spline surface control point data in host computer storage:
transferring selected control point data from said host computer storage to a graphics display workstation having a parallel processor system; and generating in said graphics display workstation, using said parallel processor system, polygon data corresponding to said surface.
6. A method for generating surface information for a graphics display system, comprising the steps of:
providing from storage spline surface control point data that represents a surface to be processed to a transformation processor that further comprises a plurality of floating point processors connected in parallel;
processing in parallel, in said transformation processor, said data so as to tesselate said surface into a plurality of patches and generate further data representing said patches; and providing said further data to a floating point processor for generating normals at the vertices of said patches.
7. A method for generating surface information for a graphics display system according to Clam 6 wherein said step of processing in parallel further comprises the steps of: .
performing geometric transform computations, in parallel, on said input control points to derive transformed coordinates; and generating the x, y, and z coordinates for the corners of each patch.
8. A method for generating surface information for a graphics display system according to Claim 7 wherein said step of generating the x, y, and z coordinates further comprises the steps of:
multiplying the transformed coordinates by their associated weight values to generate intermediate data representing said product;
providing data representing two size variables;
generating from said intermediate data the coefficients of the coordinate components of a spline polynomial of said two size variables; and dividing said coefficients by their associated weight values to compute the coordinate values.
CA000580379A 1987-10-30 1988-10-17 Parallel surface processing system for graphics display Expired - Fee Related CA1293814C (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/115,465 1987-10-30
US07/115,465 US4912659A (en) 1987-10-30 1987-10-30 Parallel surface processing system for graphics display

Publications (1)

Publication Number Publication Date
CA1293814C true CA1293814C (en) 1991-12-31

Family

ID=22361583

Family Applications (1)

Application Number Title Priority Date Filing Date
CA000580379A Expired - Fee Related CA1293814C (en) 1987-10-30 1988-10-17 Parallel surface processing system for graphics display

Country Status (5)

Country Link
US (1) US4912659A (en)
EP (1) EP0314335B1 (en)
JP (1) JPH0727577B2 (en)
CA (1) CA1293814C (en)
DE (1) DE3855214T2 (en)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5390292A (en) * 1987-01-26 1995-02-14 Ricoh Company, Ltd. Apparatus for converting a gregory patch
US5257203A (en) * 1989-06-09 1993-10-26 Regents Of The University Of Minnesota Method and apparatus for manipulating computer-based representations of objects of complex and unique geometry
US5367615A (en) * 1989-07-10 1994-11-22 General Electric Company Spatial augmentation of vertices and continuous level of detail transition for smoothly varying terrain polygon density
US5317682A (en) * 1989-10-24 1994-05-31 International Business Machines Corporation Parametric curve evaluation method and apparatus for a computer graphics display system
JPH0776991B2 (en) * 1989-10-24 1995-08-16 インターナショナル・ビジネス・マシーンズ・コーポレーション NURBS data conversion method and apparatus
JPH0766451B2 (en) * 1989-10-24 1995-07-19 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン Computer graphic equipment
US5157765A (en) * 1989-11-15 1992-10-20 International Business Machines Corporation Method and apparatus for pipelined parallel rasterization
US5276783A (en) * 1989-11-21 1994-01-04 International Business Machines Corporation Tessellating complex polygons in modeling coordinates
US5138699A (en) * 1990-02-13 1992-08-11 International Business Machines Corporation Hardware utilization of color interpolation capability in a color imaging system
AU7313491A (en) * 1990-02-16 1991-09-03 Silicon Graphics, Inc. Method and apparatus for providing a visually improved image by converting a three-dimensional quadrilateral to a pair of triangles in a computer system
JP2774653B2 (en) * 1990-03-14 1998-07-09 キヤノン株式会社 Character processor
CA2038506C (en) * 1990-04-26 2001-06-19 Douglas A. Fischer Polygon tiling engine
EP0459761A3 (en) * 1990-05-31 1993-07-14 Hewlett-Packard Company Three dimensional computer graphics employing ray tracking to compute form factors in radiosity
US5253339A (en) * 1990-07-26 1993-10-12 Sun Microsystems, Inc. Method and apparatus for adaptive Phong shading
JP2725915B2 (en) * 1990-11-15 1998-03-11 インターナショナル・ビジネス・マシーンズ・コーポレイション Triangle drawing apparatus and method
US5283860A (en) * 1990-11-15 1994-02-01 International Business Machines Corporation System and method for displaying trimmed surfaces using bitplane masking
EP0488563A3 (en) * 1990-11-30 1993-11-03 Ibm Method and apparatus for rendering trimmed parametric surfaces
US5774133A (en) * 1991-01-09 1998-06-30 3Dlabs Ltd. Computer system with improved pixel processing capabilities
WO1992012496A1 (en) * 1991-01-09 1992-07-23 Du Pont Pixel Systems Limited Computer system with enhanced image and graphics capabilities
JP2824342B2 (en) * 1991-03-29 1998-11-11 富士通株式会社 High-speed image drawing device
US5408598A (en) * 1991-05-23 1995-04-18 International Business Machines Corporation Method for fast generation of parametric curves employing a pre-calculated number of line segments in accordance with a determined error threshold
US5359704A (en) * 1991-10-30 1994-10-25 International Business Machines Corporation Method for selecting silhouette and visible edges in wire frame images in a computer graphics display system
US5325477A (en) * 1991-12-02 1994-06-28 Xerox Corporation Method and apparatus for generating and displaying freeform strokes
US5341467A (en) * 1991-12-30 1994-08-23 Xerox Corporation Method and apparatus for generating and displaying freeform strokes of varying or constant width using adaptive forward differencing
US5365996A (en) * 1992-06-10 1994-11-22 Amei Technologies Inc. Method and apparatus for making customized fixation devices
US5357599A (en) * 1992-07-30 1994-10-18 International Business Machines Corporation Method and apparatus for rendering polygons
US5261029A (en) * 1992-08-14 1993-11-09 Sun Microsystems, Inc. Method and apparatus for the dynamic tessellation of curved surfaces
US5377320A (en) * 1992-09-30 1994-12-27 Sun Microsystems, Inc. Method and apparatus for the rendering of trimmed nurb surfaces
GB9223314D0 (en) * 1992-11-06 1992-12-23 Canon Res Ct Europe Ltd Processing image data
GB9223375D0 (en) * 1992-11-06 1992-12-23 Canon Res Ct Europe Ltd Processing image data
US5428718A (en) * 1993-01-22 1995-06-27 Taligent, Inc. Tessellation system
AU6081494A (en) * 1993-07-27 1995-02-28 Taligent, Inc. Object-oriented rendering system
US5883722A (en) * 1994-09-20 1999-03-16 Oce Printing Systems Gmbh Controller for editing encoded image data
ATE186995T1 (en) * 1994-10-06 1999-12-15 Siemens Ag METHOD AND DEVICE FOR NUMERICAL PATH CONTROL OF MACHINE TOOLS OR ROBOTS
CA2203394C (en) * 1994-10-26 2008-04-01 Eric L. Brechner Method for controlling the level of detail displayed in a computer generated screen display of a complex structure
US5559941A (en) * 1994-10-26 1996-09-24 Brechner; Eric L. Method for smoothly maintaining a vertical orientation during computer animation
US5613049A (en) * 1994-10-26 1997-03-18 The Boeing Company Method for creating spatially balanced bounding volume hierarchies for use in a computer generated display of a complex structure
US5801714A (en) * 1995-05-01 1998-09-01 Intergraph Corporation Vertex list management system
US5801670A (en) * 1995-06-06 1998-09-01 Xerox Corporation Image generation system having a host based rendering element for generating seed pixel values and mesh address values for display having a rendering mesh for generating final pixel values
US6175370B1 (en) * 1996-02-02 2001-01-16 Kabushiki Kaisha Toshiba Geometry translation processor
JP3130266B2 (en) * 1996-03-09 2001-01-31 三星電子株式会社 Image improvement method and circuit using average separation histogram equalization
US6259827B1 (en) 1996-03-21 2001-07-10 Cognex Corporation Machine vision methods for enhancing the contrast between an object and its background using multiple on-axis images
JP3203180B2 (en) * 1996-03-27 2001-08-27 三菱電機株式会社 Geometric operation device
US6348921B1 (en) 1996-04-12 2002-02-19 Ze Hong Zhao System and method for displaying different portions of an object in different levels of detail
US6002406A (en) * 1996-11-13 1999-12-14 Silicon Graphics, Inc. System and method for storing and accessing data representative of an object in various level-of-detail
US6023279A (en) * 1997-01-09 2000-02-08 The Boeing Company Method and apparatus for rapidly rendering computer generated images of complex structures
US5995109A (en) * 1997-04-08 1999-11-30 Lsi Logic Corporation Method for rendering high order rational surface patches
US6381375B1 (en) * 1998-02-20 2002-04-30 Cognex Corporation Methods and apparatus for generating a projection of an image
US6407743B1 (en) 1998-10-20 2002-06-18 Microsoft Corporation System and method for morphing based on multiple weighted parameters
US6687402B1 (en) 1998-12-18 2004-02-03 Cognex Corporation Machine vision methods and systems for boundary feature comparison of patterns and images
US6693646B1 (en) * 1999-04-28 2004-02-17 Microsoft Corporation Method and system for iterative morphing
US6748104B1 (en) 2000-03-24 2004-06-08 Cognex Corporation Methods and apparatus for machine vision inspection using single and multiple templates or patterns
US6624811B1 (en) * 2000-08-31 2003-09-23 Nvidia Corporation System, method and article of manufacture for decomposing surfaces using guard curves and reversed stitching
US7006669B1 (en) 2000-12-31 2006-02-28 Cognex Corporation Machine vision method and apparatus for thresholding images of non-uniform materials
US7174280B2 (en) * 2002-04-23 2007-02-06 Ford Global Technologies, Llc System and method for replacing parametrically described surface features with independent surface patches
US8482559B2 (en) * 2002-11-04 2013-07-09 Ati Technologies Ulc Method and apparatus for triangle tessellation
US7639861B2 (en) 2005-09-14 2009-12-29 Cognex Technology And Investment Corporation Method and apparatus for backlighting a wafer during alignment
US8111904B2 (en) * 2005-10-07 2012-02-07 Cognex Technology And Investment Corp. Methods and apparatus for practical 3D vision system
US8162584B2 (en) * 2006-08-23 2012-04-24 Cognex Corporation Method and apparatus for semiconductor wafer alignment
US8537158B2 (en) * 2009-12-02 2013-09-17 Microsoft Corporation Parallel triangle tessellation

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2051525A (en) * 1979-06-15 1981-01-14 Redifon Simulation Ltd C.G.I.-Surface textures
US4630234A (en) * 1983-04-11 1986-12-16 Gti Corporation Linked list search processor
FR2546017B1 (en) * 1983-05-11 1986-01-17 Thomson Csf METHOD FOR PERFORMING A GEOMETRIC TRANSFORMATION ON A VIDEO IMAGE, AND DEVICES IMPLEMENTING THIS METHOD
US4658247A (en) * 1984-07-30 1987-04-14 Cornell Research Foundation, Inc. Pipelined, line buffered real-time color graphics display system
US4819192A (en) * 1985-02-26 1989-04-04 Sony Corporation Method of displaying image
US4737921A (en) * 1985-06-03 1988-04-12 Dynamic Digital Displays, Inc. Three dimensional medical image display system
CA1274919A (en) * 1985-07-27 1990-10-02 Akio Ohba Method of forming curved surfaces and the apparatus
US4646251A (en) * 1985-10-03 1987-02-24 Evans & Sutherland Computer Corporation Computer graphics, parametric patch parallel subdivision processor

Also Published As

Publication number Publication date
JPH01149176A (en) 1989-06-12
DE3855214T2 (en) 1996-10-17
EP0314335B1 (en) 1996-04-17
US4912659A (en) 1990-03-27
EP0314335A3 (en) 1991-09-25
JPH0727577B2 (en) 1995-03-29
EP0314335A2 (en) 1989-05-03
DE3855214D1 (en) 1996-05-23

Similar Documents

Publication Publication Date Title
CA1293814C (en) Parallel surface processing system for graphics display
US5278948A (en) Parametric surface evaluation method and apparatus for a computer graphics display system
JP5124615B2 (en) Apparatus or method for determining a surface normal vector
Apgar et al. A display system for the Stellar graphics supercomputer model GS1000
Schilling et al. Texram: A smart memory for texturing
Sigg et al. Signed distance transform using graphics hardware
US7081895B2 (en) Systems and methods of multi-pass data processing
US4965752A (en) Spatial transformation of node points in computer graphics using vector differences between their spatial coordinates
US7903112B2 (en) Drawing processing apparatus, texture processing apparatus, and tessellation method
JP3972784B2 (en) Image processing apparatus and method
JP2003515851A (en) Method, apparatus and product for a conversion module in a graphics processor
JP2003515853A (en) Conversion, lighting and rasterization systems supported by a single semiconductor platform
JPH0935075A (en) Computer graphics system with high-performance primitive clipping preprocessing
GB2479461A (en) Bounding of displaced parametric surfaces
US10861230B2 (en) System-generated stable barycentric coordinates and direct plane equation access
US6614431B1 (en) Method and system for improved per-pixel shading in a computer graphics system
JP2002520750A (en) Numerical calculation method of parameterized surface in eigenspace of subdivision matrix of irregular patch
JP2011134317A (en) Grouping pixels to be textured
Fussell et al. A vlsi-oriented architecture for real-time raster display of shaded polygons
Bruijns Quadratic Bezier triangles as drawing primitives
Chung et al. Shader-based tessellation to save memory bandwidth in a mobile multimedia processor
KR100507773B1 (en) Apparatus and method for bump mapping using polar coordinate system
US6683621B1 (en) Vertex and spherical normalization circuit
Zhao et al. Rigidity constraints for large mesh deformation
Li et al. Volume rendering using parallel algebraic logic (PAL) hardware

Legal Events

Date Code Title Description
MKLA Lapsed