Package views

Source Code of views.Moon

package views;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.Toolkit;

import models.Coordinates;
import models.coordinates.EclipticCoordinates;
import models.coordinates.LocalHorizontalCoordinates;
import models.coordinates.UserCoordinates;

/**
*
* @author francois
*
*/
public class Moon extends Astre {

  protected static int paintWidth = 14;
  protected static int paintHeight = 14;
 
  private final Image icon;

  /**
   * creates the moon
   */
  public Moon() {
    color = Color.blue;
    this.icon = Toolkit.getDefaultToolkit().getImage("data/img/moon_icon.png");
  }
  @Override
  public void draw(Graphics g, UserCoordinates uc, Circle mapBounds) {
    LocalHorizontalCoordinates lhc = moonPosition(uc);
    if (lhc.isVisible()) {
      g.setColor(getColor());
      Point p = getProjection(lhc, mapBounds);
      g.drawImage(icon, p.x - paintWidth / 2, p.y - paintHeight / 2, paintWidth, paintHeight, null);
      //g.fillOval(p.x - paintWidth / 2, p.y - paintHeight / 2, paintWidth, paintHeight);
    }
  }

  /**
   * @param uc
   * @return the position of the moon in ecliptic coordinates
   */
  public static LocalHorizontalCoordinates moonPosition(UserCoordinates uc) {
    EclipticCoordinates c = moonPosition(uc.getJulianDate().getDecimalCentury());
    return Coordinates.eclipticToLocalHorizontal(c, uc);
  }

  private static EclipticCoordinates moonPosition(final double T) {
    double T2 = T * T;
    double T3 = T2 * T;

    double L = Math.toRadians(270.434164) + Math.toRadians(481267.8831) * T - Math.toRadians(0.001133) * T2 + Math.toRadians(0.0000019) * T3;
    double M = Math.toRadians(296.104608) + Math.toRadians(477198.8491) * T + Math.toRadians(0.009192) * T2 + Math.toRadians(0.0000144) * T3;
    double D = Math.toRadians(350.737486) + Math.toRadians(445267.1142) * T - Math.toRadians(0.001436) * T2 + Math.toRadians(0.0000019) * T3;
    double F = Math.toRadians(11.250889) + Math.toRadians(483202.0251) * T - Math.toRadians(0.003211) * T2 - Math.toRadians(0.0000003) * T3;

    double Omega = Math.toRadians(259.183275) - Math.toRadians(1934.1420) * T + Math.toRadians(0.002078) * T2 + Math.toRadians(0.0000022) * T3;

    double lambda = L + Math.toRadians(6.288750) * Math.sin(M) + Math.toRadians(1.274018) * Math.sin(2 * D - M) + Math.toRadians(0.658309) * Math.sin(2 * D) + Math.toRadians(0.213616) * Math.sin(2 * M);

    double B = Math.toRadians(5.128189) * Math.sin(F) + Math.toRadians(0.280606) * Math.sin(M + F) + Math.toRadians(0.277693) * Math.sin(M - F) + Math.toRadians(0.173238) * Math.sin(2 * D - F);

    double omega1 = Math.toRadians(0.0004664) * Math.cos(Omega);
    double omega2 = Math.toRadians(0.0000754) * Math.cos(Omega + Math.toRadians(275.05) - Math.toRadians(2.3) * T);

    double beta = B * (1 - omega1 - omega2);
    return new EclipticCoordinates(lambda, beta);
  }

}
TOP

Related Classes of views.Moon

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.