Exemplo n.º 1
0
def redraw():
    global p1,p2,p3
    print "p1 = %s,  p2 = %s,  p3 = %s" % (p1,p2,p3)
    z = Zell( p1, 0, p2, p2, p3, p1 )
    vo = Voron( *z.to_reper() )
    drawgl.clear()
    drawgl( vo )
Exemplo n.º 2
0
def redraw():
    global p1, p2, p3
    print "p1 = %s,  p2 = %s,  p3 = %s" % (p1, p2, p3)
    z = Zell(p1, 0, p2, p2, p3, p1)
    vo = Voron(*z.to_reper())
    drawgl.clear()
    drawgl(vo)
Exemplo n.º 3
0
def sel(obj):
    global ucm
    if type(obj) is Vec:
        s = SpGrp(166, 2)
        p = ucm.rep.dec2frac(obj)
        for v in s * p:
            v = ucm.rep * v
            drawgl(v, r=0.05, color=(1, 0, 0))
Exemplo n.º 4
0
def sel( obj ):
    global ucm
    if type( obj ) is Vec:
        s = SpGrp( 166, 2 )
        p = ucm.rep.dec2frac( obj )
        for v in s * p:
            v = ucm.rep * v
            drawgl( v, r = 0.05, color = (1,0,0) )
Exemplo n.º 5
0
def draw(r, c=(1, 1, 1)):
    print "-------------"
    cs = [(1, 0, 0), (0, 1, 0), (0, 0, 1)]
    for i, v in enumerate(r):
        print "--->", v.vlen()
        drawgl(v, style="line", color=cs[i])
        # drawgl( v, color = c )

    drawgl(Voron(*r))
Exemplo n.º 6
0
def draw( r, c = (1,1,1) ):
    print '-------------'
    cs = [ (1,0,0), (0,1,0), (0,0,1) ]
    for i,v in enumerate( r ):
        print '--->', v.vlen()
        drawgl( v, style = "line", color = cs[ i ] )
        #drawgl( v, color = c )

    drawgl( Voron( *r ) )
Exemplo n.º 7
0
def redraw():
    global pos, reps
    #### constructing sublattice reper
    #r1 = Zell( -1, 0, -1, -1, 0, -1 ).to_reper()
    r1, r2 = reps[ pos ]
    vo1 = Voron( *r1 )
    vo2 = Voron( *r2 )

    drawgl.clear()
    drawgl( vo1 )
    drawgl( vo2 )

    print r1, r2
Exemplo n.º 8
0
def to_ipe2(*args):
    v = vo3.rep[0] + vo3.rep[1]
    v = v.norm()
    pln = v.to_plane(v * 2)

    drawgl(v * 2, style="line")

    drawipe.setup_plane(pln, 10)

    for p in vo3.has(ds1):
        drawipe(p, color=(0, 1, 0))

    for p in vo3.has(ds2):
        drawipe(p, r=0.04, color=(1, 0, 0))

    drawipe(vo3)
Exemplo n.º 9
0
def to_ipe2( *args ):
    v = vo3.rep[0] + vo3.rep[1]
    v = v.norm()
    pln = v.to_plane( v * 2 )

    drawgl( v * 2, style="line" )

    drawipe.setup_plane( pln, 10 )

    for p in vo3.has( ds1 ):
        drawipe( p, color=(0,1,0) )

    for p in vo3.has( ds2 ):
        drawipe( p, r=0.04, color=(1,0,0) )

    drawipe( vo3 )
Exemplo n.º 10
0
def w_si( *args ):
    drawgl.clear()
    drawgl( vo )
    for v in si:
        drawgl( v )
        for vv in o:
            if abs( (v - vv).vlen() - d2 ) < 0.1:
                drawgl( Vec( *vv ), style='line', start=v )
                drawgl( Vec( *vv ), r=0.1, color=(0,0,1) )
Exemplo n.º 11
0
def w_si(*args):
    drawgl.clear()
    drawgl(vo)
    for v in si:
        drawgl(v)
        for vv in o:
            if abs((v - vv).vlen() - d2) < 0.1:
                drawgl(Vec(*vv), style='line', start=v)
                drawgl(Vec(*vv), r=0.1, color=(0, 0, 1))
Exemplo n.º 12
0
def redraw():
    global vc, pos, delta
    v = vc.norm() * delta * pos
    p = vc.to_plane( v )
    drawgl.clear()
    drawgl( vo_h )
    drawgl( p )
    for x in p.touch( ds1_h ):
        drawgl( x, r = 0.10, color=(0,1,0) )

    for x in p.touch( ds2_h ):
        drawgl( x, r = 0.11, color=(1,0,0) )
Exemplo n.º 13
0
def redraw():
    global vc, pos, delta
    v = vc.norm() * delta * pos
    p = vc.to_plane(v)
    drawgl.clear()
    drawgl(vo_h)
    drawgl(p)
    for x in p.touch(ds1_h):
        drawgl(x, r=0.10, color=(0, 1, 0))

    for x in p.touch(ds2_h):
        drawgl(x, r=0.11, color=(1, 0, 0))
Exemplo n.º 14
0
def draw(n):
    drawgl.clear()
    drawgl(vo3)

    vn = edg.norm()
    pln = vn.to_plane(vn * dr * n)
    drawgl(pln)

    for p in pln.touch(vo3.has(ds1)):
        drawgl(p, color=(0, 1, 0))

    for p in pln.touch(vo3.has(ds2)):
        drawgl(p, r=0.04, color=(1, 0, 0))
Exemplo n.º 15
0
def draw( n ):
    drawgl.clear()
    drawgl( vo3 )

    vn = edg.norm()
    pln = vn.to_plane( vn * dr * n )
    drawgl( pln )

    for p in pln.touch( vo3.has( ds1 ) ):
        drawgl( p, color=(0,1,0) )

    for p in pln.touch( vo3.has( ds2 ) ):
        drawgl( p, r=0.04, color=(1,0,0) )
