source: trunk/src/opengl/glu/nurbs/interface/bezierPatch.h

Last change on this file was 2689, checked in by jeroen, 26 years ago

* empty log message *

File size: 3.9 KB
Line 
1/* $Id: bezierPatch.h,v 1.1 2000-02-09 08:49:00 jeroen Exp $ */
2/*
3** License Applicability. Except to the extent portions of this file are
4** made subject to an alternative license as permitted in the SGI Free
5** Software License B, Version 1.0 (the "License"), the contents of this
6** file are subject only to the provisions of the License. You may not use
7** this file except in compliance with the License. You may obtain a copy
8** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
9** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
10**
11** http://oss.sgi.com/projects/FreeB
12**
13** Note that, as provided in the License, the Software is distributed on an
14** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
15** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
16** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
17** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
18**
19** Original Code. The Original Code is: OpenGL Sample Implementation,
20** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
21** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
22** Copyright in any portions created by third parties is as indicated
23** elsewhere herein. All Rights Reserved.
24**
25** Additional Notice Provisions: The application programming interfaces
26** established by SGI in conjunction with the Original Code are The
27** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
28** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
29** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
30** Window System(R) (Version 1.3), released October 19, 1998. This software
31** was created using the OpenGL(R) version 1.2.1 Sample Implementation
32** published by SGI, but has not been independently verified as being
33** compliant with the OpenGL(R) version 1.2.1 Specification.
34**
35** $Date: 2000-02-09 08:49:00 $ $Revision: 1.1 $
36*/
37/*
38** $Header: /home/ktk/tmp/odin/2007/netlabs.cvs/odin32/src/opengl/glu/nurbs/interface/bezierPatch.h,v 1.1 2000-02-09 08:49:00 jeroen Exp $
39*/
40
41#ifndef _BEZIERPATCH_H
42#define _BEZIERPATCH_H
43
44typedef struct bezierPatch{
45 float umin, vmin, umax, vmax;
46 int uorder; /*order= degree + 1*/
47 int vorder;
48
49 /*
50 *the control points are stored in a one dimensional array.
51 *the surface is defined as:
52 * s(u,v) = sum_{i,j} P(i,j) * B_i(u) * B_j(v).
53 *where P(i,j) are the control points, B_i(.) are Bezier
54 *basis functions.
55 *Each control point can have dimension 3 or 4: (x,y,z,w).
56 *The components of P(i,j) are stored in a one dimensional
57 *array:
58 * ctlpoints[]
59 *in the order of:
60 * P[0,0], P[0,1], ..., P[0,vorder-1],
61 * P[1,0], P[1,1], ..., P[1,vorder-1],
62 * ...
63 * P[uorder-1,0], P[uorder-1,1], ..., P[uorder-1,vorder-1].
64 */
65 int dimension;
66 float* ctlpoints;
67
68 /*
69 *in case we have to manage multiple bezierPatches.
70 */
71 struct bezierPatch *next;
72
73} bezierPatch;
74
75#ifdef __cplusplus
76extern "C" {
77#endif
78
79bezierPatch* bezierPatchMake(float umin, float vmin, float umax, float vmax, int urder, int vorder, int dimension);
80
81bezierPatch* bezierPatchMake2(float umin, float vmin, float umax, float vmax, int urder, int vorder, int dimension, int ustride, int vstride, float *ctlpoints);
82
83
84bezierPatch* bezierPatchInsert(bezierPatch *list, bezierPatch *b);
85
86void bezierPatchDelete(bezierPatch *b);
87
88void bezierPatchDeleteList(bezierPatch *b);
89
90void bezierPatchPrint(bezierPatch *b);
91
92void bezierPatchPrintList(bezierPatch *list);
93
94void bezierPatchEval(bezierPatch *b, float u, float v, float ret[]);
95
96void bezierPatchEvalNormal(bezierPatch *b, float u, float v, float retNormal[]);
97
98void bezierPatchEval(bezierPatch *b, float u, float v, float ret[]);
99
100void bezierPatchEvalNormal(bezierPatch *b, float u, float v, float ret[]);
101
102
103void bezierPatchDraw(bezierPatch *bpatch, int u_reso, int v_reso);
104
105void bezierPatchListDraw(bezierPatch *list, int u_reso, int v_reso);
106
107#ifdef __cplusplus
108}
109#endif
110
111
112#endif
Note: See TracBrowser for help on using the repository browser.