Example #1
0
        /// <summary>
        /// eine von aussen auf die Hauptsonne zufliegende Sonne mit Planeten wird erstellt
        /// </summary>
        private void AddComingSun()
        {
            if (suncount < _Light.Length - 1)
            {
                float Massfak = (float)rnd.Next(1, 3) * 5 * PlanetAdvanced2.initSunMass;
                float Mass    = (float)rnd.NextDouble() * Massfak;

                Point3 Pos = RndPosToSun(Sun, true, true);
                Pos = (Pos - Sun.Position) * (float)(rnd.Next(10, 20)); // Position weiter von der Sonne entfernen.

                Point3 Dir = new Point3();
                Dir.assign(Sun.Position - Pos);                    // Bewegung auf die Sonne zu.

                Dir.x += (float)rnd.NextDouble();                  // ein wenig Varianz in der Bewegung.
                Dir.y += (float)rnd.NextDouble();                  // ein wenig Varianz in der Bewegung.
                Dir.z += (float)rnd.NextDouble();                  // ein wenig Varianz in der Bewegung.

                Dir.Normalize();                                   // BewegungsRichtung normalisieren.

                Dir *= (float)((rnd.NextDouble() * 3) + 2f) * 10f; // Speed zurechnen;

                float[] Color = { (float)rnd.NextDouble(), (float)rnd.NextDouble(), (float)rnd.NextDouble() };
                suncount++;
                o2Sun __Sun = new o2Sun(Pos, Dir, Mass, Color, _Light[suncount]);
                Objects.Add(__Sun);
                AddPlanet(__Sun, rnd.Next(1, 9)); // 1 bis 8 Planeten auf die Umlaufbahn der neuen Sonne bringen.
            }
        }
Example #2
0
        private Point3 a()
        {
            float distance = Point3.Distance(this.Position, Center.Position);

            Point3 x = new Point3();

            x.assign(Position - Center.Position);

            float fak = (float)(-Center.G * Center.Mass / Math.Pow(distance, 3));

            return(x * fak);
        }
Example #3
0
        /// <summary>
        /// Initialisiertung Tangentialebene in P=(x0,y0,z0)
        /// </summary>
        private void initFunctionTangent()
        {
            double dif = 4f;

            m_lPointsFunctionTangent.Clear();

            double x  = x0 - dif; // links unten
            double y  = y0 - dif;
            double z  = tangentPlane(x, y);
            Point3 lu = new Point3((float)x, (float)y, (float)z);

            x = x0 + dif; // rechts unten
            y = y0 - dif;
            z = tangentPlane(x, y);
            Point3 ru = new Point3((float)(x), (float)y, (float)z);

            x = x0 - dif; // links oben
            y = y0 + dif;
            z = tangentPlane(x, y);
            Point3 lo = new Point3((float)(x), (float)(y), (float)z);
            // rechts oben
            Point3 ro = new Point3((float)(x), (float)(y), (float)z);

            Point3 lr = new Point3(lu.x - ru.x, lu.y - ru.y, lu.z - ru.z);
            Point3 ou = new Point3(lo.x - lu.x, lo.y - lu.y, lo.z - lu.z);

            lr.Normalize();
            ou.Normalize();
            z0 = (float)solvef(x0, y0);

            Point3 X0 = new Point3(x0, y0, z0);

            lr *= dif / 2;
            ou *= dif / 2;

            lu.assign(X0);
            lu -= lr;
            lu -= ou;

            lo.assign(X0);
            lo -= lr;
            lo += ou;

            ro.assign(X0);
            ro += lr;
            ro += ou;

            ru.assign(X0);
            ru += lr;
            ru -= ou;

            m_lPointsFunctionTangent.Add(new Square(lu, lo, ro, ru));
        }
Example #4
0
        /// <summary>
        /// Beschleunigung Richtung Bezugsobjekt
        /// </summary>
        /// <param name="o">Bezugsobjekt</param>
        /// <returns></returns>
        private Point3 a(o2Object o)
        {
            float distance = Point3.Distance(this.Position, o.Position);

            Point3 x = new Point3();

            x.assign(Position - o.Position);

            float fak = (float)(-PlanetAdvanced2.G * o.Mass / Math.Pow(distance, 3));

            return(x * fak);
        }
