version 1.43, 2001/12/13 23:38:28
|
version 1.49, 2002/09/20 18:19:25
|
Line 30
|
Line 30
|
# |
# |
# 05/25/2001 H. K. Ng |
# 05/25/2001 H. K. Ng |
# 05/31/2001 H. K. Ng |
# 05/31/2001 H. K. Ng |
|
# 12/21/2001 Matthew |
# |
# |
#init some globals |
#init some globals |
$hidden::RANDOMINIT=0; |
$hidden::RANDOMINIT=0; |
$pi=atan2(1,1)*4; |
$pi=atan2(1,1)*4; |
$rad2deg=180.0/$pi; |
$rad2deg=180.0/$pi; |
$deg2rad=$pi/180.0; |
$deg2rad=$pi/180.0; |
|
$"=' '; |
|
|
sub caparesponse_check { |
sub caparesponse_check { |
#not properly used yet: calc |
#not properly used yet: calc |
Line 99 sub caparesponse_check {
|
Line 101 sub caparesponse_check {
|
$sig_ubound =15; #SIG_UB_DEFAULT |
$sig_ubound =15; #SIG_UB_DEFAULT |
} else { |
} else { |
($sig_lbound,$sig_ubound) = split /,/,$sig; |
($sig_lbound,$sig_ubound) = split /,/,$sig; |
|
if (!$sig_lbound) { |
|
$sig_lbound = 0; #SIG_LB_DEFAULT |
|
$sig_ubound =15; #SIG_UB_DEFAULT |
|
} |
|
if (!$sig_ubound) { $sig_ubound=$sig_lbound; } |
} |
} |
my $result = &caparesponse_capa_check_answer($response,$answer,$type, |
my $result = &caparesponse_capa_check_answer($response,$answer,$type, |
$tol_type,$tol, |
$tol_type,$tol, |
Line 236 sub random {
|
Line 243 sub random {
|
srand($external::randomseed); |
srand($external::randomseed); |
$hidden::RANDOMINIT=1; |
$hidden::RANDOMINIT=1; |
} |
} |
|
if (!defined($step)) { $step=1; } |
my $num=1+int(($end-$start)/$step); |
my $num=1+int(($end-$start)/$step); |
my $result=$start + int(rand() * $num)*$step; |
my $result=$start + int(rand() * $num)*$step; |
return $result; |
return $result; |
Line 434 sub floor {return (($_[0]-int($_[0]))==
|
Line 442 sub floor {return (($_[0]-int($_[0]))==
|
|
|
sub format { |
sub format { |
my ($value,$fmt)=@_; |
my ($value,$fmt)=@_; |
return sprintf('%.'.$fmt,$value); |
my $dollarmode; |
|
if ($fmt =~ /^\$(.*)/) { $fmt=$1; $dollarmode=1; } |
|
my $result=sprintf('%.'.$fmt,$value); |
|
if ($dollarmode) {$result=&dollarmode($result);} |
|
return $result; |
|
} |
|
|
|
sub prettyprint { |
|
my ($value,$fmt)=@_; |
|
my $result; |
|
my $dollarmode; |
|
if ($fmt =~ /^\$(.*)/) { $fmt=$1; $dollarmode=1; } |
|
if ($fmt) { $value=sprintf('%.'.$fmt,$value); } |
|
if ($value =~ /([0-9\.\-\+]+)E([0-9\-\+]+)/ ) { |
|
my $frac=$1; |
|
if ($dollarmode) { $frac=&dollarformat($frac); } |
|
my $exponent=$2; |
|
$exponent=~s/^\+0*//; |
|
if ($exponent) { |
|
if ($external::target eq 'web') { |
|
$result=$frac.'×10<sup>'.$exponent.'</sup>'; |
|
} elsif ($external::target eq 'tex') { |
|
$result='\ensuremath{'.$frac.'\times 10^{'.$exponent.'}}'; |
|
} else { |
|
$result=$value; |
|
} |
|
} else { |
|
$result=$frac; |
|
} |
|
} else { |
|
$result=$value; |
|
if ($dollarmode) { $result=&dollarformat($result); } |
|
} |
|
return $result; |
|
} |
|
|
|
sub dollarformat { |
|
my ($number) = @_; |
|
if ($number =~ /\./) { |
|
while ($number =~ /([^\.,]+)([^\.,][^\.,][^\.,])([,0-9]*\.[0-9]*$)/) { |
|
$number = $1.','.$2.$3; |
|
} |
|
} else { |
|
while ($number =~ /([^,]+)([^,][^,][^,])([,0-9]*)$/) { |
|
$number = $1.','.$2.$3; |
|
} |
|
} |
|
if ($external::target eq 'tex') { |
|
$number='\$'.$number; #' stupid emacs |
|
} else { |
|
$number='$'.$number; #' stupid emacs |
|
} |
|
return $number; |
} |
} |
|
|
sub map { |
sub map { |
Line 626 sub choose {
|
Line 686 sub choose {
|
return $_[$num]; |
return $_[$num]; |
} |
} |
|
|
|
# expiremental idea |
|
sub proper_path { |
|
my ($path)=@_; |
|
if ( $external::target eq "tex" ) { |
|
return '/home/httpd/html'.$path; |
|
} else { |
|
return $path; |
|
} |
|
} |
|
|