 1D Fast Fourier Transform The Fourier Transform is a powerful tool allowing us to move back and forth between the spatial and frequency domains. Many of our explanations of key aspects of signal processing rely on an understanding of how and why a certain operation is performed in one domain or another. This applet helps students feel comfortable with these explanations, helping to build a strong intuitive grasp of how signals in one domain correspond to signals in the other. 

 Additive Color Mixing This applet allows the user to paint on a canvas that mixes colors additively. Various parameters can be manipulated and some preset images can be loaded and also painted on. 

 Arrow This component is a visual representation of a Arrow primitive and can be used to introduce a Arrow into a Java3D scene. 

 Axes This component package offers a simple, customizable implementation of individual axis objects as well as a set of basis axes that can be used to indicate the origin of any coordinate system, among other things. 

 Basic Stage This component provides a basic stage for a 3D scene consisting of a set of basis axes indicating the x, y, and z axes of the world coordinate space. 

 Bezier Splines This applet introduces the user to the usage and mathematics of spline curves and includes a tutorial, exercises, and an interactive play space. 

 Combined Color Mixing This applet helps the user combine concepts in additive and subtractive color mixing through a scenario that includes lights, paints and filters. Users can directly observe how various colored lights, paints, and filters contribute additively as well as subtractively to produce a single color to be viewed by the applet's virtual eye. 

 Complete Exploratories Component Framework This component package contains all the components produced by the exploratories project to simplify and speed up the creation of interactive, 2D and 3D exploratories. 

 Cone This component is a visual representation of a Cone primitive and can be used to introduce a Cone into a Java3D scene. 

 Cone Geometry Generator This component encapsulates the creation of conic 3D geometry for use in a Java3D scene. Used in conjunction with the Texture Coordinate Generator components, this component greatly facilitates the creation of texturemappable geometry. 

 Convolution This applet allows students to understand the process of convolution by visually manipulating two functions through the process. It is useful in understanding both how convolution works and also what the effects are on specific signals being convolved together. 

 Coordinate Transformations The Coordinate System Transformations applet teaches several concepts. The first is how a transformation applied to a coordinate system affects the axes of that coordinate system. Second, this applet shows how looking at only a very small portion of any curve produces a straight line (linear approximation) of that curve. Finally, this applet shows how a transformation of the coordinate system affects any objects within that coordinate system. 

 Cube This component is a visual representation of a Cube primitive and can be used to introduce a Cube into a Java3D scene. 

 Cube Geometry Generator This component encapsulates the creation of cubic 3D geometry for use in a Java3D scene. Used in conjunction with the Texture Coordinate Generator components, this component greatly facilitates the creation of texturemappable geometry. 

 Cylinder This component is a visual representation of a Cylinder primitive and can be used to introduce a Cylinder into a Java3D scene. 

 Cylinder Geometry Generator This component encapsulates the creation of cylindrical 3D geometry for use in a Java3D scene. Used in conjunction with the Texture Coordinate Generator components, this component greatly facilitates the creation of texturemappable geometry. 

 Cylindrical Coordinates Dragger This component allows a programmer to add a 3D user interface widget that will support the manipulation of 3D cylindrical coordinates. In other words, the dragger's visual can be rotated around a center axis and translated along that same axis, at a fixed radius from said axis. 

 Cylindrical Texture Mapping One of three applets written to illustrate different types of texture mapping. The Cylindrical Texture Mapping applet shows the graphical ramifications of the mathematics used to wrap a flat image around a cylindrical model. The applet allows the user to designate a point on the cylinder and displays the corresponding sample point on the image, which is represented on a unit plane. Both numerical and graphical representations of each point are present in hopes that the user will thereby gain a more intuitive understanding of the correlation between them. 

 Discrete Convolution This applet demonstrates how the idea of convolution  which we have explored in the continuous domain  can also be applied in the discrete domain that the computer operates in. The applet is identical in functionality to the 1D Convolution applet except that students adjust sample values rather than drawing continuous functions. 

 Dot Product The Dot Product applet shows how the scalar dot product value of two vectors depends on both the vectors' lengths and the angle between them. It also demonstrates the dot product's property of rotational invariance. Editable equations are displayed, as are concept explanations and help text. The dot product is an essential building block in linear algebra and for doing almost any type of transformation or rendering in computer graphics. 

 Draggers Component Package This component package contains component implementations that simplify the addition of widgets to a Java3D scene in order to provide basic 3D user interface functionality. 

 Exploratories Java3D Component Framework This component package contains all the components produced by the exploratories project to simplify and speed up the creation of interactive 3D exploratories. 

 Exploratory Base This component serves as the base for all exploratories, providing support for a consistent baseline of features across all exploratories. Such features include: execution as both a Java applet and as a Java application, basic menubar and menus (File, File>Exit, Help, Help>About), a basic container into which an exploratory can be built. 

 Filter Shape This applet looks at how the shape of the twodimensional crosssection of a filter affects the results generated when it is used to scale an image. Users are able to sketch and resize their own filters or use previously generated filters and see how each filter affects the scaling of a subregion of an image. 

 Geometry Generator Component Package This package contains components that facilitate the creation of 3D geometry for use in a Java3D scene. It further contains classes that allow a programmer to specify at runtime how the geometry's texture coordinates will be generated. 

 Grid This component is a visual representation of a Grid primitive and can be used to introduce a Grid into a Java3D scene. 

 Impulse Response This applet demonstrates how a filter "smears" energy from an impulse signal in a neighborhood around the impulse. Students place an impulse, drag a filter over it, and observe the results. 

 Introduction to Sampling Pixels are samples at specific points of continuous mathematical functions. To demonstrate this, the Introduction to Sampling Applet uses an image on screen to represent a continuous function. In additon to introducing the concept of sampling, this applet also demonstrates and helps develop intuition about scanlines which we use throughout the later applets. 

 Line This component is a visual representation of a Line primitive and can be used to introduce a Line into a Java3D scene. 

 LSI Convolution Two key properties that we rely on in signal processing are "linearity" and "spatial invariance". Students can examine these properties by placing and scaling two impulse functions and then dragging a filter function over them (just as in the Impulse Response applet). 

 Metamers This applet lets users experiment with metamers: different spectral distributions that are perceived as identical colors. 

 Normal Scaling 2D The 2D Surface Normals applet shows students how surface normals are affected by nonproportional (nonuniform) scaling. Without this knowledge, the shading of nonuniformly scaled objects is often calculated incorrectly. 

 Nyquist Limit This applet introduces the nyquist limit and the role it plays in signal sampling and reconstruction. The student discovers the basics of aliasing and is able to adjust a signal's frequency and the frequency at which it is sampled to build an intuitive understanding of all these concepts. 

 Parallel Camera Parameters The Parallel Camera Parameters applet aims to familiarize students with the various parameter associated with a synthetic, parallelprojection camera. Users can adjust any of the following parameters: fieldofview width, fieldofview height, near clipping plane distance, far clipping plane distance, up vector, and look vector. The viewing frustum is visualized in a window, allowing students to understand how the parameters relate to the shape of the viewing frustum. 

 Parallel Camera Transformation The Parallel Camera Transformation applet aims to familiarize students with the transformations necessary for rendering a scene using a particular synthetic camera and how the camera's parameters affect the transformed scene geometry. The effects of the transformation are immediately visible as they are applied to geometry in the main viewport when the user interpolates through the camera transformation. This applet is intended to build on the Parallel Camera Parameters applet, adding the abillity to set the camera's position in space as well as the ability to interpolate through the camera transformation. 

 Perspective Camera Parameters The Perspective Camera Parameters applet aims to familiarize students with the various parameter associated with a synthetic, perspectiveprojection camera. Users can adjust any of the following parameters: fieldofview width, fieldofview height, near clipping plane distance, far clipping plane distance, up vector, and look vector. The viewing frustum is visualized in a window, allowing students to understand how the parameters relate to the shape of the viewing frustum. 

 Perspective Camera Transformation The Perspective Camera Transformation applet aims to familiarize students with the transformations necessary for rendering a scene using a particular synthetic camera and how the camera's parameters affect the transformed scene geometry. The effects of the transformation are immediately visible as they are applied to geometry in the main viewport when the user interpolates through the camera transformation. This applet is intended to build on the Perspective Camera Parameters applet, adding the abillity to set the camera's position in space as well as the ability to interpolate through the camera transformation. 

 Plane Geometry Generator This component encapsulates the creation of planar 3D geometry for use in a Java3D scene. Used in conjunction with the Texture Coordinate Generator components, this component greatly facilitates the creation of texturemappable geometry. 

 Popup Rotate Dragger This dragger allows a programmer to add a popup behavior to a rotation dragger component such that the dragger is revealed when the user hovers over or clicks on a given object in a 3D scene. 

 Popup Translate Dragger This dragger allows a programmer to add a popup behavior to a translation dragger component such that the dragger is revealed when the user hovers over or clicks on a given object in a 3D scene. 

 Primitive Component Package This component package contains components that are visual instances of a particular primitives. 

 Quantization This applet demonstrates quantization by having students draw a "continuous" function and then quantize it, showing the quantities version as well as a graph of the error from the quantization process. 

 Radiosity Form Factor This applet shows how the form factor between two patches varies in magnitude depending on the relative geometry of the patches. The cosine relationships based on relative patch rotation and the 1/r^2 relationship based on distance are plotted on a graph as the geometry is manipulated. 

 Radiosity Shooting vs Gathering This applet shows students the graphic difference between two radiosity algorithms: shooting and gathering. The algorithms are animated for each iteration of the algorithms and the resulting visualization of a discretized scene and of its form factor matrix can be viewed as the animation progresses. 

 Reflection This applet explains the interaction between a surface's reflectance function and the spectral distribution of light illuminating it. 

 Reflection 2D The 2D Reflection applet is an interactive illustration letting users reposition a light source and automatically recalculate the reflection vector. The standard equation is used with N, L and R for, respectively, the surface normal, normalized direction to a light source, and normalized reflection of L off of a surface. All equations are automatically updated with a user's changes to the illustration. A series of tips/concept explanations are available.This applet helps enhance complete understanding of essential task. 

 RGB Insufficiency Given a spectral distribution and material reflectance, this applet shows how the RGB values of the product spectrum can differ depending on how these are calculated. 

 Rotate Spherical Dragger This component allows a programmer to add a 3D user interface widget that will support the manipulation of 3D spherical coordinates. In other words, the dragger's visual can be manipulated as if it were sliding along the surface of a sphere of fixed radius from a specified center point. 

 Scenegraph Builder This applet allows users to construct their own scene graph and observe how each transformation affects all others below it on the scene graph. 

 Single Cell Response Given a frequency response curve, this applet examines the frequency response and total response generated from an arbitrary, userspecified input signal. 

 Special Function Convolution Many special functions are convolved with signals in graphics to achieve specific effects. Students can experiment with some of these signals and manipulate their properties to create both good and bad filters. Moreover, they can observe the tradeoffs between the best filters and those which are commonly used by practitioners in the field for performance reasons. 

 Sphere This component is a visual representation of a sphere primitive and can be used to introduce a sphere into a Java3D scene. 

 Sphere Geometry Generator This component encapsulates the creation of spherical 3D geometry for use in a Java3D scene. Used in conjunction with the Texture Coordinate Generator components, this component greatly facilitates the creation of texturemappable geometry. 

 Sphere Texture Coordinate Generator This component encapsulates the generation of spherical texture coordinates. It is primarily used in support of the Geometry Generator components, but could be used independently with other thirdparty components. 

 Spherical Texture Mapping One of three applets written to illustrate different types of texture mapping. The Spherical Texture Mapping applet uses Java3D to show the graphical ramifications of the mathematics used to wrap a flat image around a sphere model. The applet allows the user to designate a point on the sphere and displays the corresponding point on the image, which is represented on a unit plane. Both numerical and graphical representations of each point are present in hopes that the user will thereby gain a more intuitive understanding of the correlation between them. 

 Square This component is a visual representation of a Square primitive and can be used to introduce a Square into a Java3D scene. 

 Stage Component Package This component package contains components that group a set of predefined 3D objects to form a "stage" for a 3d scene. 

 Subtractive Color Mixing This applet allows the user to paint on a canvas that mixes colors subtractively. Various parameters can be manipulated and some preset images can be loaded and also painted on. 

 Text Component Package This component package contains the components necessary to produce a flexible and efficient 2D text display in a Java3D scene. This component improves on the facilities built into Java3D by providing better texture management and reuse. 

 Texture Coordinate Generator Component Package This component package contains components that encapsulate various methods of generating texture coordinate. These components are primarily used in support of the Geometry Generator components, but could be used independently with other thirdparty components. 

 Three Step Scaling This applet shows how an image can be scaled in 2 dimensions in three steps. It provides magnified views of individual pixels as well as a schematic illustration of how individual pixels contribute to a weighted average used to generate the color value of a single pixel in the scaled image. 

 Tiled Planar Texture Mapping One of three applets written to illustrate different types of texture mapping. The Tiled Planar Texture Mapping applet uses Java3D to show the graphical ramifications of the mathematics used to tile an image on to a 3D plane. The applet allows the user to designate a point on the plane and displays the corresponding point on the image, which is represented on a unit plane. Both numerical and graphical representations of each point are present in hopes that the user will thereby gain a more intuitive understanding of the correlation between them. 

 Transformation Game This applet introduces the user to the usage and mathematics of twodimensional transformations using a fun, interactive play space. 

 Transformation Hierarchy This applet shows how changing the transformations of a scene graph affects the final result and how each transformation affects the space in which child nodes are transformed. 

 Transform Propagation This applet shows how changing the transformation matrices change when a scene graph node is changed. 

 Translate 1 Dragger This component allows a programmer to add a 3D user interface widget that supports the manipulation of 1D coordinates. In other words, the dragger's visual can be manipulated as if it were sliding along an axis in space. 

 Translate 2 Dragger This component allows a programmer to add a 3D user interface widget that supports the manipulation of 2D coordinates. In other words, the dragger's visual can be manipulated as if it were sliding along the surface of a plane. 

 Translate 3 Dragger This component allows a programmer to add a 3D user interface widget that supports the manipulation of 3D coordinates. In other words, the dragger's visual can be manipulated in threespace. For the sake of simplicity and practicality, however, the motion is limited to a single axis of 3space at any given time. 

 Triple Cell Response Given three different response curves, this applet examines the resulting frequency responses and total responses given an arbitrary, userspecified input signal. 

 Two Box Convolution This simple case of convolution clearly illustrates the mechanics of convolution. Two box functions are displayed on a signal graph and their area of overlap (which, for the box function, corresponds to the value of the convolution at a particular point) is shaded. Students can drag one box of the other, and see how the area of overlap changes and corresponds to the value of the convolution at that point. 

 Two Materials This applet examines what happens when two different surfaces are illuminated by a single light. 
