diff -Naur kgeo/kgeo/Makefile.am kgeo-pao1/kgeo/Makefile.am
--- kgeo/kgeo/Makefile.am	Mon May 27 01:10:04 2002
+++ kgeo-pao1/kgeo/Makefile.am	Tue Jun 25 13:44:30 2002
@@ -1,11 +1,11 @@
 ####### kdevelop will overwrite this part!!! (begin)##########
 bin_PROGRAMS = kgeo
-kgeo_SOURCES = colorlabel.cpp preferencesdialog.ui mainwidget.ui edittextdialog.ui diameterdialog.ui coordinatesdialog.ui vector.cpp triangle.cpp tracer.cpp thicker.cpp text.cpp splashscreen.cpp slope.cpp segment.cpp rotation.cpp ray.cpp pointonline.cpp pointofconc.cpp point.cpp perpendicular.cpp parallel.cpp move.cpp mirrorpoint.cpp metricscenter.cpp line.cpp kgeoSearchRoutines.cpp kgeoModeHandling.cpp kgeoMenuToolbarSlots.cpp kgeoFileHandling.cpp kgeoConstructor.cpp geowidget.cpp geotool.cpp geopoint.cpp geoobjects.cpp geomeasure.cpp geoline.cpp fixedcircle.cpp eraser.cpp distance.cpp coordinates.cpp colorizer.cpp circumference.cpp circle.cpp bisection.cpp attacher.cpp area.cpp arc.cpp angle.cpp kgeo.cpp main.cpp 
+kgeo_SOURCES = colorlabel.cpp preferencesdialog.ui mainwidget.ui edittextdialog.ui diameterdialog.ui coordinatesdialog.ui vector.cpp triangle.cpp tracer.cpp thicker.cpp text.cpp splashscreen.cpp slope.cpp segment.cpp rotation.cpp ray.cpp pointonline.cpp pointofconc.cpp point.cpp perpendicular.cpp parallel.cpp radicalline.cpp move.cpp mirrorpoint.cpp metricscenter.cpp line.cpp kgeoSearchRoutines.cpp kgeoModeHandling.cpp kgeoMenuToolbarSlots.cpp kgeoFileHandling.cpp kgeoConstructor.cpp geowidget.cpp geotool.cpp geopoint.cpp geoobjects.cpp geomeasure.cpp geoline.cpp fixedcircle.cpp eraser.cpp distance.cpp coordinates.cpp colorizer.cpp circumference.cpp circle.cpp bisection.cpp attacher.cpp area.cpp arc.cpp angle.cpp kgeo.cpp main.cpp 
 kgeo_LDADD   = -lkdeprint 
 
 SUBDIRS = toolbar pics 
 