Exemplo n.º 16
0
def min_cell( *args ):
    uc = UCell( vo3.rep )
    uc.add( 'A', vo3.has( ds1 ) )
    uc.add( 'B', vo3.has( ds2 ) )
    print len( uc.pnts['A'] )
    print len( uc.pnts['B'] )
    uc = uc.to_min()
    print len( uc.pnts['A'] )
    print len( uc.pnts['B'] )

    #drawgl.clear()
    for v in uc.rep:
        drawgl( v, style="line" )

    f = open( '/tmp/basis_ock_ock.txt', 'w' )
    r = uc.rep
    print r.v3 * r.v1.vcross( r.v2 )
    f.write( "rprim %s %s %s\n      %s %s %s\n      %s %s %s\n" % ( tuple( r[0] ) + tuple( r[1] ) + tuple( r[2] ) )  )

    f.write( '-----------\n' )
    for v in uc.pnts['A']:
        f.write( "%s %s %s\n" % tuple( r.dec2frac( v ) ) )
        drawgl( v, r=0.04, color=(0,0,1) )

    f.write( '-----------\n' )
    for v in uc.pnts['B']:
        f.write( "%s %s %s\n" % tuple( r.dec2frac( v ) ) )
        drawgl( v, r=0.06, color=(1,0,0) )

    f.close()
Exemplo n.º 17
0
def symm(*args):
    global ucm
    uc = UCell(r_hex)
    uc.add('A', vhex.has(ds1))
    uc.add('B', vhex.has(ds2))
    ucm = uc.to_min()
    print uc
    print ucm

    r = ucm.rep
    r.v1 = -1 * r.v1
    print r.v3 * r.v1.vcross(r.v2)
    f = open('/tmp/basis_pcub_pcub.txt', 'w')
    f.write("rprim %s %s %s\n      %s %s %s\n      %s %s %s\n" %
            (tuple(r[0]) + tuple(r[1]) + tuple(r[2])))
    f.write('-----------\n')
    for v in ucm.atoms['A']:
        f.write("%s %s %s\n" % tuple(r.dec2frac(v)))
        drawgl(v)

    f.write('-----------\n')
    for v in ucm.atoms['B']:
        f.write("%s %s %s\n" % tuple(r.dec2frac(v)))
        drawgl(v, r=0.1, color=(1, 0, 0))
    f.close()

    for v in ucm.rep:
        drawgl(v, style='line', color=(0, 1, 0))
Exemplo n.º 18
0
    def minimize(*xxx):
        global args, u

        ## test mimimization for correction
        if args.testmin:
            vo = Voron(*u.rep)  ## original Voronoi cell
            u = u.to_min()
            u_exp = u * 1

            u_exp.to_decart()

            drawgl.clear()
            drawgl(vo)

            ## draw all atoms which are in "vo"
            for n, ats in u_exp:
                r, col = UCell.data[n]
                col = [x / 255.0 for x in col]

                for v in vo.has(ats):
                    drawgl(v, r=r, color=col, invis=False)

            ## now draw all cloned Voronoi cells
            #import reper2dots
            #for v in vo.cut( u.rep.to_dots( 1, 1, 1 ) ):
            #    drawgl( Voron( *u.rep, pos = v ) )
            drawgl(Voron(*u.rep))

        ## usual minimization process
        else:
            u = u.to_min()
            print '------------'
            print 'sort of minimized cell: ', u.rep.to_zell().to_sort().name
            print 'zell of minimized cell: ', u.rep.to_zell().norm()
            draw_with(drawgl)
Exemplo n.º 19
0
def min_cell(*args):
    uc = UCell(vo3.rep)
    uc.add('A', vo3.has(ds1))
    uc.add('B', vo3.has(ds2))
    print len(uc.pnts['A'])
    print len(uc.pnts['B'])
    uc = uc.to_min()
    print len(uc.pnts['A'])
    print len(uc.pnts['B'])

    #drawgl.clear()
    for v in uc.rep:
        drawgl(v, style="line")

    f = open('/tmp/basis_ock_ock.txt', 'w')
    r = uc.rep
    print r.v3 * r.v1.vcross(r.v2)
    f.write("rprim %s %s %s\n      %s %s %s\n      %s %s %s\n" %
            (tuple(r[0]) + tuple(r[1]) + tuple(r[2])))

    f.write('-----------\n')
    for v in uc.pnts['A']:
        f.write("%s %s %s\n" % tuple(r.dec2frac(v)))
        drawgl(v, r=0.04, color=(0, 0, 1))

    f.write('-----------\n')
    for v in uc.pnts['B']:
        f.write("%s %s %s\n" % tuple(r.dec2frac(v)))
        drawgl(v, r=0.06, color=(1, 0, 0))

    f.close()
Exemplo n.º 20
0
def symm( *args ):
    global ucm
    uc = UCell( r_hex )
    uc.add( 'A', vhex.has( ds1 ) )
    uc.add( 'B', vhex.has( ds2 ) )
    ucm = uc.to_min()
    print uc
    print ucm

    r = ucm.rep
    r.v1 = -1 * r.v1
    print r.v3 * r.v1.vcross( r.v2 )
    f = open( '/tmp/basis_pcub_pcub.txt', 'w' )
    f.write( "rprim %s %s %s\n      %s %s %s\n      %s %s %s\n" % ( tuple( r[0] ) + tuple( r[1] ) + tuple( r[2] ) )  )
    f.write( '-----------\n' )
    for v in ucm.atoms['A']:
        f.write( "%s %s %s\n" % tuple( r.dec2frac( v ) ) )
        drawgl( v )

    f.write( '-----------\n' )
    for v in ucm.atoms['B']:
        f.write( "%s %s %s\n" % tuple( r.dec2frac( v ) ) )
        drawgl( v, r = 0.1, color = (1,0,0) )
    f.close()

    for v in ucm.rep:
        drawgl( v, style = 'line', color = (0,1,0) )
