def prot_to_xy(py): eb,ibs = py ebn = dpr.polygon_normal(eb) if ebn.near(dpv.nz()):prot = dpq.q_from_av(dpr.PI,dpv.x()) elif not ebn.near(dpv.z() ):prot = dpq.q_from_uu(ebn,dpv.z()) else: prot = dpq.zero() return prot
def prot_to_xy(py): eb, ibs = py ebn = dpr.polygon_normal(eb) if ebn.near(dpv.nz()): prot = dpq.q_from_av(dpr.PI, dpv.x()) elif not ebn.near(dpv.z()): prot = dpq.q_from_uu(ebn, dpv.z()) else: prot = dpq.zero() return prot
def _project_uv_flat(self,rng = None): if rng is None:rng = range(len(self.faces)) for nf in rng: face = self.faces[nf] for fdx in face: p = self.pcoords[fdx] n = self.ncoords[fdx] if dpv.near(n,dpv.nx()) or dpv.near(n,dpv.x()): nu = p.copy().yz2d() elif dpv.near(n,dpv.ny()) or dpv.near(n,dpv.y()): nu = p.copy().xz2d() elif dpv.near(n,dpv.nz()) or dpv.near(n,dpv.z()): nu = p.copy().xy2d() else:continue self.ucoords[fdx] = nu
def valid_pair(py1,py2): eb1,eb2 = py1[0],py2[0] for x in range(len(eb2)): one,two = eb2[x-1],eb2[x] if one.near(two): print('invalid!!!') pdb.set_trace() ebn1 = dpr.polygon_normal(eb1) pj1 = dpv.project_coords(list(eb1),ebn1) pj2 = dpv.project_coords(list(eb2),ebn1) if not (dpr.isnear(pj2.x,pj2.y) and dpr.isnear(pj1.x,pj2.x)):return if ebn1.near(dpv.nz()):prot = dpq.q_from_av(dpr.PI,dpv.x()) elif not ebn1.near(dpv.z() ):prot = dpq.q_from_uu(ebn1,dpv.z()) else: prot = dpq.zero() return prot
def valid_pair(py1, py2): eb1, eb2 = py1[0], py2[0] for x in range(len(eb2)): one, two = eb2[x - 1], eb2[x] if one.near(two): print('invalid!!!') pdb.set_trace() ebn1 = dpr.polygon_normal(eb1) pj1 = dpv.project_coords(list(eb1), ebn1) pj2 = dpv.project_coords(list(eb2), ebn1) if not (dpr.isnear(pj2.x, pj2.y) and dpr.isnear(pj1.x, pj2.x)): return if ebn1.near(dpv.nz()): prot = dpq.q_from_av(dpr.PI, dpv.x()) elif not ebn1.near(dpv.z()): prot = dpq.q_from_uu(ebn1, dpv.z()) else: prot = dpq.zero() return prot
def yaw_down(self,p,d):d.rotate(dpq.q_from_av(self.angle,dpv.nz())) def roll_up(self,p,d):d.rotate(dpq.q_from_av(self.angle,dpv.y()))
def polar_down(self,p,d): if d.near(dpv.z()) or d.near(dpv.nz()):qv = dpv.y() else:qv = d.cross(dpv.z()) d.rotate(dpq.q_from_av(-self.polar,qv))