ledeni
asked on
NURBS and B-splines
I am trying to create an interactive NUBRS (with openGL) in C where user is available to select the points with the click of the mouse. However, as soon as I made 25 points the nurb dissapier from the screen .. does anyone have any idea why would be doing something like that.
Here is the part of my code that does it
void render_bspline(void)
{
GLUnurbsObj *theNurb;
GLfloat knots[MAX_POINTS*2];
int i=0;
for(;i<=(numpoints*2);i++)
{
if(i<((numpoints*2)/2))
knots[i] =0.0;
else
knots[i]=1.0;
}
theNurb = gluNewNurbsRenderer();
gluNurbsProperty(theNurb, GLU_SAMPLING_TOLERANCE, 25.0);
glPushMatrix();
glColor3f(1.0,0.0, 0.0 );
gluBeginCurve(theNurb);
gluNurbsCurve(theNurb, numpoints*2, knots,3,&ctlpoints[0][0], numpoints,GL_MAP1_TEXTURE_ COORD_2);
gluNurbsCurve(theNurb, numpoints*2, knots,3,&ctlpoints[0][0], numpoints,GL_MAP1_NORMAL);
gluNurbsCurve(theNurb, numpoints*2, knots,3,&ctlpoints[0][0], numpoints,GL_MAP1_VERTEX_3 );
gluEndCurve(theNurb);
gluDeleteNurbsRenderer(the Nurb);
glPopMatrix();
}
Thanks for taking your time to look at this
L.
Here is the part of my code that does it
void render_bspline(void)
{
GLUnurbsObj *theNurb;
GLfloat knots[MAX_POINTS*2];
int i=0;
for(;i<=(numpoints*2);i++)
{
if(i<((numpoints*2)/2))
knots[i] =0.0;
else
knots[i]=1.0;
}
theNurb = gluNewNurbsRenderer();
gluNurbsProperty(theNurb, GLU_SAMPLING_TOLERANCE, 25.0);
glPushMatrix();
glColor3f(1.0,0.0, 0.0 );
gluBeginCurve(theNurb);
gluNurbsCurve(theNurb, numpoints*2, knots,3,&ctlpoints[0][0], numpoints,GL_MAP1_TEXTURE_
gluNurbsCurve(theNurb, numpoints*2, knots,3,&ctlpoints[0][0], numpoints,GL_MAP1_NORMAL);
gluNurbsCurve(theNurb, numpoints*2, knots,3,&ctlpoints[0][0], numpoints,GL_MAP1_VERTEX_3
gluEndCurve(theNurb);
gluDeleteNurbsRenderer(the
glPopMatrix();
}
Thanks for taking your time to look at this
L.
ASKER
hey Kent .. thanks for looking at it ... MAX_POINTS is 255 .. that I am also using as a array max points for that control points ... so my array is initializes as
cntrlpoints[MAX_POINTS][3] and that array gets populated with the values that I select with the mouse on the open window. And since my understanding that knots are 2 times number of control points that is why I initiate the knots as MAX_POINTS * 2
Thanks a bunch once more
L.
cntrlpoints[MAX_POINTS][3]
Thanks a bunch once more
L.
ASKER
And one more thing ... and that is that the numpoints is the current selected number of points on the screen
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Hey Kent
numpoints is 2 when I enter the function ... b.c. at least I think I should not be drawing the b-spline before I have at least 2 points. However I think that my problem is my understanding the entire process of knots, nurbs, etc etc ...
Maybe you can be more of assistance to me if you can just point me in direction of how many knots I should be having at some point for e.g. if I have chosen 2 points on the screen .. then should there be a 4 knots to it ... and should my order by number of points selected. all in all how gluNurbCurve works for dynamicly populated array of elements.
Thanks again for looking at this ... and I will just bump up some more points on this question now ... thanks again
numpoints is 2 when I enter the function ... b.c. at least I think I should not be drawing the b-spline before I have at least 2 points. However I think that my problem is my understanding the entire process of knots, nurbs, etc etc ...
Maybe you can be more of assistance to me if you can just point me in direction of how many knots I should be having at some point for e.g. if I have chosen 2 points on the screen .. then should there be a 4 knots to it ... and should my order by number of points selected. all in all how gluNurbCurve works for dynamicly populated array of elements.
Thanks again for looking at this ... and I will just bump up some more points on this question now ... thanks again
ASKER
Hey Kent .. just thought to let you know (or anyone else) that I have figured out the nerb drawing ... I was wondering if anyone would know what type of openGL command lines I can use to spin this 2D nurb around the Z axis to get the 3D image.
Thanks ... a bunch once more for looking at this ..
L.
Thanks ... a bunch once more for looking at this ..
L.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
you may also like to read this --- it des not have nerbs but rotation -- yes
http://www.mfcogl.com/OpenGL%20-%20draw%20cylinder%20between%202%20pts.htm
http://www.mfcogl.com/OpenGL%20-%20draw%20cylinder%20between%202%20pts.htm
What's the value of MAX_POINTS?
Kent