Exemplo n.º 21
0
def draw():
    print num
    drawgl.clear()

    #drawgl( vo1 )
    #drawgl( vo2 )
    drawgl(vhex)

    pln = n.to_plane(r0 + num * dr)
    for p in pln.touch(vhex.has(ds1)):
        drawgl(p, r=0.02, color=(0, 1, 0))

    for p in pln.touch(vhex.has(ds2)):
        drawgl(p, r=0.04, color=(1, 0, 0))
Exemplo n.º 22
0
def draw():
    print num
    drawgl.clear()

    #drawgl( vo1 )
    #drawgl( vo2 )
    drawgl( vhex )

    pln = n.to_plane( r0 + num * dr )
    for p in pln.touch( vhex.has( ds1 ) ):
        drawgl( p, r=0.02, color = (0,1,0) )

    for p in pln.touch( vhex.has( ds2 ) ):
        drawgl( p, r=0.04, color = (1,0,0) )
Exemplo n.º 23
0
    def minimize( *xxx ):
        global args, u
        
        ## test mimimization for correction
        if args.testmin:
            vo = Voron( *u.rep )  ## original Voronoi cell
            u = u.to_min()
            u_exp = u * 1

            u_exp.to_decart()

            drawgl.clear()
            drawgl( vo )

            ## draw all atoms which are in "vo"
            for n, ats in u_exp:
                r, col = UCell.data[ n ]
                col = [ x/255.0 for x in col ]

                for v in vo.has( ats ):
                    drawgl( v, r = r, color = col, invis = False )

            ## now draw all cloned Voronoi cells
            #import reper2dots
            #for v in vo.cut( u.rep.to_dots( 1, 1, 1 ) ):
            #    drawgl( Voron( *u.rep, pos = v ) )
            drawgl( Voron( *u.rep ) )
                    

        ## usual minimization process
        else:
            u = u.to_min()
            print '------------'
            print 'sort of minimized cell: ', u.rep.to_zell().to_sort().name
            print 'zell of minimized cell: ', u.rep.to_zell().norm()
            draw_with( drawgl )
Exemplo n.º 24
0
r1 = Reper( Vec( -1,-1,0 ),
            Vec( 1,0,1 ),
            Vec( 0,1,1 ) )

r2 = n * r1

r2 = Reper( r2[0] + r2[2], r2[2] - r2[1], r2[2] )

vo1 = Voron( *r1 )
vo2 = Voron( *r2 )

ds1 = r1.to_dots( 5,5,5 )
ds2 = r2.to_dots( 2,2,2 )

drawgl( vo1 )
drawgl( vo2 )

for v in r2:
    drawgl( v, style ="line" )



for d in vo2.has( ds1 ):
    drawgl( d, r = 0.05, color=(0,1,0) )

for d in vo2.has( ds2 ):
    drawgl( d, r = 0.06, color=(1,0,0) )

drawgl.start()
Exemplo n.º 25
0
Arquivo: uctool.py Projeto: ont/cbox
def draw( to_ipe = False ):
    from draw_gl import drawgl
    import vec_gl
    import ucell_gl
    drawgl( u )
    drawgl.start()
Exemplo n.º 26
0
#sr = Reper( Vec( 0.5, 0.5, 0.0 ),    ## hardcoded vectors of face centered lattice
#            Vec( 0.5, 0.0, 0.5 ),
#            Vec( 0.0, 0.5, 0.5 ) )
print 'sort of sublattice -', sr.to_zell().to_sort()

## build & draw Voronoi polyhedra
print '-----------------'
print 'parameters a,b,c=', a,b,c
print 'parameter as=', sub_a
print 'translateional matrix:', m.inv()
print 'invert translateional matrix:', m
print 'lattice reper', r
print 'sublattice reper', sr
vo  = Voron( *r )
vos = Voron( *sr )
drawgl( vo )
drawgl( vos )
drawipe( vo )
drawipe( vos )

drawgl( sr[ 0 ], style = 'line' )
drawgl( sr[ 1 ], style = 'line' )
drawgl( sr[ 2 ], style = 'line' )

## additional testing for conversion of cubic sublattice to volume-centered...
m_vc = Mat( 1.0, 0.0, 0.0,
            0.0, 1.0, 0.0,
            0.5, 0.5, 0.5 )

print mv * m_vc.inv()
Exemplo n.º 27
0

d2_1 = (Vec( 3.426423, -1.3460447, 2.5054464 ) -\
        Vec( 3.5035, 4.4408920985e-16, 1.616 ) ).vlen()
print "d2_1 =", d2_1

d3 = ( Vec( -1.75175, 1.100099, -0.808 ) -\
       Vec( -2.1574553, -0.077077, 0.7265536 ) ).vlen()
print "d3 = ", d3
#-------------------------------------

r = Reper.from_abc( 7.007, 7.007, 6.464, pi/2, pi/2, pi/2 )
c = ( r[0] + r[1] + r[2] ) * 0.5

vo = Voron( *r )
drawgl( vo )


s = SpGrp( 122, 1 )
print s.mydata
si = s * Vec( 0.0, 0.0, 0.5 )
zn = s * Vec( 0.157, 0.25, 0.125 )
o  = s * Vec( 0.3079, 0.489, 0.1376 )

si = set( map( lambda v: v.z2o(), si ) )
zn = set( map( lambda v: v.z2o(), zn ) )
o  = set( map( lambda v: v.z2o(), o  ) )

