##################################################################
# Modul fuer Hilfsfunktionen
#
# VERSION 1
# Letzte Aenderung: 26.02.2009
##################################################################
use POSIX qw /floor ceil/;
use Math::Trig;
use strict;
use warnings;

### Der Funktionswert wird berechnet

sub calcfunk {
	my ( $funktionsausdruck, $variable, $wert ) = @_;
	my $y = $funktionsausdruck;
	$y =~ s/\^/**/g;
	$y =~ s/\b$variable\b/($wert)/g;
	$y = eval($y);
	return $y;
}

## Wie viele Nachkommastellen sollen angegeben werden?

sub nachkommastellen {
	my ( $wert, $nachkommastelle ) = @_;
	my $nachkommastellentext = "%0." . $nachkommastelle . "f";
	if ( $nachkommastelle >= 0 ) {
		$wert = sprintf( $nachkommastellentext, $wert );
	}
	else { $wert = $wert; }
	return $wert;
}

sub abrunden {
	my ( $wert, $schritt ) = @_;
	return $schritt * floor( $wert / $schritt );
}

sub aufrunden {
	my ( $wert, $schritt ) = @_;
	return $schritt * ceil( $wert / $schritt );
}

### Es wird eine Datei erzeugt

sub latex {
	my ( $layer, $pstrickstext ) = @_;
	schreibeinarray( $layer, sprintf( "%s", $pstrickstext ) );
}

sub ausgabe {
	my ($pstrickstext) = @_;
	latex( 10, $pstrickstext );
}

sub kommentar {
	my ( $layer, $text ) = @_;
	schreibeinarray( $layer, sprintf( "%%%% %s", $text ) );
}

sub usepackage {
	my ( $parameter, $befehl ) = @_;
	if ( $parameter eq "" ) {
		schreibeinarray( 2, sprintf( "\\usepackage{%s}", $befehl ) );
	}
	else {
		schreibeinarray( 2,
			sprintf( "\\usepackage[%s]{%s}", $parameter, $befehl ) );
	}    
}

sub max {
	my $a = shift;
	my $b = shift;
	return $a > $b ? $a : $b;
}

sub min {
	my $a = shift;
	my $b = shift;
	return $a < $b ? $a : $b;
}

# ist eine Ausgabe eine Zahl ode nicht
sub istzahl {
	my ($zeile) = @_;

	if ( $zeile =~ /([a-zA-Z\.]+)/ ) { return 0; }
	else { return 1; }
}
1;

