Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
 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
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #6
0
 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()))
Beispiel #7
0
 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))