41 #include "glimports.h"
43 #include <libnurbs2.h>
46 #include "rectBlock.h"
53 upGridLineIndex = left->getVlineIndex(beginVline);
55 lowGridLineIndex = left->getVlineIndex(endVline);
57 Int n = upGridLineIndex-lowGridLineIndex+1;
58 leftIndices = (Int*) malloc(
sizeof(Int) * n);
60 rightIndices = (Int*) malloc(
sizeof(Int) * n);
65 leftIndices[i] = left->getInnerIndex(i+beginVline);
66 rightIndices[i] = right->getInnerIndex(i+beginVline);
71 rectBlock::~rectBlock()
77 void rectBlock::print()
81 for(i=upGridLineIndex; i >= lowGridLineIndex; i--)
83 printf(
"gridline %i, (%i,%i)\n", i, leftIndices[upGridLineIndex-i], rightIndices[upGridLineIndex-i]);
89 void rectBlock::draw(Real* u_values, Real* v_values)
94 printf(
"upGridLineIndex=%i, lowGridLineIndex=%i\n", upGridLineIndex, lowGridLineIndex);
97 for(k=0, i=upGridLineIndex; i > lowGridLineIndex; i--, k++)
99 glBegin(GL_QUAD_STRIP);
101 for(j=leftIndices[k+1]; j<= rightIndices[k+1]; j++)
103 glVertex2f(u_values[j], v_values[i]);
104 glVertex2f(u_values[j], v_values[i-1]);
112 Int rectBlock::num_quads()
116 for(k=0, i=upGridLineIndex; i>lowGridLineIndex; i--, k++)
118 ret += (rightIndices[k+1]-leftIndices[k+1]);
123 Int rectBlockArray::num_quads()
126 for(Int i=0; i<n_elements; i++)
127 ret += array[i]->num_quads();
131 rectBlockArray::rectBlockArray(Int s)
143 rectBlockArray::~rectBlockArray()
146 for(i=0; i<size; i++)
155 void rectBlockArray::insert(
rectBlock* newBlock)
158 if(n_elements == size)
163 for(i=0; i<2*size+1; i++)
166 for(i=0; i<n_elements; i++)
174 array[n_elements++] = newBlock;
177 void rectBlockArray::print()
180 for(i=0; i<n_elements; i++)
184 void rectBlockArray::draw(Real* u_values, Real* v_values)
187 for(i=0; i<n_elements; i++)
188 array[i]->draw(u_values, v_values);