
die "Args: SNR_value\n" if $#ARGV!=0;

$SNR = $ARGV[0];

# La ecuación de la elipse es:
# x^2/a^2 + y^2/b^2 = 1
# para
# a = 4.5
# b = 2 
# Xc = ( 5, 4)
# alfa = 30
#
# Para calcular la media de la señal hacemos:
# awk '{ s1+=$ 1; s2+=$2; i++} END{ print s1/i, s2/i, i}' s
# 5.05882 1.10189 51
# de la señal con sigma = 0


$a = 6.0;
$b = 2.0;  
$Xc = 5.0;
$Yc = 1.0;
$alfa = 60;

$theta1 = 90;
$theta2 = 270;
$N = 20;

$pi = 3.141592654;
$sigma = 5.06/$SNR;
printf "# Sigma = $sigma\n";

$alfa *= $pi/180; # en radianes

$theta1 *= $pi/180; # en radianes
$theta2 *= $pi/180; # en radianes

$ang = ($theta2 - $theta1)/ $N;

$cosb = cos( $alfa );
$sinb = sin( $alfa );

for( $i=0; $i<=$N; $i++ ) {
	$v = $i * $ang + $theta1;

	#print "$i $v!\n";
	$cosa = cos( $v );
	$sina = sin( $v );

	# Ec. paramétrica de la elipse
	$x = $a * $cosa;
	$y = $b * $sina;

	# Ahora los rotamos y los trasladamos
	$xp = $x*$cosb - $y*$sinb + $Xc + gasdev()*$sigma;
	$yp = $x*$sinb + $y*$cosb + $Yc + gasdev()*$sigma;

	print "$xp $yp\n";
	# print "$x $y\n";
}


# Otro programín para generar la estadística
# de muestras de una variable aleatoria con una
# distribución Gausiana
#
# Fraga, 4/08/2006
#
# En Cd. Victoria, en la Unidad Tamaulipas del Cinvestav

# la funcion gasdev()
# genera una muestra de una variable aleatoria con
# una distribución normal. N(0,1)
#
my $iset=0;
sub gasdev
{
        my $v1;
        my $v2;
        my $r;
        if  ($iset == 0) {
                do {
                        $v1=2.0*rand()-1.0;
                        $v2=2.0*rand()-1.0;
                        $r=$v1*$v1 + $v2*$v2;
                } while ($r >= 1.0);
                my $fac=sqrt(-2.0*log($r)/$r);
                $gset=$v1*$fac;
                $iset=1;
                return $v2*$fac;
        } 
        else {
                $iset=0;
                return $gset;
        }
} 

#
# $sigma=10;
# $xm=50;
# $n=100;
#
# limpio el arreglo donde se guardará la estadística
# for($i=10; $i<90; $i++) {
# 	$frecuencias[$i] = 0;
# }
#
# repito el "experimento" $n veces
#
# for($i=0; $i<$n; $i++) {
#     $z = $sigma*gasdev() + $xm;
# 
# 	$k = int( $z + 0.5 );
#    $frecuencias[$k] ++;
# }