si = vo.cut( map( lambda v: v-c, r.frac2dec( si ) ) )
zn = vo.cut( map( lambda v: v-c, r.frac2dec( zn ) ) )
o  = vo.cut( map( lambda v: v-c, r.frac2dec( o  ) ) )
Exemplo n.º 28
0
vc = 1/3.0 * ( v1 + v2 + v3 )
v1,v2 = v1 - vc, v2 - vc
v3 = (ve1 - ve2).vlen() * v1.vcross( v2 ).norm()
v1,v2 = v1+v2+v1, v1+v2+v2

r3 = Reper( v1, v2, v3 )
vo3 = Voron( *r3 )

#for p in r3.to_dots( 2, 2, 2 ):
#    drawgl( p, r=0.05, color=(0,1,0) )


## ----------- planes for cutting
edg = ve1 - ve2
pln = ( 0.5 * edg ).to_plane( 0.5 * edg )
drawgl( pln )

pln.do_norm()
drs = map( lambda p: ( pln.r - p ) * pln.n, vo3.has( ds1 ) )
drs = filter( lambda d: abs( d ) > 0.0001, drs )
dr  = min( drs )
print dr



## ----------- drawing
f = open( '/home/ont/make_it/kem/cbox/tmp/ock.txt', 'a' )
for p in vo3.has( ds1 ):
    drawgl( p, color=(0,1,0) )
    f.write( 'A %s %s %s\n' % tuple( p ) )
Exemplo n.º 29
0

d2_1 = (Vec( 3.426423, -1.3460447, 2.5054464 ) -\
        Vec( 3.5035, 4.4408920985e-16, 1.616 ) ).vlen()
print "d2_1 =", d2_1

d3 = ( Vec( -1.75175, 1.100099, -0.808 ) -\
       Vec( -2.1574553, -0.077077, 0.7265536 ) ).vlen()
print "d3 = ", d3
#-------------------------------------

r = Reper.from_abc(7.007, 7.007, 6.464, pi / 2, pi / 2, pi / 2)
c = (r[0] + r[1] + r[2]) * 0.5

vo = Voron(*r)
drawgl(vo)

s = SpGrp(122, 1)
print s.mydata
si = s * Vec(0.0, 0.0, 0.5)
zn = s * Vec(0.157, 0.25, 0.125)
o = s * Vec(0.3079, 0.489, 0.1376)

si = set(map(lambda v: v.z2o(), si))
zn = set(map(lambda v: v.z2o(), zn))
o = set(map(lambda v: v.z2o(), o))

si = vo.cut(map(lambda v: v - c, r.frac2dec(si)))
zn = vo.cut(map(lambda v: v - c, r.frac2dec(zn)))
o = vo.cut(map(lambda v: v - c, r.frac2dec(o)))
Exemplo n.º 30
0
vc = 1 / 3.0 * (v1 + v2 + v3)
v1, v2 = v1 - vc, v2 - vc
v3 = (ve1 - ve2).vlen() * v1.vcross(v2).norm()
v1, v2 = v1 + v2 + v1, v1 + v2 + v2

r3 = Reper(v1, v2, v3)
vo3 = Voron(*r3)

#for p in r3.to_dots( 2, 2, 2 ):
#    drawgl( p, r=0.05, color=(0,1,0) )

## ----------- planes for cutting
edg = ve1 - ve2
pln = (0.5 * edg).to_plane(0.5 * edg)
drawgl(pln)

pln.do_norm()
drs = map(lambda p: (pln.r - p) * pln.n, vo3.has(ds1))
drs = filter(lambda d: abs(d) > 0.0001, drs)
dr = min(drs)
print dr

## ----------- drawing
f = open('/home/ont/make_it/kem/cbox/tmp/ock.txt', 'a')
for p in vo3.has(ds1):
    drawgl(p, color=(0, 1, 0))
    f.write('A %s %s %s\n' % tuple(p))

for p in vo3.has(ds2):
    drawgl(p, r=0.04, color=(1, 0, 0))
Exemplo n.º 31
0
## -------- after selecting
vc = Vec(0.0, 0.0, 0.0)
v1 = Vec(-3.99991151312e-12, 2.44948974278, 0.0)
v2 = Vec(-2.12132034356, 1.22474487139, 0.0)
v3 = Vec(2.12132034355, 1.22474487139, 0.0)

va = v1 + v2
vb = v1 + v3
#vc = v2.vcross( v1 )
vc = Vec(0, 0, 10.3923048454)

#drawgl( v1, style='line' )
#drawgl( v2, style='line' )
#drawgl( v3, style='line' )

drawgl(va, style='line')
drawgl(vb, style='line')
drawgl(vc, style='line')
#drawgl( -1 * vc, style='line' )

vo_h = Voron(va, vb, vc)
vo_h_m = Voron(va, vb, vc, pos=vc)
drawgl(vo_h)
drawgl(vo_h_m)

## -------- cut dots
ds1_h = vo_h.has(ds1) + vo_h_m.has(ds1)
ds2_h = vo_h.has(ds2) + vo_h_m.has(ds2)

