Alan G Isaac venit, vidit, dixit 13.10.2009 21:09:
> What is the PyX equivalent to the following?
> 
> 288 360 moveto
> 4 {144 0 rlineto 72 rotate} repeat closepath stroke
> 

How about

unit.set(defaultunit="pt")
c = canvas.canvas([style.linewidth(1)])

x,y = 144,0
p = path.path(path.moveto(0,0))

for i in range(4):
  p.append(path.rlineto(x,y))
  x,y = trafo.rotate(72).apply(x,y)

p.append(path.closepath())
c.stroke(p, [trafo.translate(288,360)])

This results in

288 360 moveto
432 360 lineto
476.498 496.952 lineto
360 581.593 lineto
243.502 496.952 lineto
closepath
stroke

for the ps (besides gsave and such). Using PyX-trafos on points is the
closest you get to PS's rotated coordinate system, and there's no way to
create a "repeat" or "rlineto". Of course you could do things
differently in PyX, such as rotating a path.line around and joining
those rather than appending path elements:

unit.set(defaultunit="pt")

c = canvas.canvas([style.linewidth(1)])

pl = path.line(0,0,144,0)
p = path.path(path.moveto(0,0))
x0,y0 = 0,0

for i in range(4):
  p = p << pl
  x,y = p.atend()
  pl = pl.transformed(trafo.rotate(72, x=x, y=y)*trafo.translate(x-x0,
y-y0))
  x0, y0 = x,y

p.append(path.closepath())

c.stroke(p, [trafo.translate(288,360)])

Cheers,

Michael


------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
PyX-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pyx-user

Reply via email to