||This article needs attention from an expert in Software. (June 2010)|
|This article relies on references to primary sources. (January 2010)|
Screenshot of Kig
|Initial release||2 August 2006|
|Written in||C++ (Qt)|
|Operating system||Unix-like, Mac OS X, Windows|
|Type||Interactive geometry software|
Kig is free and open source interactive geometry software, which is part of the KDE edutainment project. It has some facilities for scripting in Python, as well as the creating macros from existing constructions.
Import and export 
Kig can handle any classical object of the dynamic geometry, but also:
- The center of curvature and osculating circle of a curve;
- The dilation, generic affinity, inversion[disambiguation needed], projective application, homography and harmonic homology;
- The hyperbola with given asymptotes;
- The Beziers curves (2nd and 3rd degree);
- The polar line of a point and pole of a line with respect to a conic section;
- The asymptotes of a hyperbola;
- The cubic curve through 9 points;
- The cubic curve with a double point through 6 points;
- The cubic curve with a cusp through 4 points.
Scripting language 
Inside the figure 
Another object is available inside Kig, it is a Python (language) script. It can accept Kig objects as variables, and always return one object.
For example, if there is already a numeric object inside the figure, for example 3, the following Python object can yield its square (9):
def square( arg1 ): return DoubleObject( arg1.value()**2 )
The variables are always called arg1, arg2 etc. in the order they are clicked upon. Here there is only one variable arg1 and its numerical value is obtained with
If now one wants to implement the square of a complex number (represented by a point in the Argand diagram), the object which has to be selected at the creation of the script must necessarily be a point, and the script is
def csquare( arg1 ): x=arg1.coordinate().x y=arg1.coordinate().y z=x*x-y*y y=2*x*y x=z return Point( Coordinate(x,y) )
The abscissa of the point representing the square of the complex number is as can be seen by expanding .
Coordinate(x,y) creates a Python list made of the two coordinates of the new point. And
Point creates the point which coordinates are precisely given by this list.
But a Python object inside a figure can only create one object and for more complex figures one has to build the figure with a script:
Figure created by a script 
Kig comes up with a little program (written in Python) called pikyg.py which can
- load a Python script, say MyScript.py
- build a Kig figure, described by this script
- open Kig and display the figure.
from random import * kigdocument.hideobjects() A=Point(0,2) A.show() B=Point(-2,-1) B.show() C=Point(2,-1) C.show() M=Point(.1,.1) for i in range(1,1000): d=randrange(3) if d==0: s=Segment(A,M) M=s.midpoint() if d==1: s=Segment(B,M) M=s.midpoint() if d==2: s=Segment(C,M) M=s.midpoint() M.show()