## -------- calculating deltas for planes
pos = 0  ## global position in deltas array
Exemplo n.º 32
0
def cubic(*args):

    ## old cube
    vc = Vec(-0.5, -0.707106781187, 0.244948974278)
    v1 = Vec(-0.7, 0.282842712476, 0.489897948556)
    v2 = Vec(-0.3, -0.424264068713, -0.734846922836)
    v3 = Vec(0.5, -0.565685424949, 0.489897948556)
    v1, v2, v3 = v1 - vc, v2 - vc, v3 - vc

    ## new cube
    vc = Vec(0.8, -0.141421356235, 1.22474487139)
    v1 = Vec(-0.2, -0.282842712473, 0.979795897112)
    v2 = Vec(1.0, 0.141421356238, 0.244948974278)
    v3 = Vec(1.0, -1.1313708499, 0.979795897112)
    v1, v2, v3 = v1 - vc, v2 - vc, v3 - vc

    drawgl.clear()

    ## -- draw cube
    vc = Voron(v1, v2, v3, pos=0.5 * (v1 + v2 + v3))

    for v in vc.has(ds1):
        drawgl(v, color=(0, 1, 0))

    for v in vc.has(ds2):
        drawgl(v, r=0.04, color=(1, 0, 0))

    #drawgl( vc )
    drawgl(vo1)
    drawgl(vo2)

    basisA = vc.has(ds1)
    basisA = vc.rep.dec2frac(basisA)
    basisA = map(lambda v: v.z2o(), basisA)
    basisB = [Vec(0.0, 0.0, 0.0), Vec(0.5, 0.5, 0.5)]

    basisA = set(basisA)
    basisB = set(basisB)

    print 'len( basisA ) = ', len(basisA)
    print 'len( basisB ) = ', len(basisB)

    basisA = basisA - basisB

    print 'len( basisA ) = ', len(basisA)
    print 'len( basisB ) = ', len(basisB)

    ## -- output basis to file
    f = open('/tmp/basis_ock_ock.txt', 'w')
    r = vc.rep
    print r.v3 * r.v1.vcross(r.v2)

    f.write("rprim   %s %s %s\n      %s %s %s\n      %s %s %s\n" %
            (tuple(r[0]) + tuple(r[1]) + tuple(r[2])))
    f.write("vc.rep\t%s\n\t\t%s\n\t\t%s\n" % (vc.rep[0], vc.rep[1], vc.rep[2]))

    for v in (vc.rep[0], vc.rep[1], vc.rep[2]):
        drawgl(v, style='line')

    f.write('-----------\n')
    for v in basisA:
        f.write("%s %s %s\n" % tuple(v))

    f.write('-----------\n')
    for v in basisB:
        f.write("%s %s %s\n" % tuple(v))

    f.close()

    ## -- test space groups
    for i in xrange(1, 231):
        for j in SpGrp.subs(i):
            s = SpGrp(i, j)

            f = True
            for p in basisA:
                for v in s * p:
                    if v not in basisA:
                        f = False
                        break
                if not f:
                    break

            if f:
                for p in basisB:
                    for v in s * p:
                        if v not in basisB:
                            f = False
                if f:
                    print '---', s, 'YES'

            #if f:
            #    print '---', s, 'YES'

    return

    ## -- output other basis
    v1, v2, v3 = v1, v2, 0.5 * (v1 + v2 + v3)
    vc = Voron(v1, v2, v3)
    drawgl(vc)

    f = open('/tmp/basis_ock_ock2.txt', 'w')
    r = vc.rep
    print r.v3 * r.v1.vcross(r.v2)

    for v in r:
        drawgl(v, style="line", color=(1, 0, 0))

    basisA = vc.has(ds1)
    basisA = vc.rep.dec2frac(basisA)
    basisA = map(lambda v: v.z2o(), basisA)
    basisB = [Vec(0.0, 0.0, 0.0)]

    basisA = set(basisA)
    basisB = set(basisB)

    print 'len( basisA ) = ', len(basisA)
    print 'len( basisB ) = ', len(basisB)

    basisA = basisA - basisB

    print 'len( basisA ) = ', len(basisA)
    print 'len( basisB ) = ', len(basisB)

    f.write("rprim %s %s %s\n      %s %s %s\n      %s %s %s\n" %
            (tuple(r[0]) + tuple(r[1]) + tuple(r[2])))

    f.write('-----------\n')
    for v in basisA:
        f.write("%s %s %s\n" % tuple(v))
        drawgl(r.frac2dec(v), r=0.05, color=(0, 0, 1))

    f.write('-----------\n')
    for v in basisB:
        f.write("%s %s %s\n" % tuple(v))
        drawgl(r.frac2dec(v), r=0.05, color=(0, 1, 1))

    f.close()
Exemplo n.º 33
0
r3 = Reper(v1, v2, v3)

v1 = (r1.v1 + r1.v2)
v2 = (r1.v1 + r1.v3)
v3 = v1.norm().vcross(v2.norm()) * v1.vlen()
r4 = Reper(v1, v2, v3)

r1 = r1.minimize()
r2 = r2.minimize()

vo1 = Voron(r1.v1, r1.v2, r1.v3)
vo2 = Voron(r2.v1, r2.v2, r2.v3)
vo3 = Voron(r3.v1, r3.v2, r3.v3)
vo4 = Voron(r4.v1, r4.v2, r4.v3)

drawgl(vo1)
#vo2.draw()
drawgl(vo3)
drawgl(vo4)

#pnts = set()
#for a,b,c in ( (i,j,k) for i in xrange( -3,4 )\
#                       for j in xrange( -3,4 )\
#                       for k in xrange( -3,4 ) ):
#    pnts.add( a*r1.v1 + b*r1.v2 + c*r1.v3 )
#
#for p in v2.cut( pnts ):
#    p.draw( r=0.02 )

