KIG is
free and open-source
Free and open-source software (FOSS) is software available under a Software license, license that grants users the right to use, modify, and distribute the software modified or not to everyone free of charge. FOSS is an inclusive umbrella term ...
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.
Import and export
Kig can import files made by
DrGeo and
Cabri Geometry as well as its own file format, which is
XML
Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing data. It defines a set of rules for encoding electronic document, documents in a format that is both human-readable and Machine-r ...
-encoded. Kig can export figures in
LaTeX
Latex is an emulsion (stable dispersion) of polymer microparticles in water. Latices are found in nature, but synthetic latices are common as well.
In nature, latex is found as a wikt:milky, milky fluid, which is present in 10% of all floweri ...
format and as
SVG (vector graphics) files.
Objects
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
Affinity may refer to:
Commerce, finance and law
* Affinity (law), kinship by marriage
* Affinity analysis, a market research and business management technique
* Affinity Credit Union, a Saskatchewan-based credit union
* Affinity Equity Pa ...
,
inversion,
projective application
Projective may refer to
Mathematics
*Projective geometry
*Projective space
*Projective plane
*Projective variety
*Projective linear group
*Projective module
*Projective line
*Projective object
*Projective transformation
*Projective hierarchy
*Pr ...
,
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
A conic section, conic or a quadratic curve is a curve obtained from a cone's surface intersecting a plane. The three types of conic section are the hyperbola, the parabola, and the ellipse; the circle is a special case of the ellipse, tho ...
;
# The
asymptotes of a
hyperbola;
# The
cubic curve
In mathematics, a cubic plane curve is a plane algebraic curve defined by a cubic equation
:
applied to homogeneous coordinates for the projective plane; or the inhomogeneous version for the affine space determined by setting in such an eq ...
through 9 points;
# The cubic curve with a
double point through 6 points;
# The cubic curve with a
cusp
A cusp is the most pointed end of a curve. It often refers to cusp (anatomy), a pointed structure on a tooth.
Cusp or CUSP may also refer to:
Mathematics
* Cusp (singularity), a singular point of a curve
* Cusp catastrophe, a branch of bifu ...
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
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
In mathematics, a complex number is an element of a number system that extends the real numbers with a specific element denoted , called the imaginary unit and satisfying the equation i^= -1; every complex number can be expressed in the for ...
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
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
*
The Kig Handbook* Thomas G. Pfeiffer
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
{{KDE
Free educational software
Free interactive geometry software
KDE Education Project
KDE software
KDE Software Compilation
Software that uses Qt