Bezier Curve -- A bezier curve is a smooth curve defined by its control points. It can be drawn using Paul de Casteljou's algorithm, which successively draws control points at half the distance between each two control points. CMY -- The CMYK colour model is a subtractive colour model that uses the colours Cyan, Magenta, Yellow and the Key (black) to make other colours. It is used in colour printers, mixing CMY together produces black, but it looks more brown than black, hence the key. BSP Tree -- Binary Space Partitioning Tree. Takes a polygon, which partitions the 3D space into two, those things behind the polygon, and those in front of it. It then repeats this process, recursively building a tree akin to a binary search tree. It's used to work out drawing order. Ray Tracing -- A ray is cast from the eye to see if it intersects with any object. If an intersection occurs, a ray is cast to each light source from the object, to see if the lightsource contributes to the colour entering the eye, if it does, its contribution is added to the colour of the point. This is applied recursively to reflected and refracted rays. Deffuse Reflector -- A surface which causes incoming light to be reflected in all directions, dependent only on the angle between the surface's normal and the incoming light vector. This relationship is called Lambert's Law. This leads to "colour bleeding". Radiosity -- The rate at which energy leaves the surface, including energy emitted by the surface, as well as energy reflected off other surfaces. Allow the intensity of radiant energy arriving at the surface to be computed, thereby allow the determination of the shading of the surface. ViewPort -- The 2D window on the computer's windowing system. Scene Graph -- Each node is an object, each edge has a transformation (4x4 matrix) associated with it. Describes a scene as a graph of componants. Bezier Patches -- Consists of 16 control points, and you interpolate over 2 variables instead of 1. A surface is a sequence of bezier curves. Tesselation -- Polygonisation. Taking shapes and turning them into polygon meshes. Constructive Solid Geometry -- Applies logical ops like AND, OR, NOT, XOR to intersections. eg: sphereA AND sphereB = convex lens. Phong Illumination Model -- Most light is reflected close to the angle of reflection, but some is reflected in other directions. Some objects spread light out more than others. (contrast with deffuse model). Attenuation (Lighting) -- Distant object appear dimmer than closer objects. normal -- (b-a)x(c-b) Bump Mapping -- Perturb the normal to the surface, without changing the actual position of the surface. Works well when using phong shading or ray-tracing, can fake it with textures for defuse. Doesn't change silhouette of an object. Lambert's Law --The intensity of light reflected from a surface is proportional to the cosin eof the angle between L (vector to light source) and N (normal at point). Cross Product -- A vector perpendicular (orthogonal) to both vectors. Cross product of two orthogonal vectors is a unit vector. Local and global illumination -- Local illumination (eg polygon rendering) only considers direct light, light coming directly from light sources, fudges indirect light using "ambient light". A global illumination modle (eg raytracing, radiosity) take into account the rest of the scene. Ambient illumination model -- Adds "background light", diffuse non-directional light source, as a result o f many different reflectiosn from the environment. Diffuse illumination model -- Point light sources, light is emitted equally in all directions from that single point. Works well for matte, non-reflective surfaces. Doesn't depend on where person is standing, but does depend on the the direction of the light source. Lambert's Law -- The intensity of light reflected from a surface is proportional to the cosin of hte angle between L (vector to the light source) and N (normal at the point. ambient, diffuse and specular reflection -- Z buffer -- Like a frame buffer but stores the closest z value seen so far, so before a pixel is filled in, the z value is checked, if it's less, we draw it, otherwise we don't do anything. OpenGL matrices -- GL_MODELVIEW (viewing and modelling), GL_PROJECTION (for defining the projection and view volumes) GL_VIEWPORT (for controlling window to viewport mapping) GL_TEXTURE (for controlling texture mapping). Projection Matrix -- A matrix that squishes things into the standard cube. Introduces distortion and stretching, but the viewport transformation is modified to undo this. Flat, Gourard and Phong Shading -- Flat : Each polygon is coloured uniformly. Gourard : Linear interpolation is used from each point. Slightly slower than Flat (illumination eqn is applied at each point, and a few adds per pixel). Doesn't look great because we made an incorrect implicit assumption - polygons represent the surface being modelled and are not an approximation to a curved surface, so instead use normal to find colours of each corner. Doesn't work well with specular objects. Phong: Find normal at each pixel, normalise it, and apply illumination eqn. Slow! Beautiful! does specular very well. Doesn't fit very well into openGL pipeline. Solid Texture -- Like carving a vase out of marble. Represent texture as a fn of 3 dimentions f(r,s,t). Too slow for real-time calculations. Environment Mapping -- Use texture map for simple reflections. To apply environment map, work out vector from viewer, reflect,a nd see where it hits the cube environment map. This is added to the brightness of the pixel. Not as good as raytracing, does only one level of reflection, fast. Aliasing -- representing high freq as low freq due to insufficient no. of samples. Nyquist sampling thrm. Anti-Aliasing -- Pre-filtering, post-filtering. Pre-Filtering: - Pencil ray tracing - use modified bresenham's algorithm - polygon rendering and line sampleing Post-Filtering:- Same calculation but more samples -> super-sampling - adoptive supersampling (only do when needed) - do it when there's a large change in intensity - modifies the algorithm to take into account geometric properties - Jitter Jitter -- Stochastic sampling - randomly perturbing the sample points to get rid of further aliasing effects. Accumulation buffer -- Used by openGL to do postfiltering. Like frame buffer but allows addition and averaging of images. accPerspective(..) moves eyes position slightly by so-called jitter amount. Can also be used for motion-blur and depth-of-field. Bilinear filtering -- Linearly interpolate: each intensity value is the centre of a pixel and then take a weighted average of the surrounding 4 pixels. Fixes the problem for far-away (magnification of texels). MIPMap -- multim in parvum - "a lot in small space". Addresses minification problem. Pre-filter a few different sizes of the texture map. Depending on distance to the object, use a different MIPMap. Can interpolate between different mipmap levels (called trilinear mipmapping). Fractals -- Self-similarity: two types: - Exact self-similarity: different levels have exactly the same shape (eg Sierpinski triangle) - Stocastic self-similarity: different levels look similar to one another. Types of fractals: - Line fractals - Iterated function systems - Mandelbrot sets, Julia sets, Newton methods - Terrain generation by midpoint displacement