Kig (software)
KIG is free and open-source interactive geometry software, which is part of the KDE Education Project. It has some facilities for scripting in Python, as well as the creating macros from existing constructions.
Developer(s) | KDE |
---|---|
Initial release | 2 August 2006 |
Stable release | 23.08.3[1] / 9 November 2023 |
Repository |
|
Written in | C++ (Qt) |
Operating system | Unix-like, Mac OS X, Windows |
Type | Interactive geometry software |
License | GPL |
Website | https://apps.kde.org/kig/ |
Import and export edit
Kig can import files made by DrGeo and Cabri Geometry as well as its own file format, which is XML-encoded. Kig can export figures in LaTeX format and as SVG (vector graphics) files.
Objects edit
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, projective application, homography and harmonic homology;
- The hyperbola with given asymptotes;
- The Bézier 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 edit
Inside the figure edit
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 arg1.value()
.
If no 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 edit
Kig comes up with a little program (written in Python) called pykig.py
which can
- load a Python script, e.g.
MyScript.py
- build a Kig figure, described by this script
- open Kig and display the figure.
For example, here is how a Sierpinski triangle can be made (as an IFS) with pykig
:
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()
External links edit
- Official website
- The Kig Handbook
- Thomas G. Pfeiffer: Erstellen geometrischer Skizzen mit kig. Freies Magazin, December 2009 (German)
- Mike Diehl: Teaching Math with the KDE Interactive Geometry Program. Linux Journal, 2009-09-19
- Abdul Halim Abdullah, Mohini Mohamed: The Use Of Interactive Geometry Software (IGS) To Develop Geometric Thinking. Jurnal Teknologi 49(1), December 2008, DOI: 10.11113/jt.v49.212
- ^ Error: Unable to display the reference properly. See the documentation for details.