-EXTRA_DIST = main.cpp kgeo.cpp kgeo.h kgeoui.rc kgeo.desktop lo32-app-kgeo.png lo16-app-kgeo.png angle.cpp angle.h arc.cpp arc.h area.cpp area.h attacher.cpp attacher.h bisection.cpp bisection.h circle.cpp circle.h circumference.cpp circumference.h colorizer.cpp colorizer.h coordinates.cpp coordinates.h distance.cpp distance.h eraser.cpp eraser.h fixedcircle.cpp fixedcircle.h geoline.cpp geoline.h geomeasure.cpp geomeasure.h geoobjects.cpp geoobjects.h geopoint.cpp geopoint.h geotool.cpp geotool.h geowidget.cpp geowidget.h kgeoConstructor.cpp kgeoFileHandling.cpp kgeoMenuToolbarSlots.cpp kgeoModeHandling.cpp kgeoSearchRoutines.cpp line.cpp line.h metricscenter.cpp metricscenter.h mirrorpoint.cpp mirrorpoint.h move.cpp move.h parallel.cpp parallel.h perpendicular.cpp perpendicular.h point.cpp point.h pointofconc.cpp pointofconc.h pointonline.cpp pointonline.h ray.cpp ray.h resource.h rotation.cpp rotation.h segment.cpp segment.h slope.cpp slope.h splashscreen.cpp splashscreen.h text.cpp text.h thicker.cpp thicker.h tracer.cpp tracer.h triangle.cpp triangle.h vector.cpp vector.h coordinatesdialog.ui diameterdialog.ui edittextdialog.ui mainwidget.ui preferencesdialog.ui colorlabel.cpp colorlabel.h
+EXTRA_DIST = main.cpp kgeo.cpp kgeo.h kgeoui.rc kgeo.desktop lo32-app-kgeo.png lo16-app-kgeo.png angle.cpp angle.h arc.cpp arc.h area.cpp area.h attacher.cpp attacher.h bisection.cpp bisection.h circle.cpp circle.h circumference.cpp circumference.h colorizer.cpp colorizer.h coordinates.cpp coordinates.h distance.cpp distance.h eraser.cpp eraser.h fixedcircle.cpp fixedcircle.h geoline.cpp geoline.h geomeasure.cpp geomeasure.h geoobjects.cpp geoobjects.h geopoint.cpp geopoint.h geotool.cpp geotool.h geowidget.cpp geowidget.h kgeoConstructor.cpp kgeoFileHandling.cpp kgeoMenuToolbarSlots.cpp kgeoModeHandling.cpp kgeoSearchRoutines.cpp line.cpp line.h metricscenter.cpp metricscenter.h mirrorpoint.cpp mirrorpoint.h move.cpp move.h parallel.cpp parallel.h perpendicular.cpp perpendicular.h radicalline.cpp radicalline.h point.cpp point.h pointofconc.cpp pointofconc.h pointonline.cpp pointonline.h ray.cpp ray.h resource.h rotation.cpp rotation.h segment.cpp segment.h slope.cpp slope.h splashscreen.cpp splashscreen.h text.cpp text.h thicker.cpp thicker.h tracer.cpp tracer.h triangle.cpp triangle.h vector.cpp vector.h coordinatesdialog.ui diameterdialog.ui edittextdialog.ui mainwidget.ui preferencesdialog.ui colorlabel.cpp colorlabel.h
 
 KDE_ICON = kgeo
 
diff -Naur kgeo/kgeo/coordinates.cpp kgeo-pao1/kgeo/coordinates.cpp
--- kgeo/kgeo/coordinates.cpp	Tue May 28 01:07:17 2002
+++ kgeo-pao1/kgeo/coordinates.cpp	Tue Jun 25 13:32:22 2002
@@ -232,6 +232,13 @@
    return orient;
 }
 
+double Coordinates::getLengthsq()
+{
+	double lengthsq	=	pow( d_x, 2 ) + pow( d_y, 2 );
+
+	return lengthsq;
+}
+
 double Coordinates::getLength()
 {
 	double length	=	sqrt( pow( d_x, 2 ) + pow( d_y, 2 ) );
diff -Naur kgeo/kgeo/coordinates.h kgeo-pao1/kgeo/coordinates.h
--- kgeo/kgeo/coordinates.h	Tue May 28 01:07:17 2002
+++ kgeo-pao1/kgeo/coordinates.h	Tue Jun 25 13:32:22 2002
@@ -89,6 +89,8 @@
 		double orientation( Coordinates coord1, Coordinates coord2 );
 		/** Get length of vector. */
 		double getLength();
+		/** Get square length of vector. */
+		double getLengthsq();
 		/** Get angle of three points in degrees. */
 		double getAngleDeg( Coordinates coord1, Coordinates coord2 );
 		/** Get angle of three points in rad. */
diff -Naur kgeo/kgeo/geoobjects.cpp kgeo-pao1/kgeo/geoobjects.cpp
--- kgeo/kgeo/geoobjects.cpp	Fri May 10 01:07:12 2002
+++ kgeo-pao1/kgeo/geoobjects.cpp	Tue Jun 25 13:32:22 2002
@@ -484,6 +484,8 @@
 		return true;
 	if ( myID == ID_vector )
 		return true;
+	if ( myID == ID_radicalline )
+		return true;
 
 	return false;
 }