ps1 = set()
for a,b,c in ( (i,j,k) for i in xrange( -3,4 )\
Exemplo n.º 34
0
from math  import *

from draw_gl import drawgl

import ucell_min
import vec_gl

u = UCell( 1,1,1, pi/2, pi/2, pi/2 )
u.add( 'K', [ Vec( 0.0, 0.0, 0.0 ),
              Vec( 0.5, 0.5, 0.0 ),
              Vec( 0.5, 0.0, 0.5 ),
              Vec( 0.0, 0.5, 0.5 ),
              Vec( 0.5, 0.5, 1.0 ),
              Vec( 0.5, 1.0, 0.5 ),
              Vec( 1.0, 0.5, 0.5 ),
              Vec( 1.0, 0.0, 0.0 ),
              Vec( 0.0, 1.0, 0.0 ),
              Vec( 0.0, 0.0, 1.0 ),
              Vec( 1.0, 0.0, 1.0 ),
              Vec( 1.0, 1.0, 0.0 ),
              Vec( 0.0, 1.0, 1.0 ),
              Vec( 1.0, 1.0, 1.0 ),
              ] )

for v in u.pnts['K']:
    drawgl( v )

u.to_min()

drawgl.start()
Exemplo n.º 35
0
## -------- after selecting
vc = Vec( 0.0, 0.0, 0.0 )
v1 = Vec( -3.99991151312e-12, 2.44948974278, 0.0 )
v2 = Vec( -2.12132034356, 1.22474487139, 0.0 )
v3 = Vec( 2.12132034355, 1.22474487139, 0.0 )

va = v1 + v2
vb = v1 + v3
#vc = v2.vcross( v1 )
vc = Vec( 0, 0, 10.3923048454 )

#drawgl( v1, style='line' )
#drawgl( v2, style='line' )
#drawgl( v3, style='line' )

drawgl( va, style='line' )
drawgl( vb, style='line' )
drawgl( vc, style='line' )
#drawgl( -1 * vc, style='line' )

vo_h   = Voron( va, vb, vc )
vo_h_m = Voron( va, vb, vc, pos = vc )
drawgl( vo_h   )
drawgl( vo_h_m )


## -------- cut dots
ds1_h = vo_h.has( ds1 ) + vo_h_m.has( ds1 )
ds2_h = vo_h.has( ds2 ) + vo_h_m.has( ds2 )

## -------- calculating deltas for planes
Exemplo n.º 36
0
import ucell_min

## filtering
import geom_inout
import voron_inout

r1 = Reper(Vec(0.3, 0.0, 0.0), Vec(0.0, 0.3, 0.0), Vec(0.0, 0.0, 0.3))

r2 = Reper(Vec(-0.6, -0.6, 0.3), Vec(-0.6, 0.3, -0.6), Vec(0.3, -0.6, -0.6))

vo1 = Voron(*r1)
vo2 = Voron(*r2)
vo21 = Voron(r2[0], r2[1], r2[2], pos=Vec(-0.45, -0.45, -0.45))
vo22 = Voron(r2[0], r2[1], r2[2], pos=Vec(0.45, 0.45, 0.45))

drawgl(vo1)
drawgl(vo2)

n = (0.5 * r2[0] + 0.5 * r2[1] + 0.5 * r2[2]).norm()  ## normal to plane

## creating set of dots
ds1 = r1.to_dots(5, 5, 5)
ds2 = r2.to_dots(3, 3, 3)

plns = set()
for d in vo2.cut(ds1):
    plns.add(n.to_plane(d))
plns = list(plns)

np = min(plns[1:], key=lambda p:
         (plns[0].r - p.r).vlen())  ## find nearest plane (np)
Exemplo n.º 37
0
v1 = (r1.v1 + r1.v2)
v2 = (r1.v1 + r1.v3)
v3 = v1.norm().vcross( v2.norm() ) * v1.vlen()
r4 = Reper( v1,v2,v3 )


r1 = r1.minimize()
r2 = r2.minimize()

vo1 = Voron( r1.v1, r1.v2, r1.v3 )
vo2 = Voron( r2.v1, r2.v2, r2.v3 )
vo3 = Voron( r3.v1, r3.v2, r3.v3 )
vo4 = Voron( r4.v1, r4.v2, r4.v3 )


drawgl( vo1 )
#vo2.draw()
drawgl( vo3 )
drawgl( vo4 )

#pnts = set()
#for a,b,c in ( (i,j,k) for i in xrange( -3,4 )\
#                       for j in xrange( -3,4 )\
#                       for k in xrange( -3,4 ) ):
#    pnts.add( a*r1.v1 + b*r1.v2 + c*r1.v3 )
#
#for p in v2.cut( pnts ):
#    p.draw( r=0.02 )

ps1 = set()
for a,b,c in ( (i,j,k) for i in xrange( -3,4 )\
Exemplo n.º 38
0
import ucell_min
import vec_gl

u = UCell(1, 1, 1, pi / 2, pi / 2, pi / 2)
u.add(
    "K",
    [
        Vec(0.0, 0.0, 0.0),
        Vec(0.5, 0.5, 0.0),
        Vec(0.5, 0.0, 0.5),
        Vec(0.0, 0.5, 0.5),
        Vec(0.5, 0.5, 1.0),
        Vec(0.5, 1.0, 0.5),
        Vec(1.0, 0.5, 0.5),
        Vec(1.0, 0.0, 0.0),
        Vec(0.0, 1.0, 0.0),
        Vec(0.0, 0.0, 1.0),
        Vec(1.0, 0.0, 1.0),
        Vec(1.0, 1.0, 0.0),
        Vec(0.0, 1.0, 1.0),
        Vec(1.0, 1.0, 1.0),
    ],
)

for v in u.pnts["K"]:
    drawgl(v)

u.to_min()

drawgl.start()
Exemplo n.º 39
0
          (c-b)/(2*sub_a), (c+a)/(2*sub_a), (a-b)/(2*sub_a),
          (b-c)/(2*sub_a), (a-c)/(2*sub_a), (b+a)/(2*sub_a) )

m = m.inv()                                         ## invert matrix
print 'matrix of vectors (mv):', mv
print 'translational matrix (m):', m.inv()
print 'invert translational matrix (m.inv()):', m
print 'm.inv() * mv =', m * mv
sv1 =  Vec( *( m * mv )[ 0 ] )
sv2 =  Vec( *( m * mv )[ 1 ] )
sv3 =  Vec( *( m * mv )[ 2 ] )
print sv1
print sv2
print sv3
sr = Reper( sv1, sv2, sv3 )
print 'sort of sublattice -', sr.to_zell().to_sort()

## build & draw Voronoi polyhedra
print '-----------------'
print 'parameters a,b,c=', a,b,c
print 'parameter as=', sub_a
print 'translateional matrix:', m.inv()
print 'invert translateional matrix:', m
print 'lattice reper', r
print 'sublattice reper', sr
vo  = Voron( *r )
vos = Voron( *sr )
drawgl( vo )
drawgl( vos )
drawgl.start()
Exemplo n.º 40
0
def cubic( *args ):

    ## old cube
    vc = Vec( -0.5, -0.707106781187, 0.244948974278 )
    v1 = Vec( -0.7, 0.282842712476, 0.489897948556 )
    v2 = Vec( -0.3, -0.424264068713, -0.734846922836 )
    v3 = Vec( 0.5, -0.565685424949, 0.489897948556 )
    v1,v2,v3 = v1 - vc, v2 - vc, v3 - vc


    ## new cube
    vc = Vec( 0.8, -0.141421356235, 1.22474487139 )
    v1 = Vec( -0.2, -0.282842712473, 0.979795897112 )
    v2 = Vec( 1.0, 0.141421356238, 0.244948974278 )
    v3 = Vec( 1.0, -1.1313708499, 0.979795897112 )
    v1,v2,v3 = v1 - vc, v2 - vc, v3 - vc

    drawgl.clear()


    ## -- draw cube
    vc = Voron( v1, v2, v3, pos = 0.5 * ( v1+v2+v3 ) )

    for v in vc.has( ds1 ):
        drawgl( v, color=(0,1,0) )

    for v in vc.has( ds2 ):
        drawgl( v, r=0.04, color=(1,0,0) )

    #drawgl( vc )
    drawgl( vo1 )
    drawgl( vo2 )


    basisA = vc.has( ds1 )
    basisA = vc.rep.dec2frac( basisA )
    basisA = map( lambda v: v.z2o(), basisA )
    basisB = [ Vec( 0.0, 0.0, 0.0 ),
               Vec( 0.5, 0.5, 0.5 ) ]

    basisA = set( basisA )
    basisB = set( basisB )

    print 'len( basisA ) = ', len( basisA )
    print 'len( basisB ) = ', len( basisB )

    basisA = basisA - basisB

    print 'len( basisA ) = ', len( basisA )
    print 'len( basisB ) = ', len( basisB )


    ## -- output basis to file
    f = open( '/tmp/basis_ock_ock.txt', 'w' )
    r = vc.rep
    print r.v3 * r.v1.vcross( r.v2 )

    f.write( "rprim   %s %s %s\n      %s %s %s\n      %s %s %s\n" % ( tuple( r[0] ) + tuple( r[1] ) + tuple( r[2] ) )  )
    f.write( "vc.rep\t%s\n\t\t%s\n\t\t%s\n" % ( vc.rep[ 0 ], vc.rep[ 1 ], vc.rep[ 2 ] ) )

    for v in ( vc.rep[ 0 ], vc.rep[ 1 ], vc.rep[ 2 ] ):
        drawgl( v, style = 'line' )

    f.write( '-----------\n' )
    for v in basisA:
        f.write( "%s %s %s\n" % tuple( v ) )

    f.write( '-----------\n' )
    for v in basisB:
        f.write( "%s %s %s\n" % tuple( v ) )

    f.close()


    ## -- test space groups
    for i in xrange( 1, 231 ):
        for j in SpGrp.subs( i ):
            s = SpGrp( i, j )

            f = True
            for p in basisA:
                for v in s * p:
                    if v not in basisA:
                        f = False
                        break
                if not f:
                    break

            if f:
                for p in basisB:
                    for v in s * p:
                        if v not in basisB:
                            f = False
                if f:
                    print '---', s, 'YES'

            #if f:
            #    print '---', s, 'YES'


    return 

    ## -- output other basis
    v1, v2, v3 = v1, v2, 0.5 * (v1 + v2 + v3)
    vc = Voron( v1, v2, v3 )
    drawgl( vc )

    f = open( '/tmp/basis_ock_ock2.txt', 'w' )
    r = vc.rep
    print r.v3 * r.v1.vcross( r.v2 )

    for v in r:
        drawgl( v, style="line", color=( 1,0,0 ) )

    basisA = vc.has( ds1 )
    basisA = vc.rep.dec2frac( basisA )
    basisA = map( lambda v: v.z2o(), basisA )
    basisB = [ Vec( 0.0, 0.0, 0.0 ) ]

    basisA = set( basisA )
    basisB = set( basisB )

    print 'len( basisA ) = ', len( basisA )
    print 'len( basisB ) = ', len( basisB )

    basisA = basisA - basisB

    print 'len( basisA ) = ', len( basisA )
    print 'len( basisB ) = ', len( basisB )


    f.write( "rprim %s %s %s\n      %s %s %s\n      %s %s %s\n" % ( tuple( r[0] ) + tuple( r[1] ) + tuple( r[2] ) )  )

    f.write( '-----------\n' )
    for v in basisA:
        f.write( "%s %s %s\n" % tuple( v ) )
        drawgl( r.frac2dec( v ), r=0.05, color = (0,0,1) )

    f.write( '-----------\n' )
    for v in basisB:
        f.write( "%s %s %s\n" % tuple( v ) )
        drawgl( r.frac2dec( v ), r=0.05, color = (0,1,1) )

    f.close()
Exemplo n.º 41
0
def fill_hex(*args):
    print args
    drawgl.clear()

    drawgl(vo1)
    drawgl(vo21)
    drawgl(vo22)
    drawgl(vhex)

    for p in vhex.has(ds1):
        drawgl(p, r=0.02, color=(0, 1, 0))

    for p in vhex.has(ds2):
        drawgl(p, r=0.04, color=(1, 0, 0))
Exemplo n.º 42
0
print sv2
print sv3
sr = Reper(sv1, sv2, sv3)
print 'sort of sublattice -', sr.to_zell().to_sort()

## build & draw Voronoi polyhedra
print '-----------------'
print 'parameters a,b,c=', a, b, c
print 'parameter as=', sub_a
print 'translateional matrix:', m.inv()
print 'invert translateional matrix:', m
print 'lattice reper', r
print 'sublattice reper', sr
vo = Voron(*r)
vos = Voron(*sr)
drawgl(vo)
drawgl(vos)
drawipe(vo)
drawipe(vos)

drawgl(sr[0], style='line')
drawgl(sr[1], style='line')
drawgl(sr[2], style='line')


## button for output camera angles and distance
def pinfo(some):
    print drawgl.gl.alpha, drawgl.gl.theta, drawgl.gl.dist


drawgl.button('camera info', pinfo)
Exemplo n.º 43
0
    #ths = ( th, -th, th + pi / 2, th - pi / 2 )
    #for ai, al in enumerate( als ):
    #    for ti, th in enumerate( ths ):
    #        drawipe.setup( al, th, drawgl.gl.dist )
    #        drawipe.clear()
    #        drawipe.group()
    #        drawipe( v1, style = 'line' )
    #        drawipe( v2, style = 'line' )
    #        drawipe( v3, style = 'line' )
    #        drawipe.save( '/tmp/out_%s_%s.ipe' % ( ai, ti ) )
            
    #for i in xrange( 1,9 ):
    #    getattr( drawipe, 'setup_drawgl' + str( i ) )( drawgl )
    #    drawipe.clear()
    #    drawipe.group()
    #    drawipe( vo )
    #    drawipe.save( '/tmp/out%s.ipe' % i )

    drawipe.setup_drawgl( drawgl )
    drawipe.clear()
    drawipe.group()
    drawipe( vo )
    drawipe.save( '/tmp/out.ipe' )

#drawgl( v1, style = 'line' )
#drawgl( v2, style = 'line' )
#drawgl( v3, style = 'line' )
drawgl( vo )
drawgl.button( "to_ipe", to_ipe )
drawgl.start()
Exemplo n.º 44
0
def draw(to_ipe=False):
    from draw_gl import drawgl
    import vec_gl
    import ucell_gl
    drawgl(u)
    drawgl.start()
Exemplo n.º 45
0
r1 = Reper( Vec( 0.3, 0.0, 0.0 ),
            Vec( 0.0, 0.3, 0.0 ),
            Vec( 0.0, 0.0, 0.3 ) )

r2 = Reper( Vec( -0.6, -0.6,  0.3 ),
            Vec( -0.6,  0.3, -0.6 ),
            Vec(  0.3, -0.6, -0.6 ) )


vo1   = Voron( *r1 )
vo2   = Voron( *r2 )
vo21  = Voron( r2[0], r2[1], r2[2], pos = Vec( -0.45, -0.45, -0.45 ) )
vo22  = Voron( r2[0], r2[1], r2[2], pos = Vec(  0.45,  0.45,  0.45 ) )

drawgl( vo1 )
drawgl( vo2 )

n = ( 0.5*r2[0] + 0.5*r2[1] + 0.5*r2[2] ).norm()  ## normal to plane

## creating set of dots
ds1 = r1.to_dots( 5,5,5 )
ds2 = r2.to_dots( 3,3,3 )

plns = set()
for d in vo2.cut( ds1 ):
    plns.add( n.to_plane( d ) )
plns = list( plns )


Exemplo n.º 46
0
import sys

sys.path.extend(['../lib', '../liba', '../libc'])

from draw_gl import drawgl

from vec import *
from voron import *

import vec_gl
import voron_gl

vo = Voron(Vec(1.0, 0.0, 0.0), Vec(0.0, 1.0, 0.0), Vec(0.0, 0.0, 1.0))

drawgl(vo)
drawgl.start()
Exemplo n.º 47
0
def fill_hex( *args ):
    print args
    drawgl.clear()

    drawgl( vo1  )
    drawgl( vo21 )
    drawgl( vo22 )
    drawgl( vhex )

    for p in vhex.has( ds1 ):
        drawgl( p, r=0.02, color = (0,1,0) )

    for p in vhex.has( ds2 ):
        drawgl( p, r=0.04, color = (1,0,0) )
Exemplo n.º 48
0
## trans matrix
n = Mat(-3, -3, 0, 0, 3, 0, 2, 1, 3)

r1 = Reper(Vec(-1, -1, 0), Vec(1, 0, 1), Vec(0, 1, 1))

r2 = n * r1

r2 = Reper(r2[0] + r2[2], r2[2] - r2[1], r2[2])

vo1 = Voron(*r1)
vo2 = Voron(*r2)

ds1 = r1.to_dots(5, 5, 5)
ds2 = r2.to_dots(2, 2, 2)

drawgl(vo1)
drawgl(vo2)

for v in r2:
    drawgl(v, style="line")

for d in vo2.has(ds1):
    drawgl(d, r=0.05, color=(0, 1, 0))

for d in vo2.has(ds2):
    drawgl(d, r=0.06, color=(1, 0, 0))

drawgl.start()

print "%s %s %s" % tuple(r2[0])
print "%s %s %s" % tuple(r2[1])
Exemplo n.º 49
0
Arquivo: ucdraw.py Projeto: ont/cbox
#!/usr/bin/env python2
import sys
sys.path.extend( [ '../lib', '../liba', '../libc' ] )

from draw_gl import drawgl
from strutils import *

from voron import *

import voron_gl
import ucell_gl

ls = list( stdlines() )

opts = sys.argv[ 1: ]
print opts

for i,u in enumerate( lines2cells( ls ) ):
    v = Voron( *u.rep )
    if i < len( opts ) :
        if opts[ i ] == '1':
            drawgl( u )
    else:
        drawgl( u )

    drawgl( v )

drawgl.start()