• C

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(theNurb);
  glPopMatrix();
}

Thanks for taking your time to look at this
L.
ledeniAsked:
Who is Participating?
 
Kent OlsenData Warehouse Architect / DBACommented:

What is the value of numpoints when you enter the function?

Also, as a matter of technique, if you're passing the array ctlpoints to a function you can use the name instead of taking the address of the first element.

              gluNurbsCurve(theNurb, numpoints*2, knots, 3, &ctlpoints[0][0], numpoints, GL_MAP1_TEXTURE_COORD_2);

becomes:

              gluNurbsCurve(theNurb, numpoints*2, knots, 3, ctlpoints, numpoints, GL_MAP1_TEXTURE_COORD_2);


Kent
0
 
Kent OlsenData Warehouse Architect / DBACommented:


What's the value of MAX_POINTS?

Kent
0
 
ledeniAuthor Commented:
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.
0
Protect Your Employees from Wi-Fi Threats

As Wi-Fi growth and popularity continues to climb, not everyone understands the risks that come with connecting to public Wi-Fi or even offering Wi-Fi to employees, visitors and guests. Download the resource kit to make sure your safe wherever business takes you!

 
ledeniAuthor Commented:
And one more thing ... and that is that the numpoints is the current selected number of points on the screen
0
 
ledeniAuthor Commented:
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
0
 
ledeniAuthor Commented:
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.
0
 
sunnycoderCommented:
0
 
sunnycoderCommented:
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
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.