/// <summary> /// Constructor de la clase. Está desacoplado al máximo de la clase Atributos, esta clase /// ha sido consultada para crear el circulo a la hora de llamar al constructor /// </summary> /// <param name="indice">Círculo i-ésimo relativo a la minucia a la que él está asociado</param> /// <param name="anguloGlobal">Ángulo inferior de la minucia con respecto al origen</param> /// <param name="radio">Radio del círculo actual. Viene determinado por el usuario</param> /// <param name="numPuntos">Número de puntos que contendrá el círculo actual</param> public Circulo(int indice, double anguloGlobal, int radio, int numPuntos, Minucia minucia) { Atributos atr = Atributos.getInstance(); this.indice = indice; this.anguloGlobal = anguloGlobal; this.radio = radio; this.numPuntos = numPuntos; // minucia a la que está asociada el citado punto this.minucia = minucia; // array donde guardaremos los puntos asociados al citado círculo this.puntos = new Punto[numPuntos]; // Ahora buscaremos los puntos asociados a cada círculo for (int i = 0; i < numPuntos; i++) { // angulo del punto con respecto al centro de la minucia double anguloParcial = get_teta_polar_punto(i); // coordenadas globales del nuevo punto int nuevox = (int)(radio * Math.Sin((double)anguloParcial)) + minucia.x; int nuevoy = (int)(radio * Math.Cos((double)anguloParcial)) + minucia.y; puntos[i] = new Punto(nuevox, nuevoy, anguloParcial, minucia); } }
/// <summary> /// the orientation at the sampling point is alfa-l,k(−pi/2l,k <pi/2) /// </summary> /// <param name="indice"></param> /// <returns></returns> public static double get_relative_orientation(double anguloParcialEnRango, double anguloGlobal) { return(Punto.lambda(anguloParcialEnRango - anguloGlobal)); }