# 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)