Example #5
0
        private Point3 a()
        {
            float distance = Point3.Distance(this.Position, Center.Position);

            Point3 x = new Point3();
            x.assign(Position - Center.Position);

            float fak = (float)(-Center.G * Center.Mass / Math.Pow(distance, 3));

            return x * fak;
        }
Example #6
0
        /// <summary>
        /// Initialisiertung Tangentialebene in P=(x0,y0,z0)
        /// </summary>
        private void initFunctionTangent()
        {
            double dif = 4f;

            m_lPointsFunctionTangent.Clear();

            double x = x0 - dif; // links unten
            double y = y0 - dif;
            double z = tangentPlane(x, y);
            Point3 lu = new Point3((float)x, (float)y, (float)z);

            x = x0 + dif; // rechts unten
            y = y0 - dif;
            z = tangentPlane(x, y);
            Point3 ru = new Point3((float)(x), (float)y, (float)z);

            x = x0 - dif; // links oben
            y = y0 + dif;
            z = tangentPlane(x, y);
            Point3 lo = new Point3((float)(x), (float)(y), (float)z);
            // rechts oben
            Point3 ro = new Point3((float)(x), (float)(y), (float)z);

            Point3 lr = new Point3(lu.x - ru.x, lu.y - ru.y, lu.z - ru.z);
            Point3 ou = new Point3(lo.x - lu.x, lo.y - lu.y, lo.z - lu.z);
            lr.Normalize();
            ou.Normalize();
            z0 = (float)solvef(x0, y0);

            Point3 X0 = new Point3(x0, y0, z0);

            lr *= dif / 2;
            ou *= dif / 2;

            lu.assign(X0);
            lu -= lr;
            lu -= ou;

            lo.assign(X0);
            lo -= lr;
            lo += ou;

            ro.assign(X0);
            ro += lr;
            ro += ou;

            ru.assign(X0);
            ru += lr;
            ru -= ou;

            m_lPointsFunctionTangent.Add(new Square(lu, lo, ro, ru));
        }
Example #7
0
        /// <summary>
        /// eine von aussen auf die Hauptsonne zufliegende Sonne mit Planeten wird erstellt
        /// </summary>
        private void AddComingSun()
        {
            if (suncount < _Light.Length - 1)
            {
                float Massfak = (float)rnd.Next(1, 3) * 5 * PlanetAdvanced2.initSunMass;
                float Mass = (float)rnd.NextDouble() * Massfak;

                Point3 Pos = RndPosToSun(Sun, true,true);
                Pos = (Pos - Sun.Position) * (float)(rnd.Next(10, 20)); // Position weiter von der Sonne entfernen.

                Point3 Dir = new Point3();
                Dir.assign(Sun.Position - Pos); // Bewegung auf die Sonne zu.

                Dir.x += (float)rnd.NextDouble(); // ein wenig Varianz in der Bewegung.
                Dir.y += (float)rnd.NextDouble(); // ein wenig Varianz in der Bewegung.
                Dir.z += (float)rnd.NextDouble(); // ein wenig Varianz in der Bewegung.

                Dir.Normalize(); // BewegungsRichtung normalisieren.

                Dir *= (float)((rnd.NextDouble() * 3) + 2f) * 10f; // Speed zurechnen;

                float[] Color = { (float)rnd.NextDouble(), (float)rnd.NextDouble(), (float)rnd.NextDouble() };
                suncount++;
                o2Sun __Sun = new o2Sun(Pos, Dir, Mass, Color, _Light[suncount]);
                Objects.Add(__Sun);
                AddPlanet(__Sun, rnd.Next(1, 9)); // 1 bis 8 Planeten auf die Umlaufbahn der neuen Sonne bringen.
            }
        }
Example #8
0
        /// <summary>
        /// Beschleunigung Richtung Bezugsobjekt
        /// </summary>
        /// <param name="o">Bezugsobjekt</param>
        /// <returns></returns>
        private Point3 a(o2Object o)
        {
            float distance = Point3.Distance(this.Position, o.Position);

            Point3 x = new Point3();
            x.assign(Position - o.Position);

            float fak = (float)(-PlanetAdvanced2.G * o.Mass / Math.Pow(distance, 3));

            return x * fak;
        }