diff -Naur kgeo/kgeo/kgeo.h kgeo-pao1/kgeo/kgeo.h
--- kgeo/kgeo/kgeo.h	Tue May 28 01:07:17 2002
+++ kgeo-pao1/kgeo/kgeo.h	Tue Jun 25 13:32:22 2002
@@ -99,6 +99,7 @@
 #include "circle.h"
 #include "fixedcircle.h"
 #include "angle.h"
+#include "radicalline.h"
 #include "distance.h"
 #include "arc.h"
 #include "area.h"
diff -Naur kgeo/kgeo/kgeoConstructor.cpp kgeo-pao1/kgeo/kgeoConstructor.cpp
--- kgeo/kgeo/kgeoConstructor.cpp	Wed Apr 24 01:05:06 2002
+++ kgeo-pao1/kgeo/kgeoConstructor.cpp	Tue Jun 25 13:32:22 2002
@@ -260,6 +260,7 @@
 	line->insertButton( UserIcon("vector"), ID_buttonVector, true,   i18n( "Draw a vector" )  );
 	line->insertButton( UserIcon("ray"), ID_buttonRay, true,   i18n( "Draw a ray" )  );
 	line->insertButton( UserIcon("parallel"), ID_buttonParallel, true,   i18n( "Draw a parallel of a line" )  );
+	line->insertButton( UserIcon("radicalline"), ID_buttonRadicalLine, true,   i18n( "Draw the radical line of two circles" )  );
 	line->insertButton( UserIcon("perpendicular"), ID_buttonPerpendicular, true,   i18n( "Draw the perpendicular line of a line through a point" )  );
 	line->setFullSize( false );
 
diff -Naur kgeo/kgeo/kgeoFileHandling.cpp kgeo-pao1/kgeo/kgeoFileHandling.cpp
--- kgeo/kgeo/kgeoFileHandling.cpp	Wed Mar 27 01:04:36 2002
+++ kgeo-pao1/kgeo/kgeoFileHandling.cpp	Tue Jun 25 13:32:22 2002
@@ -246,6 +246,9 @@
  			case ID_parallel:
  				list.append( new Parallel() );
  				break;
+ 			case ID_radicalline:
+ 				list.append( new RadicalLine() );
+ 				break;
  			case ID_move:
  				list.append( new Move() );
  				break;
diff -Naur kgeo/kgeo/kgeoMenuToolbarSlots.cpp kgeo-pao1/kgeo/kgeoMenuToolbarSlots.cpp
--- kgeo/kgeo/kgeoMenuToolbarSlots.cpp	Wed Dec 19 01:05:21 2001
+++ kgeo-pao1/kgeo/kgeoMenuToolbarSlots.cpp	Tue Jun 25 13:32:22 2002
@@ -103,6 +103,10 @@
 			newObject = new Perpendicular();
 			startConstructionMode(  i18n( "Click on a line and then on a point through which the perpendicular line will run." ) );
 			break;
+		case ID_buttonRadicalLine:
+			newObject = new RadicalLine();
+			startConstructionMode(  i18n( "Click on the two circles through which the radical line will run." ) );
+			break;
 		case ID_buttonMove:
 			newObject = new Move();
 			startConstructionMode(  i18n( "First, click on the point to move and then on a vector to define the movement." ) );
