# Sample Python program using TpXpy import math import os from TpXpy import TpXpic,HTML_color pic = TpXpic() pic.addPolyline(((10,0), (30,-20), (15,-30))) pic.fill('mintcream') pic.lw(1.5) pic.addPolygon(((0,-20), (10,0), (15,-30))) pic.fill('floralwhite') pic.lw(1.5) pic.addLine(0,-20,30,-20) pic.li('dash') pic.addCurve(((0,-10), (5,-15), (25,-10), (15,-5), (10,-5))) pic.closed() pic.lw(0.5) pic.ha(4) pic.hc('silver') pic.addPolygon(((5.56,-8.9),(12.45,-14.7),(18.3,-8.3))) pic.li('dot') pic.addLine(5.56,-8.9,10,0) pic.lw(1.5) pic.addLine(12.45,-14.7,10,0) pic.lw(1.5) pic.addLine(18.3,-8.3,10,0) pic.lw(1.5) pic.addSector(15, -30, 5.5, 0.6, 1.75) pic.lw(0.5) pic.addSector(15, -30, 6.5, 0.6, 1.75) pic.lw(0.5) pic.addSector(15, -30, 6, 1.75, 2.55) pic.lw(0.5) pic.addCircle(0,-20,0.4) pic.li('none') pic.fill('navy') pic.addCircle(10,0,0.4) pic.li('none') pic.fill('navy') pic.addCircle(15,-30,0.4) pic.li('none') pic.fill('navy') pic.addCircle(30,-20,0.4) pic.li('none') pic.fill('navy') pic.addLine(47,0,100,0) for i in range(5): pic.addLine(i*10 + 50,-0.7,i*10 + 50,0.7) pic.addText(i*10 + 50, -1, 3, '%g'%(i*10), '\\texttt{%g}'%(i*10)) pic.jh('r') pic.jv('t') pic.rotdeg(45) pic.addLine(100,33,100,-33) for i in range(7): pic.addLine(100-0.7,i*10-30,100+0.7,i*10-30) pic.addText(100+6,i*10-30-0.5, 3, '%g'%(i*10-30), '\\texttt{%g}'%(i*10-30)) pic.jh('r') pic.jv('c') pp = () for i in range(50): x = i + 50 y = 30 * math.sin(x/5.0) p = (x, y), pp = pp + p pic.addCurve(pp) pic.li('dot') pic.lw(2) for i in range(50): x = i + 50 y = 30 * math.sin(x/5.0) pic.addStar(x, y + math.sin(i**2*4)*5) pic.starShape('penta') pic.starD(0.8) pic.fill('lightgrey') pic.lw(0.4) d = [0] for ll in range(8): n = len(d) for i in range(n): d.append((d[n-i-1]+1)%4) dd0 = [(1,0),(0,1),(-1,0),(0,-1)] cc = ['blue','goldenrod','green','red'] step = 2.5 def PP(p): x = p[0][0]+5 y = p[0][1]+15 r = math.sqrt(x**2+y**2) c = 1 - math.cos(r/5)*0.05 x = x*c y = y*c x,y = x+0.2*y,y-0.2*x return (x/1.5+23, y/1.5+25), for j in range(4): pp = () x,y = 0,0 ddpre = [0, 0] p = (0, 0), pp = pp + PP(p) for i in range(len(d)): dd = dd0[(d[i]+j)%4] p = (x-ddpre[0]*step*0.1, y-ddpre[1]*step*0.1), pp = pp + PP(p) p = (x+dd[0]*step*0.1, y+dd[1]*step*0.1), pp = pp + PP(p) p = (x+dd[0]*step*0.5, y+dd[1]*step*0.5), pp = pp + PP(p) x = x+dd[0]*step y = y+dd[1]*step ddpre = dd p = (x, y), pp = pp + PP(p) + PP(p) + PP(p) pic.addBezier(pp) pic.lc(cc[j]) pic.addRect(28, -6, 57, 57) pic.rotdeg(45) d=2.8 for i in range(12): for j in range(12): pic.addEllipse(i*d+70,j*d+43,d*0.7,d*0.9) pic.rotdeg(45) pic.fill(HTML_color(255*(0.5+0.5*math.sin(i/3.+math.sin(j/3.)*2)),\ 255*(0.5+0.5*math.cos(j/3.-i**2/30.)),0)) pic.li('none') pic.addCurve(((25,75), (0,65), (-13,38))) pic.arr('oc','h43',0.8) pic.lw(0.5) pic.addSymbol(52,70,25,'cloud1') pic.lw(0.5) pic.fill('whitesmoke') pic.rotdeg(188) pic.addText(52,70,5,'Fig 1') pic.jh('c') pic.jv('c') pic.setCaption('A sample TpXpy picture', 'fig:TpXpy') pic.setComment('Comment') pic.setRootAttribute('BitmapRes', 11811) pic.setRootAttribute('LineWidth', 0.25) pic.setRootAttribute('MiterLimit', 1) pic.setRootAttribute('HatchingStep', 1) fname = 'sample_TpXpy.TpX' pic.SaveToFile(fname) os.startfile(fname)