12,827,730 members (44,843 online)

#### Stats

193.7K views
115 bookmarked
Posted 17 Feb 2003

# Basic Curves And Surfaces Modeler

, 18 Apr 2012 CPOL
A basic demo of modeling curves and surfaces in OpenGL.
 ```#if HAVE_CONFIG_H # include #endif #include "stdafx.h" #include "Bsp.h" #include "MMath.h" void bspline(int n, int t, point *control, point *output, int num_output) /********************************************************************* Parameters: n - the number of control points minus 1 t - the degree of the polynomial plus 1 control - control point array made up of point stucture output - array in which the calculate spline points are to be put num_output - how many points on the spline are to be calculated Pre-conditions: n+2>t (no curve results if n+2<=t) control array contains the number of points specified by n output array is the proper size to hold num_output point structures **********************************************************************/ { int *u; double increment,interval; point calcxyz; int output_index; u=new int[n+t+1]; compute_intervals(u, n, t); increment=(double) (n-t+2)/(num_output-1); // how much parameter goes up each time interval=0; for (output_index=0; output_indexn) u[j]=n-t+2; // if n-t=-2 then we're screwed, everything goes to 0 } } void compute_point(int *u, int n, int t, double v, point *control, point *output) { int k; double temp; // initialize the variables that will hold our outputted point output->x=0; output->y=0; output->z=0; for (k=0; k<=n; k++) { temp = blend(k,t,u,v); // same blend is used for each dimension coordinate output->x = output->x + (control[k]).x * temp; output->y = output->y + (control[k]).y * temp; output->z = output->z + (control[k]).z * temp; } } ```

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.