diff -Naur kgeo/kgeo/radicalline.cpp kgeo-pao1/kgeo/radicalline.cpp
--- kgeo/kgeo/radicalline.cpp	Thu Jan  1 01:00:00 1970
+++ kgeo-pao1/kgeo/radicalline.cpp	Tue Jun 25 13:32:22 2002
@@ -0,0 +1,62 @@
+/***************************************************************************
+ ***************************************************************************/
+
+/***************************************************************************
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ ***************************************************************************/
+
+#include "radicalline.h"
+
+RadicalLine::RadicalLine(): GeoLine()
+{
+	ID = ID_radicalline;
+  identificator = "RadicalLine";
+
+	startCoords.goBeyond = true;
+	endCoords.goBeyond = true;
+
+//	int temp[] = { ID_geoPoint, 1, ID_geoLine, 1, -1 };
+	int temp[] = { ID_circle, 2, -1 };
+	convertParams( temp, sizeof( temp ) / sizeof( temp[0] ) );
+}
+
+RadicalLine::~RadicalLine()
+{
+}
+
+void RadicalLine::move()
+{
+ 	Coordinates c1, c2, direc, direco, startpoint, baric, rvec;
+	double r1sq, r2sq, dsq, lambda;
+	c1 = parents.first()->parents.first()->getCoordinates();
+	rvec = parents.current()->parents.next()->getCoordinates() - c1;
+	r1sq = rvec.getLengthsq();
+	c2 = parents.next()->parents.first()->getCoordinates();
+	rvec = parents.current()->parents.next()->getCoordinates() - c2;
+	r2sq = rvec.getLengthsq();
+
+	direc = c2 - c1;
+	dsq = direc.getLengthsq();
+	direco = direc;
+	direco.orthogonalize();
+	startpoint = (c1 + c2)/2;
+
+	if (dsq == 0)
+        {
+	   lambda = 0.0;
+	} else {
+	   lambda = (r1sq - r2sq) / dsq;
+	}
+	lambda /= 2;
+	direc *= lambda;
+	startpoint = startpoint + direc;
+ 	startCoords.coords = startpoint;
+ 	endCoords.coords = startpoint + direco;
+
+	computeGoBeyond();
+}
diff -Naur kgeo/kgeo/radicalline.h kgeo-pao1/kgeo/radicalline.h
--- kgeo/kgeo/radicalline.h	Thu Jan  1 01:00:00 1970
+++ kgeo-pao1/kgeo/radicalline.h	Tue Jun 25 13:32:22 2002
@@ -0,0 +1,32 @@
+/***************************************************************************
+ ***************************************************************************/
+
+/***************************************************************************
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ ***************************************************************************/
+
+#ifndef RADICALLINE_H
+#define RADICALLINE_H
+
+#include <geoline.h>
+
+/**Implements a radical line.
+  *@author Maurizio Paolini
+  */
+
+class RadicalLine : public GeoLine
+{
+	public:
+
+		RadicalLine();
+		virtual ~RadicalLine();
+
+		virtual void move();
+};
+
+#endif
diff -Naur kgeo/kgeo/resource.h kgeo-pao1/kgeo/resource.h
--- kgeo/kgeo/resource.h	Tue May 28 01:07:17 2002
+++ kgeo-pao1/kgeo/resource.h	Tue Jun 25 13:32:22 2002
@@ -105,10 +105,11 @@
 #define ID_geoLine  								28
 #define ID_ray											29
 #define ID_parallel									30
-#define ID_perpendicular						31
-#define ID_move											32
-#define ID_rotation									33
-#define ID_text   									34
+#define ID_radicalline						31
+#define ID_perpendicular						32
+#define ID_move											33
+#define ID_rotation									34
+#define ID_text   									35
 
 #define ID_buttonFileNew 						100
 #define ID_buttonKiosk 							101
@@ -128,7 +129,8 @@
 #define ID_buttonRay								123
 #define ID_buttonParallel						124
 #define ID_buttonPerpendicular			125
-#define ID_buttonTriangle						126
+#define ID_buttonRadicalLine						126
+#define ID_buttonTriangle						127
 
 #define ID_buttonBaseCircle					130
 #define ID_buttonCircle							131
