Version 0.2.4

There are two way to use pykig.py:
- as a program:
  $ pykig.py <nameprog>.kpy
- as a Python library within a Python program:
  from pykig import *

A ".kpy" file is a "python" script.

A new object is created by callig a python "constructor";
the result can be stored in a python variable for later
use.  E.g.:

   a = Point(0.5, 1.5, name="A")

to create a point with coordinates (0.5, 1.5), give it a
the name "A" (at kig level) and recall it in the python
variable a. See the examples for practical use.

All constructors accept some optional parameters:

shown = HIDDEN | VISIBLE                  default value: VISIBLE
name = string                             a name to refer to the object within
                                          kig
internal = bool                           this object is internal and cannot be
                                          made visible
width = integer                           the line width
pointstyle = "Round"|"RoundEmpty"|"Rectangular"|"RectangularEmpty"|"Cross"
linestyle = "SolidLine"|"DashLine"|"DashDotLine"|"DashDotDotLine"|"DotLine"
color = "#RRGGBB"                         where RR, GG, BB are three numbers
                                          which represent the red, green, blue
                                          components 

The kigdocument is a global object to allow two methods for modify Kig look and
default behaviour:

kigdocument.noaxes()
kigdocument.nogrid()
kigdocument.hideobjects()
kigdocument.showobjects()
kigdocument.setwidth()
kigdocument.setpointstyle()
kigdocument.setname()
kigdocument.setlinestyle()
kigdocument.setshown()
kigdocument.setcolor()
kigdocument.setinternal()


Generic methods for objects:

obj.hide()
obj.show()                                hide/show given object
obj.setwidth(width)                       set obj width
obj.setpointstyle(self, pointstyle)       set obj point style
obj.setlinestyle(self, linestyle)         set obj line style
obj.setcolor(self, color)                 set obj color
obj.setname()                             set obj name
obj.type()                                return obj type

Some objects have other methods:

obj.coordinate()                          for points
obj.xcoord()
obj.ycoord()
obj.midpoint()                            for segments
obj.endpointA()
obj.endpointB()
obj.length()
obj.equation()
obj.slope()
obj.numofsides()                          for polygons
obj.perimeter()
obj.surface()
obj.centerofmass()
obj.windingnumber()
obj.center()                              for circles
obj.bisector()                            for angles
obj.support()

====================================================================

Properties:

Type(object)                              type of object
Coordinate(point)                         coordinate of point
XCoord(point)                             
YCoord(point)
MidPointAB(a, b)                           midpoint of two points a and b
MidPointSegment(segment)                   midpoint of a segment
EndPointA(segment)                        
EndPointB(segment)
Length(segment)
Equation(segment)
Slope(segment)
NumOfSides(poly)
Perimeter(poly)
Surface(poly)
CenterOfMass(poly)
WindingNumber(poly)
Center(circle)
Bisector(angle)
Support(object)
====================================================================

Objects:

Point(x, y)                               free (unconstrained) point
ConstrainedPoint(t, curve)                constrained point on 'curve'; t
                                          *must* be in [0,1]; for segments and
                                          arcs the position of the point is 
                                          proportional to the value of t
Line(a, b)                                straight line through a and b
Ray(a, b)                                 halfline starting in a through b
Segment(a, b)                             segment from a to b
Orthogonal(line, point)                   line through 'point' orthogonal to
                                          'line'

Circle(center, point)
CircleByCenterRadius(center, radius)
CircleBy3Points(p1, p2, p3)
ArcBy3Points(p1, p2, p3)
ArcByCenterPointAngle(center, point, angle)

ParabolaByDirectrixFocus(directrix, focus)
ParabolaBy3Points(p1, p2, p3)
EllipseByFocusFocusPoint(p1, p2, p3)
HyperbolaByFocusFocusPoint(p1, p2, p3)
CubicBy9Points(p1, p2, p3, p4, p5, p6, p7, p8, p9)
VerticalCubic(p1, p2, p3, p4)
ConicArc(p1, p2, p3, center)
LineLineIntersection(line1, line2)        produces a point
CircleCircleIntersection(c1, c2, which)   c1 and c2 are two circles, 'which'
                                          is an integer that can only be +1 
                                          or -1 and tells which one of the
                                          two intersections has to be created.
                                          To have both you must call this
                                          function twice.
ConicLineIntersection(conic, line, which) conic can also be a circle; which
                                          has the same meaning as for the
                                          CircleCircleIntersection.

CubicLineIntersection(cubic, line, which) 'which' is an integer that tells which one 
					  of the three intersection has to be created.
ConicLineOtherIntersection(conic, line, p)
					  p is the known intersection Point; 
					  it creates the other one.
CubicLineOtherIntersection(cubic, line, p1, p2) 
					  p1 and p2 are two already known intersection
					  Points; it produces the third one.
Polygon((p1, p2,..., pn))                 A polygon with the given vertices
PolygonBCV(center, vertex, n)             A regular polygon with 'n' sides
PolygonVertex(polygon, i)                 Generate the i-th vertex of the
                                          given polygon
PolygonSide(polygon, i)                   Generate the i-th side of the given
                                          polygon

Vector(p1, p2)
Angle(p1, center, p2)

Text(point, string, boxed)                point is a Point or a tuple of 
                                          two numbers
                                          boxed is a integer in [0, 1] telling
                                          if we want the frame
VarText(point, string, vars, boxed)       point is a Point or a tuple of 
                                          two numbers
                                          vars hold variables parts
Label(obj, displ, string, boxed)          is a Text connected tu a object
VarLabel(obj, displ, string, vars, boxed)

PythonScript(script, argvec)              "script" is a string containing the
                                          python script

Translate(object, vector)                 The result is an object of the same
                                          kind as 'object'
CentralSymmetry(object, center)
AxialSymmetry(object, line)
Rotate(object,center, angle)
Scale(object,center, segment)             The length of the segment is the
                                          scaling ratio
Scale2(object, center, s1, s2)            The ratio of the lengths of s1 and
                                          s2 is the scaling ratio
InvertPoint(point, circle)                Circular invertion of: a point
InvertLine(line, circle)                 ... an other object 
InvertCircle(circle, circle)
InvertArc(arc, circle)
InvertSegment(segment, circle)
CircularInversion(object, circle)

-------------------------------------------------------------------------------


