
import sys
import math
sys.path.append("../../../scidocxml/draw/pydraw")
import pyDraw as draw
d = draw.Draw({'name':'figureA','width':600,'height':600,'medium-font-size':'16'})
s=draw.Scale({'sx':600,'sy':600})
t=draw.Translate({'tx':0.5,'ty':0.5})
nr=7
dr=0.5/(nr-1)
for j in range(1,nr):
    t.add(draw.Circle({'cx':0,'cy':0,'r':j*dr,'stroke':'grey','fill':'none'}))
na=20
da=2*math.pi/(na-1)
for i in range(na):
    a = i*da
    x = 0.5*math.cos(a)
    y = 0.5*math.sin(a)
    t.add(draw.Line({'x1':0,'y1':0,'x2':x,'y2':y,'stroke':'grey'}))
def point(i,j,anchor,text):
    r = j*dr
    a = i*da
    x = r*math.cos(a)
    y = r*math.sin(a)
    t.add(draw.Circle({'cx':x,'cy':y,'r':0.005,'stroke':'red','fill':'red'}))
    t.add(draw.Text({'x':x,'y':y,'a':anchor,'fill':'black','stroke':'black','font-size':'medium'},text))
def sommet(i,j,anchor,text,stroke):
    r = j*dr
    a = i*da
    x = r*math.cos(a)
    y = r*math.sin(a)
    t.add(draw.Circle({'cx':x,'cy':y,'r':0.002,'stroke':stroke,'fill':stroke}))
    t.add(draw.Text({'x':x,'y':y,'a':anchor,'fill':stroke,'stroke':stroke,'font-size':'x-small'},text))
dash = "2,2"
def arc(i1,i2,j,stroke,dash):
    a1 = i1*da*180/math.pi
    a2 = i2*da*180/math.pi
    r = j*dr
    t.add(draw.Arc({'cx':0,'cy':0,'rx':r,'ry':r,'a1':a1,'a2':a2,'n':50,'stroke':stroke,'fill':'none','stroke-dasharray':dash}))
def radius(i,j1,j2,stroke,dash):
    a = i*da
    r1 = j1*dr
    r2 = j2*dr
    t.add(draw.Line({'x1':r1*math.cos(a),'y1':r1*math.sin(a),'x2':r2*math.cos(a),'y2':r2*math.sin(a),'stroke':stroke,'stroke-dasharray':dash}))
point(3,3,'l',"i,j")
point(3,4,'l',"i,j+1")
point(3,2,'l',"i,j-1")
point(2,3,'l',"i-1,j")
point(4,3,'r',"i+1,j")
arc(2.5,3.5,3.5,'blue',dash)
arc(2.5,3.5,2.5,'blue',dash)
radius(2.5,2.5,3.5,'blue',dash)
radius(3.5,2.5,3.5,'blue',dash)
sommet(2.5,2.5,"l","a",'blue')
sommet(3.5,2.5,"r","b",'blue')
sommet(3.5,3.5,"r","c",'blue')
sommet(2.5,3.5,"l","d",'blue')
t.add(draw.Circle({'cx':0,'cy':0,'r':dr/2,'stroke':'blue','fill':'none','stroke-dasharray':dash}))
point(7,6,'b','i,j')
point(7,5,'l','i,j-1')
point(6,6,'b','i-1,j')
point(8,6,'b','i+1,j')
arc(6.5,7.5,6.1,'blue',dash)
arc(6.5,7.5,5.5,'blue',dash)
radius(6.5,5.5,6.1,'blue',dash)
radius(7.5,5.5,6.1,'blue',dash)
sommet(6.5,5.5,'l','e','blue')
sommet(7.5,5.5,'r','f','blue')
sommet(7.5,6.1,'r','g','blue')
sommet(6.5,6.1,'b','h','blue')
j1=2
j2=4
i1=8
i2=11
sommet(i1,j1,'l','P','black')
sommet(i1,j2,'r','Q','black')
sommet(i2,j2,'r','R','black')
sommet(i2,j1,'l','S','black')
radius(i1,j1,j2,'black','')
radius(i2,j1,j2,'black','')
arc(i1,i2,j1,'black','')
arc(i1,i2,j2,'black','')
sommet(i2+0.5,j2-0.5,'t','u','blue')
sommet(i2+0.5,j2+0.5,'t','v','blue')
sommet(i2-0.5,j2+0.5,'r','w','blue')
sommet(i2-0.5,j2-0.1,'b','x','blue')
sommet(i2-0.1,j2-0.1,'b','y','blue')
sommet(i2-0.1,j2-0.5,'b','z','blue')
radius(i2+0.5,j2-0.5,j2+0.5,'blue',dash)
arc(i2+0.5,i2-0.5,j2+0.5,'blue',dash)
radius(i2-0.5,j2+0.5,j2-0.1,'blue',dash)
arc(i2-0.5,i2-0.1,j2-0.1,'blue',dash)
radius(i2-0.1,j2-0.1,j2-0.5,'blue',dash)
arc(i2-0.1,i2+0.5,j2-0.5,'blue',dash)
j3 = j1+1
point(i1,j3,'b','i,j')
point(i1,j3+1,'b','i,j+1')
point(i1,j3-1,'b','i,j-1')
point(i1-1,j3,'b','i-1,j')
sommet(i1-0.5,j3-0.5,'l','l','blue')
sommet(i1-0.5,j3+0.5,'r','m','blue')
sommet(i1+0.1,j3+0.5,'r','n','blue')
sommet(i1+0.1,j3-0.5,'t','o','blue')
radius(i1-0.5,j3-0.5,j3+0.5,'blue',dash)
radius(i1+0.1,j3-0.5,j3+0.5,'blue',dash)
arc(i1-0.5,i1+0.1,j3-0.5,'blue',dash)
arc(i1-0.5,i1+0.1,j3+0.5,'blue',dash)
i1 = 14
j1=2
sommet(i1,j1,'b','T','black')
sommet(i1+1,j1,'l','U','black')
sommet(i1+1,j1+1,'bl','V','black')
sommet(i1+2,j1+1,'l','W','black')
sommet(i1+2,j1+2,'l','X','black')
sommet(i1,j1+2,'r','Y','black')
arc(i1,i1+1,j1,'black','')
radius(i1+1,j1,j1+1,'black','')
arc(i1+1,i1+2,j1+1,'black','')
radius(i1+2,j1+1,j1+2,'black','')
arc(i1+2,i1,j1+2,'black','')
radius(i1,j1,j1+2,'black','')
i1 = i1+1
j1 = j1+1
sommet(i1-0.1,j1+0.1,'t','a','blue')
sommet(i1+0.5,j1+0.1,'t','b','blue')
sommet(i1+0.5,j1-0.5,'l','c','blue')
sommet(i1-0.1,j1-0.5,'r','d','blue')
arc(i1-0.1,i1+0.5,j1+0.1,'blue',dash)
radius(i1+0.5,j1+0.1,j1-0.5,'blue',dash)
arc(i1+0.5,i1-0.1,j1-0.5,'blue',dash)
radius(i1-0.1,j1-0.5,j1+0.1,'blue',dash)
s.add(t)
d.add(s)
            
