##################################################################
# Modul für Uhren
#
# Letzte Aenderung: 06.01.2012
##################################################################
use POSIX qw /floor ceil/;
use Math::Trig;
use strict;
use warnings;

my $knoten = 0;

sub getknoten { return $knoten; }

sub setknoten {
	my ($wert) = @_;
	$knoten = $wert;
}

my $knotenzaehler = 0;

my @knoteninhaltx = ();
my @knoteninhalty = ();
my $i             = 0;
for ( $i = 0 ; $i <= 10000 ; $i++ ) {
	$knoteninhaltx[$i] = 1234.4321;
	$knoteninhalty[$i] = 1234.4321;
}

sub knotensetzen {
	my ( $knotenart, $x, $y, $z ) = @_;

	if ( $z eq "" ) {
		my $text = "("
		  . nachkommastellen( $x, 2 ) . ","
		  . nachkommastellen( $y, 2 ) . ")";
		my $text2 = "\$("
		  . nachkommastellen( $x, 2 ) . "|"
		  . nachkommastellen( $y, 2 ) . ")\$";

		$text2 =~ s/\./,/g;
		my $textknoten =
		    $knotenart 
		  . $text . "{A"
		  . $knotenzaehler . "}"
		  . "\\rput"
		  . $text . "{"
		  . $text2 . "}";
		my $i = 0;
		my $j = 0;
		$knotenzaehler++;

		pstricks( 10, $textknoten );
		my $laenge = length($text);
		minmax(
			$x - ( 0.5 * $laenge ) / getskalierung("x"),
			$y - ( 0.5 * $laenge ) / getskalierung("y"),
			$x - ( 0.5 * $laenge ) / getskalierung("x"),
			$y - ( 0.5 * $laenge ) / getskalierung("y")
		);

		minmax(
			$x + ( 0.5 * $laenge ) / getskalierung("x"),
			$y + ( 0.5 * $laenge ) / getskalierung("y"),
			$x + ( 0.5 * $laenge ) / getskalierung("x"),
			$y + ( 0.5 * $laenge ) / getskalierung("y")
		);
	}
	else {
		my $text = "(" . x3d( $x, $y, $z ) . "," . y3d( $x, $y, $z ) . ")";
		my $text2 = "\$("
		  . nachkommastellen( $x, 2 ) . "|"
		  . nachkommastellen( $y, 2 ) . "|"
		  . nachkommastellen( $z, 2 ) . ")\$";

		$text2 =~ s/\./,/g;
		my $textknoten =
		    $knotenart 
		  . $text . "{A"
		  . $knotenzaehler . "}"
		  . "\\rput"
		  . $text . "{"
		  . $text2 . "}";
		my $i = 0;
		my $j = 0;
		$knotenzaehler++;

		pstricks( 10, $textknoten );

	}

}

sub knoten {
	my (
		$layer, $farbe,       $x,         $y, $z,
		$name,  $bezeichnung, $knotenart, $parameter
	) = @_;

	settexthier("");

	if ( $knotenart eq "rnode" ) {
		if ( $z eq "" ) {
			paar( $x, $y );
			minmax( $x - 0.5, $y - 0.5, $x + 0.5, $y + 0.5 );
		}
		else {
			paar( x3d( $x, $y, $z ), y3d( $x, $y, $z ) );
			minmax(
				x3d( $x, $y, $z ) - 0.5,
				y3d( $x, $y, $z ) - 0.5,
				x3d( $x, $y, $z ) + 0.5,
				y3d( $x, $y, $z ) + 0.5
			);
		}
		klammer( "\\" . $knotenart . "{" . $bezeichnung . "}{" . $name . "}" );
		beschriftungkopf( $layer, $farbe, 0, "c", gettexthier() );
	}
	else {
		if ( $z eq "" ) {
			paar( $x, $y );
		}
		else {
			paar( x3d( $x, $y, $z ), y3d( $x, $y, $z ) );
		}
		if ( $knotenart eq "cnodeput" ) {
			minmax( $x - 1, $y - 1, $x + 1, $y + 1 );
		}
		klammer($bezeichnung);
		klammer($name);
		befehlerzeugen( $layer, $knotenart, $farbe, "", "", $parameter, "",
			gettexthier() );

	}
}

sub knotenverbindung {
	my (
		$layer,      $name1,         $name2, $text,
		$linienart,  $linienstaerke, $farbe, $parameter1,
		$parameter2, $pfeilart
	) = @_;

	settexthier("");

	klammer($name1);
	klammer($name2);

	befehlerzeugen( $layer, "ncline", $farbe, $linienart, $linienstaerke,
		$parameter1, $pfeilart, gettexthier() );
	settexthier("");
	if ( $text ne "" ) {
		klammer($text);
		befehlerzeugen( $layer, "naput", $farbe, $linienart, $linienstaerke,
			$parameter1, "", gettexthier() );
		settexthier("");
	}

}

sub knotenkreis {
	my (
		$layer,     $name1,         $text,     $winkel,
		$radius,    $farbe,         $fuellart, $fuellfarbe,
		$linienart, $linienstaerke, $pfeilart, $parameter
	) = @_;

	minmax(
		getminmax( "x", "min" ) - 2 * $radius,
		getminmax( "y", "min" ) - 2 * $radius,
		getminmax( "x", "max" ) + 2 * $radius,
		getminmax( "y", "max" ) + 2 * $radius
	);

	settexthier("");
	klammer($name1);
	klammer($radius);

	my $parameterweiter = $parameter . ", angle=" . $winkel;
	befehlerzeugen( $layer, "nccircle", $farbe, $linienart, $linienstaerke,
		$parameterweiter, $pfeilart, gettexthier() );
	settexthier("");
	if ( $text ne "" ) {
		klammer($text);

		befehlerzeugen( $layer, "nbput", $farbe, $linienart, $linienstaerke, "",
			"", gettexthier() );
		settexthier("");
	}

	#\nccircle[angle=-180]{->}{E}{0.5}\nbput{$0,2$}

}

1;

