program DreiecksPunkte;

VAR
   lat1, lon1, lat2, lon2, lat3, lon3: real;
   lat, lon, R: real;
   Flat1, Flon1, Flat2, Flon2, Flat3, Flon3: real;
   Ax1, Ay1, AR1, Ax2, Ay2, AR2, Ax3, Ay3, AR3: real;
   i: integer;
begin
   lat1:=49.0000;
   lon1:= 8.0000;

   lat2:=49.5000;
   lon2:= 8.0000;

   lat3:=49.0000;
   lon3:= 8.5000;

   LemoinePunkt(lat1, lon1, lat2, lon2, lat3, lon3, lat, lon);
   Writeln('Lemoine:        ', WGS84(Lat,lon));

   NapoleonPunkt(lat1, lon1, lat2, lon2, lat3, lon3, lat, lon);
   Writeln('Napoleone:      ', WGS84(Lat,lon));

   FeuerbachPunkt(lat1, lon1, lat2, lon2, lat3, lon3, lat, lon);
   Writeln('Feuerbach:      ', WGS84(Lat,lon));

   SpiekerPunkt(lat1, lon1, lat2, lon2, lat3, lon3, lat, lon);
   Writeln('Speaker:        ', WGS84(Lat,lon));

   GergonnePunkt(lat1, lon1, lat2, lon2, lat3, lon3, lat, lon);
   Writeln('Gergonne:       ', WGS84(Lat,lon));

   Innenkreis(lat1, lon1, lat2, lon2, lat3, lon3, lat, lon, R);
   Writeln('Innenkreis:     ', WGS84(Lat,lon),R:10:2);

   UmKreis(lat1, lon1, lat2, lon2, lat3, lon3, lat, lon, R);
   Writeln('Umkreis:        ', WGS84(Lat,lon),R:10:2);

   Feuerbachkreis(lat1, lon1, lat2, lon2, lat3, lon3, lat, lon, R);
   Writeln('Feuerbachkreis: ', WGS84(Lat,lon),R:10:2);

   HalbeWinkelPunkte(lat1, lon1, lat2, lon2, lat3, lon3, Flat1, Flon1, Flat2, Flon2, Flat3, Flon3);
   Writeln('Halbewinkel:    ', WGS84(FLat1,Flon1),' ',WGS84(FLat2,Flon2),' ',WGS84(FLat3,Flon3) );

   HalbeSteitenPunkte(lat1, lon1, lat2, lon2, lat3, lon3, Flat1, Flon1, Flat2, Flon2, Flat3, Flon3);
   Writeln('HalbeSeiten:    ', WGS84(FLat1,Flon1),' ',WGS84(FLat2,Flon2),' ',WGS84(FLat3,Flon3) );

   SymmedianPunkte(lat1, lon1, lat2, lon2, lat3, lon3, Flat1, Flon1, Flat2, Flon2, Flat3, Flon3);
   Writeln('Symmedian:      ', WGS84(FLat1,Flon1),' ',WGS84(FLat2,Flon2),' ',WGS84(FLat3,Flon3) );

   XYHoehenPunkte(0.0,0.0,10,0.0,1.5,4.5, Ax1, Ay1, Ax2, Ay2, Ax3, Ay3);
   writeln;
   Writeln(Ax1:6:1,Ay1:5:1);
   Writeln(Ax2:6:1,Ay2:5:1);
   Writeln(Ax3:6:1,Ay3:5:1);

   XYAnkreise(0.0,0.0,10,0.0,1.5,4.5, Ax1, Ay1, AR1, Ax2, Ay2, AR2, Ax3, Ay3, AR3);
   writeln;
   Writeln(Ax1:6:1,Ay1:6:1,AR1:10:1);
   Writeln(Ax2:6:1,Ay2:6:1,AR2:10:1);
   Writeln(Ax3:6:1,Ay3:6:1,AR3:10:1);

end.