ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

bezierPatch.h
Go to the documentation of this file.
00001 /*
00002 ** License Applicability. Except to the extent portions of this file are
00003 ** made subject to an alternative license as permitted in the SGI Free
00004 ** Software License B, Version 1.1 (the "License"), the contents of this
00005 ** file are subject only to the provisions of the License. You may not use
00006 ** this file except in compliance with the License. You may obtain a copy
00007 ** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
00008 ** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
00009 **
00010 ** http://oss.sgi.com/projects/FreeB
00011 **
00012 ** Note that, as provided in the License, the Software is distributed on an
00013 ** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
00014 ** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
00015 ** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
00016 ** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
00017 **
00018 ** Original Code. The Original Code is: OpenGL Sample Implementation,
00019 ** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
00020 ** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
00021 ** Copyright in any portions created by third parties is as indicated
00022 ** elsewhere herein. All Rights Reserved.
00023 **
00024 ** Additional Notice Provisions: The application programming interfaces
00025 ** established by SGI in conjunction with the Original Code are The
00026 ** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
00027 ** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
00028 ** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
00029 ** Window System(R) (Version 1.3), released October 19, 1998. This software
00030 ** was created using the OpenGL(R) version 1.2.1 Sample Implementation
00031 ** published by SGI, but has not been independently verified as being
00032 ** compliant with the OpenGL(R) version 1.2.1 Specification.
00033 **
00034 ** $Date: 2007-10-19 23:21:45 +0000 (Fri, 19 Oct 2007) $ $Revision: 1.1 $
00035 */
00036 /*
00037 ** $Header: /cygdrive/c/RCVS/CVS/ReactOS/reactos/lib/glu32/libnurbs/interface/bezierPatch.h,v 1.1 2004/02/02 16:39:08 navaraf Exp $
00038 */
00039 
00040 #ifndef _BEZIERPATCH_H
00041 #define _BEZIERPATCH_H
00042 
00043 typedef struct bezierPatch{
00044   float umin, vmin, umax, vmax;
00045   int uorder; /*order= degree + 1*/
00046   int vorder;
00047 
00048   /*
00049    *the control points are stored in a one dimensional  array.
00050    *the surface is defined as:
00051    *      s(u,v) = sum_{i,j} P(i,j) * B_i(u) * B_j(v).
00052    *where P(i,j) are the control points, B_i(.) are Bezier
00053    *basis functions.
00054    *Each control point can have dimension 3 or 4: (x,y,z,w).
00055    *The components of P(i,j) are stored in a one dimensional
00056    *array:
00057    *       ctlpoints[]
00058    *in the order of:
00059    * P[0,0], P[0,1], ..., P[0,vorder-1],
00060    * P[1,0], P[1,1], ..., P[1,vorder-1],
00061    *  ...
00062    * P[uorder-1,0], P[uorder-1,1], ..., P[uorder-1,vorder-1].
00063    */
00064   int dimension;
00065   float* ctlpoints;
00066 
00067   /*
00068    *in case we have to manage multiple bezierPatches.
00069    */
00070   struct bezierPatch  *next;
00071 
00072 } bezierPatch;
00073 
00074 #ifdef __cplusplus
00075 extern "C" {
00076 #endif
00077 
00078 bezierPatch* bezierPatchMake(float umin, float vmin, float umax, float vmax, int urder, int vorder, int dimension);
00079 
00080 bezierPatch* bezierPatchMake2(float umin, float vmin, float umax, float vmax, int urder, int vorder, int dimension, int ustride, int vstride, float *ctlpoints);
00081 
00082 
00083 bezierPatch* bezierPatchInsert(bezierPatch *list, bezierPatch *b);
00084 
00085 void bezierPatchDelete(bezierPatch *b);
00086 
00087 void bezierPatchDeleteList(bezierPatch *b);
00088 
00089 void bezierPatchPrint(bezierPatch *b);
00090 
00091 void bezierPatchPrintList(bezierPatch *list);
00092 
00093 void bezierPatchEval(bezierPatch *b, float u, float v, float ret[]);
00094 
00095 void bezierPatchEvalNormal(bezierPatch *b, float u, float v, float retNormal[]);
00096 
00097 void bezierPatchEval(bezierPatch *b, float u, float v, float ret[]);
00098 
00099 void bezierPatchEvalNormal(bezierPatch *b, float u, float v, float ret[]);
00100 
00101 
00102 void bezierPatchDraw(bezierPatch *bpatch, int u_reso, int v_reso);
00103 
00104 void bezierPatchListDraw(bezierPatch *list, int u_reso, int v_reso);
00105 
00106 #ifdef __cplusplus
00107 }
00108 #endif
00109 
00110 
00111 #endif

Generated on Sun May 27 2012 04:23:37 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.