コード例 #1
0
ファイル: Polar2d.cs プロジェクト: wizardbeard/NeuralNetwork
    public Polar2d(Vector2d point)
    {
        Polar2d polar = CartesianToPolar(point);

        angle  = polar.angle;
        radius = polar.radius;
    }
コード例 #2
0
ファイル: Polar2d.cs プロジェクト: wizardbeard/NeuralNetwork
    //--------------Static Functions----------------//
    /// <summary>
    /// the angle difference from angle1 to angle2 (in radians)
    /// </summary>
    /// <param name="angle1"></param>
    /// <param name="angle2"></param>
    /// <returns></returns>
    public static double Angle(double angle1, double angle2)
    {
        Polar2d angle1Pol = new Polar2d(1, angle1);
        Polar2d angle2Pol = new Polar2d(1, angle2);

        return(Vector2d.Angle(angle1Pol.cartesian, angle2Pol.cartesian) * Mathd.Deg2Rad);
    }
コード例 #3
0
    private Vector3d Position(double time)
    {
        if (orbit.sma == 0)
        {
            return(Vector3d.zero);
        }

        double parentMass;

        if (solarIndex.Count == 2)
        {
            parentMass = GameManager.instance.data.stars[solarIndex[0]].solar.mass;
        }
        else if (solarIndex.Count == 3)
        {
            parentMass = GameManager.instance.data.stars[solarIndex[0]].solar.satelites[solarIndex[1]].mass;
        }
        else
        {
            throw new System.Exception("parentMass not found.");
        }
        var ena = ENA(time, parentMass);
        var pos = new Vector3d(orbit.sma * (Mathd.Cos(ena) - orbit.ecc), orbit.sma * Mathd.Sqrt(1 - (orbit.ecc * orbit.ecc)) * Mathd.Sin(ena));
        var pol = new Polar2d(pos);

        pol.angle += orbit.lpe;
        var pos2 = pol.cartesian;

        return(pos2);
    }
コード例 #4
0
ファイル: Polar2d.cs プロジェクト: wizardbeard/NeuralNetwork
    /// <summary>
    /// Converts Cartesian coords to polar coords with angle in radians
    /// </summary>
    /// <param name="point">Cartesian coordinate</param>
    /// <returns></returns>
    public static Polar2d CartesianToPolar(Vector2d point)
    {
        Polar2d polar;

        double angle = Mathd.Atan(point.y / point.x);

        if (point.x < 0)
        {
            angle += Mathd.PI;
        }
        else if (point.y < 0)
        {
            angle += Mathd.PI * 2;
        }

        polar = new Polar2d(point.magnitude, angle);
        return(polar);
    }
コード例 #5
0
ファイル: Polar2d.cs プロジェクト: wizardbeard/NeuralNetwork
 /// <summary>
 /// Creates x and y variable from polar coords
 /// </summary>
 /// <param name="polar">Polar coords</param>
 /// <returns></returns>
 public static Vector2d PolarToCartesian(Polar2d polar)
 {
     return(new Vector2d(polar.radius * Mathd.Cos(polar.angle), polar.radius * Mathd.Sin(polar.angle)));
 }