diff -Naur kgeo/kgeo/toolbar/Makefile.am kgeo-pao1/kgeo/toolbar/Makefile.am
--- kgeo/kgeo/toolbar/Makefile.am	Wed Oct 31 11:52:07 2001
+++ kgeo-pao1/kgeo/toolbar/Makefile.am	Tue Jun 25 13:32:22 2002
@@ -1,7 +1,7 @@
 ####### kdevelop will overwrite this part!!! (begin)##########
 
 
-EXTRA_DIST = exit.png filenew.png fileopen.png fileprint.png filesave.png help.png window_fullscreen.png angle.png arc.png areaCircle.png attacher.png baseCircle.png bisection.png circle.png circumference.png distance.png eraser.png line.png mirrorPoint.png move.png moveGrid.png parallel.png perpendicular.png point.png pointer.png pointOfConc.png pointOnLine.png pointxy.png ray.png rotation.png segment.png slope.png text.png tracer.png triangle.png vector.png paint.png line1.png line2.png line3.png line4.png line5.png point1.png point10.png point11.png point12.png point13.png point14.png point2.png point3.png point4.png point5.png point6.png point7.png point8.png point9.png sizer.png 
+EXTRA_DIST = exit.png filenew.png fileopen.png fileprint.png filesave.png help.png window_fullscreen.png angle.png arc.png areaCircle.png attacher.png baseCircle.png bisection.png circle.png circumference.png distance.png eraser.png line.png mirrorPoint.png move.png moveGrid.png parallel.png perpendicular.png radicalline.png point.png pointer.png pointOfConc.png pointOnLine.png pointxy.png ray.png rotation.png segment.png slope.png text.png tracer.png triangle.png vector.png paint.png line1.png line2.png line3.png line4.png line5.png point1.png point10.png point11.png point12.png point13.png point14.png point2.png point3.png point4.png point5.png point6.png point7.png point8.png point9.png sizer.png 
 
 install-data-local:
 	$(mkinstalldirs) $(kde_datadir)/kgeo/toolbar/
@@ -51,6 +51,8 @@
 	$(mkinstalldirs) $(kde_datadir)/kgeo/toolbar/
 	$(INSTALL_DATA) $(srcdir)/perpendicular.png $(kde_datadir)/kgeo/toolbar/perpendicular.png
 	$(mkinstalldirs) $(kde_datadir)/kgeo/toolbar/
+	$(INSTALL_DATA) $(srcdir)/radicalline.png $(kde_datadir)/kgeo/toolbar/radicalline.png
+	$(mkinstalldirs) $(kde_datadir)/kgeo/toolbar/
 	$(INSTALL_DATA) $(srcdir)/point.png $(kde_datadir)/kgeo/toolbar/point.png
 	$(mkinstalldirs) $(kde_datadir)/kgeo/toolbar/
 	$(INSTALL_DATA) $(srcdir)/pointer.png $(kde_datadir)/kgeo/toolbar/pointer.png
diff -Naur kgeo/kgeo/toolbar/radicalline.png kgeo-pao1/kgeo/toolbar/radicalline.png
--- kgeo/kgeo/toolbar/radicalline.png	Thu Jan  1 01:00:00 1970
+++ kgeo-pao1/kgeo/toolbar/radicalline.png	Tue Jun 25 13:32:22 2002
@@ -0,0 +1,4 @@
+‰PNG
+
+
IHDRÄ´l;	pHYs?@"È�IDATxœíT1€ ³œ?Ñÿ¿(¼E§Þam zflhˆµÁ,*¶}?*`ÊÙ•	Äšf\Ë;,:öÆx�ÕWÔæ§_Sbsäõ
+˜"^2’‰Ž@G¡‚¹nñJXÁ\ÂÊÜÓuk¡Ì3ë¿D	Áˆw.]·žC5y·H3áÑHâ…é#Ôû1jXRÇ_`®=þ…ç>:Gz<å
/±IEND®B`‚
\ No newline at end of file
