Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

NURBS and B-splines

Posted on 2003-11-07
11
Medium Priority
?
1,113 Views
Last Modified: 2007-12-19
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.
0
Comment
Question by:ledeni
  • 4
  • 2
  • 2
11 Comments
 
LVL 46

Expert Comment

by:Kent Olsen
ID: 9712056


What's the value of MAX_POINTS?

Kent
0
 

Author Comment

by:ledeni
ID: 9712150
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
 

Author Comment

by:ledeni
ID: 9712161
And one more thing ... and that is that the numpoints is the current selected number of points on the screen
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 46

Accepted Solution

by:
Kent Olsen earned 300 total points
ID: 9714538

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
 

Author Comment

by:ledeni
ID: 9715317
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
 

Author Comment

by:ledeni
ID: 9723364
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
 
LVL 45

Assisted Solution

by:sunnycoder
sunnycoder earned 300 total points
ID: 9729849
0
 
LVL 45

Expert Comment

by:sunnycoder
ID: 9729871
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

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Preface I don't like visual development tools that are supposed to write a program for me. Even if it is Xcode and I can use Interface Builder. Yes, it is a perfect tool and has helped me a lot, mainly, in the beginning, when my programs were small…
Windows programmers of the C/C++ variety, how many of you realise that since Window 9x Microsoft has been lying to you about what constitutes Unicode (http://en.wikipedia.org/wiki/Unicode)? They will have you believe that Unicode requires you to use…
The goal of this video is to provide viewers with basic examples to understand and use pointers in the C programming language.
The goal of this video is to provide viewers with basic examples to understand how to create, access, and change arrays in the C programming language.
Suggested Courses

926 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question