def getIndex(self, surf, u, v, quantity): """ Return the index of a Q, C, or P entry in the global list Input surf: integer 0-based surface index u: double Parametric coordinate [0,1] v: double Parametric coordinate [0,1] quantity: integer 0 for P; 1 for C; 2 for Q Output return: integer 0-based index in the Q, C, or P vector corresponding to (surf,u,v) """ ugroup = self.edge_group[abs(self.surf_edge[surf, 0, 0]) - 1] vgroup = self.edge_group[abs(self.surf_edge[surf, 1, 0]) - 1] if quantity == 0: surf_index = self.surf_index_P edge_index = self.edge_index_P nvert = self.nvert group_m = self.group_n elif quantity == 1: surf_index = self.surf_index_C edge_index = self.edge_index_C nvert = self.nvert group_m = self.group_m elif quantity == 2: surf_index = self.surf_index_Q edge_index = self.edge_index_Q nvert = max(self.vert_index_Q) group_m = self.group_m mu = group_m[ugroup - 1] mv = group_m[vgroup - 1] if u < 0: u += mu if v < 0: v += mv if (u == 0 or u == mu - 1) and (v == 0 or v == mv - 1) and quantity == 2: vert = self.surf_vert[surf, int(u / (mu - 1)), int(v / (mv - 1))] - 1 return self.vert_index_Q[vert] - 1 else: return PUBSlib.getindex(surf + 1, u + 1, v + 1, mu, mv, self.nsurf, self.nedge, nvert, self.surf_vert, self.surf_edge, surf_index, edge_index) - 1
def getIndex(self, surf, u, v, quantity): """ Return the index of a Q, C, or P entry in the global list Input surf: integer 0-based surface index u: double Parametric coordinate [0,1] v: double Parametric coordinate [0,1] quantity: integer 0 for P; 1 for C; 2 for Q Output return: integer 0-based index in the Q, C, or P vector corresponding to (surf,u,v) """ ugroup = self.edge_group[abs(self.surf_edge[surf,0,0])-1] vgroup = self.edge_group[abs(self.surf_edge[surf,1,0])-1] if quantity==0: surf_index = self.surf_index_P edge_index = self.edge_index_P nvert = self.nvert group_m = self.group_n elif quantity==1: surf_index = self.surf_index_C edge_index = self.edge_index_C nvert = self.nvert group_m = self.group_m elif quantity==2: surf_index = self.surf_index_Q edge_index = self.edge_index_Q nvert = max(self.vert_index_Q) group_m = self.group_m mu = group_m[ugroup-1] mv = group_m[vgroup-1] if u < 0: u += mu if v < 0: v += mv if (u==0 or u==mu-1) and (v==0 or v==mv-1) and quantity==2: vert = self.surf_vert[surf,int(u/(mu-1)),int(v/(mv-1))] - 1 return self.vert_index_Q[vert] - 1 else: return PUBSlib.getindex(surf+1,u+1,v+1,mu,mv,self.nsurf,self.nedge,nvert,self.surf_vert,self.surf_edge,surf_index,edge_index) - 1