Esempio n. 1
0
        static void Main(string[] args)
        {
            triangle s2 = new triangle();

            s2.settriangle(3, 4, 9);
            Console.WriteLine($"三角形面积为{s2.getarea()}");
        }
Esempio n. 2
0
    /* ------------------------------ TRIANGULOS ------------------------------ */
    public Vector3 getMidPoint(triangle t1)
    {
        Vector3[] options     = { t1.v1, t1.v2, t1.v3 };
        Vector3   sum         = t1.v1 + t1.v2 + t1.v3;
        Vector3   mass_center = new Vector3(sum.x / 3, sum.y / 3, 0);

        return(mass_center);
    }
Esempio n. 3
0
 public Mesh(point3[] meshVerts, triangle[] meshFaces, point2[] meshUvs, Material[] mtls = null)
 {
     verts = meshVerts;
     vertCount = verts.Length;
     faces = meshFaces;
     faceCount = faces.Length;
     uvVerts = meshUvs;
     matIDs = mtls;
 }
Esempio n. 4
0
    public void land(triangle start, Vector3 planetPos)
    {
        t                  = 0;
        endPosition        = start.findCenter();
        startPosition      = start.findCenter() + 3f * Vector3.Normalize(start.findCenter() - planetPos);
        transform.position = startPosition;
        Vector3 direction = Vector3.Cross(start.vertex2 - start.vertex1, start.vertex3 - start.vertex1);

        transform.rotation = Quaternion.LookRotation(direction);
        transform.Rotate(new Vector3(90, 0, 0));
    }
Esempio n. 5
0
    // этот скрипт накинут на камеру и запускается сразу после генерации камеры в игровом движке

    void Start()
    {
        int count_elem = Random.Range(5, 20); //количество елементов
        int ran_elem;                         // тип елемента

        // обьяление существующих елементов

        trapeze  trapeze_el;
        triangle triangle_el;
        circle   circle_el;
        square   square_el;


        // Массив обьектов
        ArrayList ms = new ArrayList();

        for (int i = 0; i < count_elem; i++)
        {
            ran_elem = Random.Range(0, 3);

            if (ran_elem == 0)      // Если ran_elem 0 то создается трапеция
            {
                trapeze_el = new trapeze();
                trapeze_el.get_date();
                ms.Add(trapeze_el);
            }
            else if (ran_elem == 1)     // Если ran_elem 1 то создается треугольник
            {
                triangle_el = new triangle();
                triangle_el.get_date();
                ms.Add(triangle_el);
            }
            else if (ran_elem == 2)      // Если ran_elem 2 то создается круг
            {
                circle_el = new circle();
                circle_el.get_date();
                ms.Add(circle_el);
            }
            else         // иначе квадрат
            {
                square_el = new square();
                square_el.get_date();
                ms.Add(square_el);
            }
        }

        // это не работает и лучше его не трогать... Оно здесь для красоты

        // for (int b = 0; b < ms.Count; b++){
        //     Debug.Log("ELEMENT #"+b);
        //     Debug.Log(ms[b].get_date());
        // }
    }
Esempio n. 6
0
        public void load()
        {
            GameObject[] objects = GameObject.FindObjectsOfType <GameObject> ();
            foreach (GameObject o in objects)
            {
                if (!o.tag.Equals("MainCamera") && !o.tag.Equals("Player") && !o.tag.Equals("Shadow") && o.layer != 5)
                {
                    o.SetActive(false);
                    Destroy(o);
                }
            }
            GameObject _prefab = Resources.Load <GameObject> ("Tiles/" + levelName);

            Debug.Log(_prefab);
            GameObject gridBgPrefab = (GameObject)Instantiate(_prefab, new Vector3(0f, 0f, 0f), Quaternion.identity);

            GameObject.Find("Character").transform.position = start;
            int index = 0;

            if (GameObject.Find("Character").GetComponent <PlayerScript> ().shadows [0].GetComponent <SpriteAnim> ().loops > 0)
            {
                index = 1;
            }
            foreach (GameObject shadow in GameObject.Find("Character").GetComponent <PlayerScript> ().shadows)
            {
                shadow.GetComponent <SpriteRenderer> ().sprite = GameObject.Find("Character").GetComponent <PlayerScript> ().shadows [index].GetComponent <SpriteRenderer> ().sprite;
            }
            GameObject.Find("Character").GetComponent <PlayerScript> ().trail.Clear();
            int triangle_head = 0;

            for (int i = 0; i < this.objects.Length; i++)
            {
                if (this.objects[i] == "triangle pair")
                {
                    //spawn the triangles
                    GameObject obj         = Resources.Load <GameObject>("Prefabs/triangle");
                    GameObject obj2        = Resources.Load <GameObject>("Prefabs/triangle2");
                    triangle   a_triangle  = Instantiate(obj, this.triangle_locations[triangle_head], new Quaternion(0, 0, 0, 0)).gameObject.GetComponent <triangle>();
                    triangle2  a_triangle2 = Instantiate(obj2, this.triangle_locations[triangle_head + 1], new Quaternion(0, 0, 0, 0)).gameObject.GetComponent <triangle2>();
                    a_triangle.sibling  = a_triangle2;
                    a_triangle2.sibling = a_triangle;
                    triangle_head      += 2; // set the triangle head up
                }
                else                         // not instantiating a triangle
                {
                    GameObject obj = Resources.Load <GameObject> (this.objects[i]);
                    Instantiate(obj);
                    obj.transform.position = locations[i];
                }
            }
        }
Esempio n. 7
0
    private float Area(triangle t1)
    {
        Vector3[] m_points = { t1.v1, t1.v2, t1.v3 };
        int       n        = m_points.Length;
        float     A        = 0.0f;

        for (int p = n - 1, q = 0; q < n; p = q++)
        {
            Vector2 pval = m_points[p];
            Vector2 qval = m_points[q];
            A += pval.x * qval.y - qval.x * pval.y;
        }
        return(A * 0.5f);
    }
Esempio n. 8
0
    /* ---------------------------------- CUADRADOS ---------------------------------- */
    public List <triangle> squareToTriangle(Vector3 tl, Vector3 br)
    {
        Vector3  top_r = new Vector3(br.x, tl.y, 0);
        Vector3  bot_l = new Vector3(tl.x, br.y, 0);
        triangle t1    = new triangle(tl, br, top_r);
        triangle t2    = new triangle(tl, br, bot_l);

        t1.center = getMidPoint(t1);
        t2.center = getMidPoint(t2);
        List <triangle> triangs = new List <triangle> {
            t1, t2
        };

        return(triangs);
    }
Esempio n. 9
0
        public void TestP()
        {
            int a        = 10;
            int b        = 15;
            int c        = 20;
            int expected = 45;

            triangle t = new triangle();

            t.a = a;
            t.b = b;
            t.c = c;
            int actual = t.Perimetr();

            Assert.AreEqual(expected, actual);
        }
Esempio n. 10
0
        public void TestS()
        {
            int    a        = 3;
            int    b        = 4;
            int    c        = 5;
            double expected = 6;

            triangle t = new triangle();

            t.a = a;
            t.b = b;
            t.c = c;
            double actual = t.Ploshad();

            Assert.AreEqual(expected, actual);
        }
Esempio n. 11
0
 // Update is called once per frame
 void Update()
 {
     if (this.sibling.gameObject.activeSelf == false)
     {
         wait--;
         if (wait <= 0)            // create a new one
         {
             Vector3 val = this.transform.position + new Vector3(rnd.Next(-6, 6), rnd.Next(-6, 6), 0);
             sibling         = Instantiate(other_triangle, val, new Quaternion(0, 0, 0, 0)).gameObject.GetComponent <triangle>();
             sibling.sibling = this;
         }
     }
     else
     {
         wait = 5;
     }
 }
Esempio n. 12
0
        public static IntersectResult intersect(this aabb2 aabb, triangle <vec2> tri)
        {
            int siflags = 0x000000;

            for (int i = 0; i < tri.p.Length; i++)
            {
                var r = aabb.intersect(tri.p[i]);
                siflags = (int)(r) << (i << 8);
            }

            if (siflags == 0x010101)
            {
                return(IntersectResult.Contain1);
            }

            return(IntersectResult.None);
        }
Esempio n. 13
0
    public Vector3 bestVertex(triangle t1)
    {
        Vector3[] options     = { t1.v1, t1.v2, t1.v3 };
        Vector3   mass_center = getMidPoint(t1);
        Vector3   actual      = new Vector3();
        float     min         = 10000000f;

        foreach (Vector3 v in options)
        {
            if (distBetweenPoints(v, mass_center) < min)
            {
                actual = v;
                min    = (distBetweenPoints(v, mass_center));
            }
        }
        return(actual);
    }
Esempio n. 14
0
 void OnGUI()
 {
     if (!hecho)
     {
         foreach (Transform child in transform)
         {
             //child is your child transform
             BoxCollider     boxC     = child.GetComponent <BoxCollider>();
             Bounds          bs       = boxC.bounds;
             Vector3         tl       = new Vector3(bs.center.x - bs.extents.x, bs.center.y + bs.extents.y, 0f);
             Vector3         br       = new Vector3(bs.center.x + bs.extents.x, bs.center.y - bs.extents.y, 0f);
             List <triangle> list_ini = squareToTriangle(tl, br);
             int             iter     = 0;
             while (true)                   //list_ini.Count>0
             {
                 triangle tr = list_ini [0];
                 DrawTriangle(tr.v1, tr.v2, tr.v3, Color.white, 200000f);
                 if (iter < 40)
                 {
                     List <triangle> new_trs = splitTriangle(tr);
                     foreach (triangle trr in new_trs)
                     {
                         list_ini.Add(trr);
                     }
                     iter++;
                 }
                 else if (iter == 40)
                 {
                     Debug.Log(list_ini.Count);
                     foreach (triangle t in list_ini)
                     {
                         triangles.Add(t);
                     }
                     //triangles = list_ini;
                     break;
                 }
                 list_ini.RemoveAt(0);
             }
         }
         Debug.Log(triangles.Count);
         hecho = true;
         graph gf = createGraph();
         Debug.Log(gf.connections.Count);
     }
 }
Esempio n. 15
0
        public int getNumberOfValidSquare(string list)
        {
            int count = 0;

            int[]    lengths = new int[3];
            triangle tri;

            string[] o;
            o       = list.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            lengths = Array.ConvertAll(o, s => int.Parse(s));
            tri     = new triangle(lengths);
            if (tri.isValidTriangle())
            {
                count++;
            }

            return(count);
        }
Esempio n. 16
0
 private void Tri_MouseDown(object sender, MouseButtonEventArgs e)
 {
     SelectTriangle = (triangle)sender;
     if (SelectOne == false)
     {
         SelectOne     = true;
         CordinateOneX = SelectTriangle.CordinateX;
         CordinateOneY = SelectTriangle.CordinateY;
         TypeOne       = "triangle";
     }
     else if (SelectOne == true)
     {
         SelectTwo     = true;
         CordinateTwoX = SelectTriangle.CordinateX;
         CordinateTwoY = SelectTriangle.CordinateY;
         TypeTwo       = "triangle";
     }
 }
Esempio n. 17
0
            public bool DequeueAdjacentTriangle(HashSet <Vector3> usedPositions, out triangle t)
            {
                t = Triangles.Dequeue();
                var gp0 = _positions[t.I0];
                var gp1 = _positions[t.I1];
                var gp2 = _positions[t.I2];

                if (usedPositions.Any())
                {
                    if (!usedPositions.Contains(gp0) && !usedPositions.Contains(gp1) && !usedPositions.Contains(gp2))
                    {
                        Triangles.Enqueue(t);
                        return(false);
                    }
                }
                usedPositions.Add(gp0);
                usedPositions.Add(gp1);
                usedPositions.Add(gp2);
                return(true);
            }
Esempio n. 18
0
        //FUNC
        void DrawTriangle(triangle t, bool points, bool lines)
        {
            int             x1    = Convert.ToInt32(t.vect[0].x);
            int             y1    = Convert.ToInt32(t.vect[0].y);
            int             x2    = Convert.ToInt32(t.vect[1].x);
            int             y2    = Convert.ToInt32(t.vect[1].y);
            int             x3    = Convert.ToInt32(t.vect[2].x);
            int             y3    = Convert.ToInt32(t.vect[2].y);
            SolidColorBrush color = getColor(t.luminosity);

            System.Windows.Shapes.Polygon tri = new System.Windows.Shapes.Polygon();
            tri.Fill = color;
            if (lines)
            {
                tri.Stroke = System.Windows.Media.Brushes.Red;
            }
            else
            {
                tri.Stroke = color;
            }
            tri.Points.Add(new System.Windows.Point(x1, y1));
            tri.Points.Add(new System.Windows.Point(x2, y2));
            tri.Points.Add(new System.Windows.Point(x3, y3));
            canvas.Children.Add(tri);
            if (points)
            {
                foreach (var i in t.vect)
                {
                    Ellipse circle = new Ellipse();
                    circle.Margin = new Thickness(i.x, i.y, 0, 0);
                    circle.Width  = 5;
                    circle.Height = 5;
                    circle.Fill   = System.Windows.Media.Brushes.Blue;
                    if (!canvas.Children.Contains(circle))
                    {
                        canvas.Children.Add(circle);
                    }
                }
            }
        }
Esempio n. 19
0
        public static shape CreateShape(string s)
        {
            shape sp = null;

            switch (s)
            {
            case "三角形":
                sp = new triangle(2, 3, 4);
                break;

            case "矩形":
                sp = new rectangle(3, 4);
                break;

            case "正方形":
                sp = new square(5);
                break;

            default:
                throw new Exception("参数错误");
            }
            return(sp);
        }
Esempio n. 20
0
    public static shape generateRandomShape(int seed)
    {
        Random rd    = new Random(seed);
        int    key   = rd.Next(0, 3);
        shape  shape = null;

        Console.Write(key);
        switch (key)
        {
        case 0:
            shape = new square(rd.NextDouble() + rd.Next(0, 10));
            Console.WriteLine("正方形"); break;

        case 1:
            shape = new triangle(rd.NextDouble() + rd.Next(2, 5), rd.NextDouble() + rd.Next(2, 5), rd.NextDouble() + rd.Next(2, 5));
            Console.WriteLine("三角形"); break;

        case 2:
            shape = new rectangle(rd.NextDouble() + rd.Next(0, 10), rd.NextDouble() + rd.Next(0, 10));
            Console.WriteLine("矩形"); break;
        }
        return(shape);
    }
Esempio n. 21
0
    public static void Main()
    {
        List<int> squares = new List<int>();
        List<int> perims = new List<int>();
        triangle[] triangle= new triangle[1000];
        int perimeter=0;
        int trianglecount=0;
        Stopwatch sw = new Stopwatch();

        sw.Start();
        for (int i=1;i<=1000;i++)
        squares.Add((i*i));

        for (int a=1;a<1000;a++)
        for (int b=1;b<1000;b++)
        {
            if (a>b)
                continue;
            int test = a*a + b*b;
            if (squares.IndexOf(test)==-1)
                continue;
            perimeter=a+b+(int)Math.Sqrt(test);
            if (perimeter>1000)
                continue;
            trianglecount++;
            perims.Add(perimeter);
            Console.WriteLine("Perimeter {0}  Side A {1} B {2}  C {3}",perimeter,a,b,(Math.Sqrt(test)));
        }
        perims.Sort();
        Console.WriteLine("triangles {0}",trianglecount);

        var mode = perims.GroupBy(n=> n).
        OrderByDescending(g=> g.Count()).
        Select(g => g.Key).FirstOrDefault();
        sw.Stop();
        Console.WriteLine("Answer is {0}. Elapsed time {1} ms",mode,sw.ElapsedMilliseconds);
    }
Esempio n. 22
0
        private void timerTick(object sender, EventArgs e)
        {
            canvas.Children.Clear();

            double deltaX = 0.2;
            double fDelta = 2 * Math.PI / (4 * r / deltaX);

            fTheta += fDelta;
            matrix4x4 matRotZ = getMatrixRotationZ(0);
            matrix4x4 matRotX = getMatrixRotationX(0);
            matrix4x4 matRotY = getMatrixRotationY(fTheta);

            if (Math.Abs(x) >= r)
            {
                isHalfRotated = !isHalfRotated;
            }
            x += isHalfRotated ? deltaX : -deltaX;


            double z = isHalfRotated ? -Math.Sqrt(r * r - x * x) : Math.Sqrt(r * r - x * x);

            z += 4 * r;


            matrix4x4 matTrans = getMatrixTranslation(x, 1, z);;


            // all the transformations that we need to do in this matrix
            matrix4x4 matWorld = createUnitMatrix();

            matWorld = matRotZ * matRotX * matRotY;
            matWorld = matWorld * matTrans;

            //camera
            vect3D    vUp          = new vect3D(0, 1, 0);
            vect3D    vTarget      = new vect3D(0, 0, 1);
            matrix4x4 matCameraRot = getMatrixRotationY(fYaw) * getMatrixRotationX(fXaw);

            vLookDir = matCameraRot * vTarget;
            vTarget  = vCamera + vLookDir;
            matrix4x4 matCamera = matrixPointAt(vCamera, vTarget, vUp);
            matrix4x4 matView   = matrixQuickInverse(matCamera);

            List <triangle> trianglesToRaster = new List <triangle>();

            foreach (triangle tri in meshCube.tris)
            {
                triangle triProjected   = new triangle();
                triangle triTransformed = new triangle();
                triangle triViewed      = new triangle();
                triTransformed.vect[0] = matWorld * tri.vect[0];
                triTransformed.vect[1] = matWorld * tri.vect[1];
                triTransformed.vect[2] = matWorld * tri.vect[2];

                vect3D normal = new vect3D();
                vect3D line1  = new vect3D();
                vect3D line2  = new vect3D();

                line1 = triTransformed.vect[1] - triTransformed.vect[0];
                line2 = triTransformed.vect[2] - triTransformed.vect[0];

                normal = line1.CrossProduct(line2);
                normal.Normalize();

                //projecting

                // объект виден если угол между нормалью к нему и нашей камерой меньше 90 градусов
                // будем проверять это с помощью скалярного произведения векторов
                // скалярное произведение векторов угол между которыми > 90 градусов будет < 0
                if (normal.DotProduct(triTransformed.vect[0] - vCamera) < 0.0)
                {
                    // illumination (all illumination cooming from direction, not from the point)
                    // свет тем ярче чем меньше угол между нормалью поверхности с направлением света
                    vect3D lightDirection = new vect3D(-5.0, -5.0, -5.0);
                    lightDirection.Normalize();

                    double dp = normal.DotProduct(lightDirection);
                    triProjected.luminosity   = dp;
                    triTransformed.luminosity = dp;

                    triViewed.vect[0] = matView * triTransformed.vect[0];
                    triViewed.vect[1] = matView * triTransformed.vect[1];
                    triViewed.vect[2] = matView * triTransformed.vect[2];

                    triProjected.vect[0] = matProj * triViewed.vect[0];
                    triProjected.vect[1] = matProj * triViewed.vect[1];
                    triProjected.vect[2] = matProj * triViewed.vect[2];

                    triProjected.vect[0] = triProjected.vect[0] / triProjected.vect[0].w;
                    triProjected.vect[1] = triProjected.vect[1] / triProjected.vect[1].w;
                    triProjected.vect[2] = triProjected.vect[2] / triProjected.vect[2].w;

                    //offset into visible mormalized space
                    vect3D vOffsetView = new vect3D(1, 1, 0);

                    triProjected.vect[0] = triProjected.vect[0] + vOffsetView;
                    triProjected.vect[1] = triProjected.vect[1] + vOffsetView;
                    triProjected.vect[2] = triProjected.vect[2] + vOffsetView;

                    triProjected.vect[0].x *= canvas.Width / 2.0;
                    triProjected.vect[0].y *= canvas.Height / 2.0;
                    triProjected.vect[1].x *= canvas.Width / 2.0;
                    triProjected.vect[1].y *= canvas.Height / 2.0;
                    triProjected.vect[2].x *= canvas.Width / 2.0;
                    triProjected.vect[2].y *= canvas.Height / 2.0;

                    trianglesToRaster.Add(triProjected);
                }
            }
            // Sort triangles from back to front
            try {
                trianglesToRaster.Sort();
            }
            catch (Exception ex)
            {
            }
            foreach (triangle t in trianglesToRaster)
            {
                DrawTriangle(t, true, true);
            }
        }
Esempio n. 23
0
    /// <summary>
    /// Generate an icosahedron mesh
    /// </summary>
    /// <returns>New mesh to be added to a GameObject</returns>
    private Mesh BuildMesh()
    {
        var mesh = new Mesh();

        // create 12 vertices of a icosahedron
        var t = (1.0f + Mathf.Sqrt(5.0f)) / 2.0f;

        var vertices = new List <Vector3>(12);
        var uvs      = new List <Vector2>(12);

        vertices.Add(SmoothCurve(-1, t, 0));
        vertices.Add(SmoothCurve(1, t, 0));
        vertices.Add(SmoothCurve(-1, -t, 0));
        vertices.Add(SmoothCurve(1, -t, 0));

        vertices.Add(SmoothCurve(0, -1, t));
        vertices.Add(SmoothCurve(0, 1, t));
        vertices.Add(SmoothCurve(0, -1, -t));
        vertices.Add(SmoothCurve(0, 1, -t));

        vertices.Add(SmoothCurve(t, 0, -1));
        vertices.Add(SmoothCurve(t, 0, 1));
        vertices.Add(SmoothCurve(-t, 0, -1));
        vertices.Add(SmoothCurve(-t, 0, 1));

        uvs.Add(new Vector2(0.5f, 0.5f));
        uvs.Add(new Vector2(0, 0));
        uvs.Add(new Vector2(0, 0));
        uvs.Add(new Vector2(0, 0));

        uvs.Add(new Vector2(0f, 0.2f));
        uvs.Add(new Vector2(0, 0));
        uvs.Add(new Vector2(0, 0));
        uvs.Add(new Vector2(0, 0));

        uvs.Add(new Vector2(0, 0));
        uvs.Add(new Vector2(0, 0));
        uvs.Add(new Vector2(0, 0));
        uvs.Add(new Vector2(0.5f, 0.2f));

        triangle[] triangles =
        {
            // 5 faces around point 0
            new triangle(0,  11,  5),
            new triangle(0,   5,  1),
            new triangle(0,   1,  7),
            new triangle(0,   7, 10),
            new triangle(0,  10, 11),

            // 5 adjacent faces
            new triangle(1,   5,  9),
            new triangle(5,  11,  4),
            new triangle(11, 10,  2),
            new triangle(10,  7,  6),
            new triangle(7,   1,  8),

            // 5 faces around point 3
            new triangle(3,   9,  4),
            new triangle(3,   4,  2),
            new triangle(3,   2,  6),
            new triangle(3,   6,  8),
            new triangle(3,   8,  9),

            // 5 adjacent faces
            new triangle(4,   9,  5),
            new triangle(2,   4, 11),
            new triangle(6,   2, 10),
            new triangle(8,   6,  7),
            new triangle(9,   8, 1)
        };

        for (int i = 0; i < recursionLevel; i++)
        {
            var newTriangles = new List <triangle>();

            foreach (var face in triangles)
            {
                var AB = GetMiddlePoint(vertices[face.A], vertices[face.B]);
                vertices.Add(SmoothCurve(AB));
                int ab = vertices.Count - 1;

                var BC = GetMiddlePoint(vertices[face.B], vertices[face.C]);
                vertices.Add(SmoothCurve(BC));
                int bc = vertices.Count - 1;

                var CA = GetMiddlePoint(vertices[face.C], vertices[face.A]);
                vertices.Add(SmoothCurve(CA));
                int ca = vertices.Count - 1;

                var tri = new triangle(face.A, ab, ca);

                newTriangles.Add(tri);

                newTriangles.Add(new triangle(face.B, bc, ab));
                newTriangles.Add(new triangle(face.C, ca, bc));
                newTriangles.Add(new triangle(ab, bc, ca));
            }

            triangles = newTriangles.ToArray();
        }

        mesh.vertices  = vertices.ToArray();
        mesh.triangles = ConvertToMeshFilterTriangles(triangles);

        return(mesh);
    }
Esempio n. 24
0
        static void Main(string[] args)
        {
            var MyMenu = new Menu();

            //Reads string into Menu._MenuOptionList[firstemptyindex]
            //
            //in simpler terms, build your menu
            MyMenu.MenuOptionAdd("3) Calculate the area of a triangle.", 3);
            MyMenu.MenuOptionAdd("Choose from the following options", 0);
            MyMenu.MenuOptionAdd("1) Circles and circular shapes.", 1);
            MyMenu.MenuOptionAdd("2) Calculate the area of a square or rectangle.", 2);
            MyMenu.MenuOptionAdd("4) Open an OpenGL Window.", 4);

            int showMenu = 1;

            while (showMenu > 0)
            {
                //When showMenu returns a 0, then Program stops
                showMenu = MyMenu.ShowMenu();

                switch (showMenu)
                {
                case 1:
                    var docircles = new circle();
                    docircles.CircleMenu();
                    break;

                case 2:
                    var myRectangleArea = new rectangle();
                    var rectarea        = myRectangleArea.Area();
                    if (rectarea > 0.00)
                    {
                        Console.WriteLine($"The area of your rectangle or square is: {rectarea}");
                    }
                    else
                    {
                        Console.WriteLine("Something went wrong. Sorry, quitting.");
                    }
                    break;

                case 3:
                    var myTriangleArea = new triangle();
                    var triarea        = myTriangleArea.Area();
                    if (triarea > 0.00)
                    {
                        Console.WriteLine($"The area of your triangle is: {triarea}");
                    }
                    else
                    {
                        Console.WriteLine("Something went wrong. Sorry, quitting.");
                    }
                    break;

                case 4:
                    var win = new Window(600, 600);
                    win.Run(1, 10);
                    break;

                default:
                    Console.Clear();
                    System.Environment.Exit(0);
                    break;
                }
                Console.WriteLine("Press any key to return to main menu");
                Console.ReadKey();
            }

            /* TODO:
             *
             *  Add more math classes/methods
             *
             *
             */
        }
Esempio n. 25
0
 public void visit(triangle t)
 {
     num.numTriangle += 1;
 }
Esempio n. 26
0
 public void visit(triangle t)
 {
     t.a /= 2;
     t.b /= 2;
     t.c /= 2;
 }
Esempio n. 27
0
 public void Enqueue(triangle t)
 {
     _que.Enqueue(t);
 }
Esempio n. 28
0
        private void filling_the_board()
        {
            int    s = 50;
            double x = 0.0;
            int    f = -1;

NEW:
            f++;

            if (f == 8)
            {
                x = x + 50;
                s = 50;
            }
            if (f == 16)
            {
                x = x + 50;
                s = 50;
            }
            if (f == 24)
            {
                x = x + 50;
                s = 50;
            }
            if (f == 32)
            {
                x = x + 50;
                s = 50;
            }
            if (f == 40)
            {
                x = x + 50;
                s = 50;
            }
            if (f == 48)
            {
                x = x + 50;
                s = 50;
            }
            if (f == 56)
            {
                x = x + 50;
                s = 50;
            }
            if (f >= 64)
            {
                goto Exit;
            }
            Storyboard      down            = new Storyboard();
            DoubleAnimation doubleAnimation = new DoubleAnimation();

            doubleAnimation.To       = game_board.Height - s;
            doubleAnimation.Duration = TimeSpan.FromSeconds(0.5);
            Random r = new Random(f + Environment.TickCount - Environment.ProcessorCount - (int)x);

            switch (r.Next(1, 16))
            {
            case 1:
                cercle cer = new cercle();
                cer.SetValue(Canvas.LeftProperty, x);
                cer.SetValue(Canvas.TopProperty, (double)s);
                game_board.Children.Add(cer);
                Storyboard.SetTarget(doubleAnimation, cer);
                Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Top)"));
                down.Children.Add(doubleAnimation);
                down.Duration  = doubleAnimation.Duration;
                cer.CordinateX = Canvas.GetLeft(cer);
                cer.CordinateY = Canvas.GetTop(cer);
                cer.MouseDown += Cer_MouseDown;
                down.Begin();
                s = s + 50;
                goto NEW;

            case 9: goto case 1;

            case 11: goto case 1;

            case 2:
                hexagon hex = new hexagon();
                hex.SetValue(Canvas.LeftProperty, x);
                hex.SetValue(Canvas.TopProperty, (double)s);
                game_board.Children.Add(hex);
                Storyboard.SetTarget(doubleAnimation, hex);
                Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Top)"));
                down.Children.Add(doubleAnimation);
                down.Duration  = doubleAnimation.Duration;
                hex.CordinateX = Canvas.GetLeft(hex);
                hex.CordinateY = Canvas.GetTop(hex);
                hex.MouseDown += Hex_MouseDown;
                down.Begin();
                s = s + 50;
                goto NEW;

            case 7: goto case 2;

            case 15: goto case 2;

            case 3:
                pentahedron pent = new pentahedron();
                pent.SetValue(Canvas.LeftProperty, x);
                pent.SetValue(Canvas.TopProperty, (double)s);
                game_board.Children.Add(pent);
                Storyboard.SetTarget(doubleAnimation, pent);
                Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Top)"));
                down.Children.Add(doubleAnimation);
                down.Duration   = doubleAnimation.Duration;
                pent.CordinateX = Canvas.GetLeft(pent);
                pent.CordinateY = Canvas.GetTop(pent);
                pent.MouseDown += Pent_MouseDown;
                down.Begin();
                s = s + 50;
                goto NEW;

            case 6: goto case 3;

            case 10: goto case 3;

            case 4:
                square squ = new square();
                squ.SetValue(Canvas.LeftProperty, x);
                squ.SetValue(Canvas.TopProperty, (double)s);
                game_board.Children.Add(squ);
                Storyboard.SetTarget(doubleAnimation, squ);
                Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Top)"));
                down.Children.Add(doubleAnimation);
                down.Duration  = doubleAnimation.Duration;
                squ.CordinateX = Canvas.GetLeft(squ);
                squ.CordinateY = Canvas.GetTop(squ);
                squ.MouseDown += Squ_MouseDown;
                down.Begin();


                s = s + 50;
                goto NEW;

            case 8: goto case 4;

            case 13: goto case 4;

            case 5:
                triangle tri = new triangle();
                tri.SetValue(Canvas.LeftProperty, x);
                tri.SetValue(Canvas.TopProperty, (double)s);
                game_board.Children.Add(tri);
                Storyboard.SetTarget(doubleAnimation, tri);
                Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Top)"));
                down.Children.Add(doubleAnimation);
                down.Duration  = doubleAnimation.Duration;
                tri.CordinateX = Canvas.GetLeft(tri);
                tri.CordinateY = Canvas.GetTop(tri);
                tri.MouseDown += Tri_MouseDown;
                down.Begin();
                s = s + 50;
                goto NEW;

            case 14: goto case 5;

            case 12: goto case 5;
            }
Exit:
            ;
        }
Esempio n. 29
0
 private triangle GetNextTriangle()
 {
     if (isASCII)
     {
         if (sr.EndOfStream)
         {
             return(null);
         }
         try
         {
             string[] facet = sr.ReadLine().Trim().Split(' ');
             if (facet.Length != 5 || facet[0] != "facet" || facet[1] != "normal")
             {
                 return(null);
             }
             if (!double.TryParse(facet[2], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double nx))
             {
                 return(null);
             }
             if (!double.TryParse(facet[3], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double ny))
             {
                 return(null);
             }
             if (!double.TryParse(facet[4], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double nz))
             {
                 return(null);
             }
             accumulatePrecision(facet[2], facet[3], facet[4]);
             if (sr.ReadLine().Trim() != "outer loop")
             {
                 return(null);
             }
             string[] vertex = sr.ReadLine().Trim().Split(' ');
             if (vertex.Length != 4 || vertex[0] != "vertex")
             {
                 return(null);
             }
             if (!double.TryParse(vertex[1], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double p1x))
             {
                 return(null);
             }
             if (!double.TryParse(vertex[2], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double p1y))
             {
                 return(null);
             }
             if (!double.TryParse(vertex[3], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double p1z))
             {
                 return(null);
             }
             accumulatePrecision(vertex[1], vertex[2], vertex[3]);
             vertex = sr.ReadLine().Trim().Split(' ');
             if (vertex.Length != 4 || vertex[0] != "vertex")
             {
                 return(null);
             }
             if (!double.TryParse(vertex[1], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double p2x))
             {
                 return(null);
             }
             if (!double.TryParse(vertex[2], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double p2y))
             {
                 return(null);
             }
             if (!double.TryParse(vertex[3], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double p2z))
             {
                 return(null);
             }
             accumulatePrecision(vertex[1], vertex[2], vertex[3]);
             vertex = sr.ReadLine().Trim().Split(' ');
             if (vertex.Length != 4 || vertex[0] != "vertex")
             {
                 return(null);
             }
             if (!double.TryParse(vertex[1], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double p3x))
             {
                 return(null);
             }
             if (!double.TryParse(vertex[2], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double p3y))
             {
                 return(null);
             }
             if (!double.TryParse(vertex[3], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double p3z))
             {
                 return(null);
             }
             accumulatePrecision(vertex[1], vertex[2], vertex[3]);
             if (sr.ReadLine().Trim() != "endloop")
             {
                 return(null);
             }
             if (sr.ReadLine().Trim() != "endfacet")
             {
                 return(null);
             }
             triangle res = new triangle(new GeoPoint(p1x, p1y, p1z), new GeoPoint(p2x, p2y, p2z), new GeoPoint(p3x, p3y, p3z), new GeoVector(nx, ny, nz));
             return(res);
         }
         catch (IOException)
         {
             return(null);
         }
     }
     else
     {
         if (br.BaseStream.Position >= br.BaseStream.Length)
         {
             return(null);
         }
         try
         {
             GeoVector normal = new GeoVector(br.ReadSingle(), br.ReadSingle(), br.ReadSingle());
             GeoPoint  p1     = new GeoPoint(br.ReadSingle(), br.ReadSingle(), br.ReadSingle());
             GeoPoint  p2     = new GeoPoint(br.ReadSingle(), br.ReadSingle(), br.ReadSingle());
             GeoPoint  p3     = new GeoPoint(br.ReadSingle(), br.ReadSingle(), br.ReadSingle());
             int       attr   = br.ReadUInt16();
             triangle  res    = new triangle(p1, p2, p3, normal);
             return(res);
         }
         catch (EndOfStreamException)
         {
             return(null);
         }
     }
 }
Esempio n. 30
0
        private void TriBtn_Click(object sender, EventArgs e)
        {
            triangle triangleForm = new triangle();

            triangleForm.Show();
        }
Esempio n. 31
0
        /// <summary>
        /// Import SMD model
        /// </summary>
        public void Import(string filepath)
        {
            try
            {
                if (!File.Exists(filepath))
                {
                    System.Windows.MessageBox.Show("Model importer: " + Path.GetFileName(filepath) + " file does not exist");
                    return;
                }

                this.FilePath = filepath;

                List <String> lines = new List <string>();

                string   line;
                string[] args;
                System.IO.StreamReader file = new System.IO.StreamReader(filepath);
                while ((line = file.ReadLine()) != null)
                {
                    // add line to list, while removing double spaces and trim start/end
                    lines.Add(Regex.Replace(line, @"\s+", " ").Trim()); //Regex.Replace(line, " +", " ")
                }

                file.Close();

                for (int i = 0; i < lines.Count; i++)
                {
                    string l = lines[i].ToLower();
                    if (string.IsNullOrEmpty(l))
                    {
                        continue;
                    }

                    if (l.Contains("version"))
                    {
                        this.version = Convert.ToInt16(l.Split(' ')[1]);
                    }

                    #region nodes

                    if (l.Contains("nodes"))
                    {
                        i++; // next line
                        l = lines[i].ToLower();
                        while (l != "end")
                        {
                            args = lines[i].Split(' ');//(Regex.Replace(lines[i], @"\s+", " ").Trim()).Split(' ');

                            // if number objects inferior to what we expect, return
                            // TODO throw an exception
                            if (args.Length < 3)
                            {
                                System.Windows.MessageBox.Show("SMD Importer Error: unexpected number of node definition arguments.");
                                return;
                            }
                            nodes.Add(new node(Convert.ToInt32(args[0]), Convert.ToInt32(args[2]), args[1].Replace("\"", string.Empty)));
                            i++;
                            l = lines[i];
                        }
                    }

                    #endregion

                    #region skeleton

                    if (l.Contains("skeleton"))
                    {
                        while (!l.ToLower().StartsWith("time "))
                        {
                            i++;
                            l = lines[i];
                        }

                        if (l.Split(' ')[1] == "0")
                        {
                            i++; l = lines[i];


                            while (l.ToLower() != "end")
                            {
                                args = l.Split(' ');
                                // if number objects inferior to what we expect, return
                                // TODO throw an exception
                                if (args.Length < 6)
                                {
                                    System.Windows.MessageBox.Show("SMD Importer Error: unexpected number of skeleton definition arguments.");
                                    return;
                                }

                                skeleton_nodes.Add(new skeleton_node(args[0], new Vector3(args[1], args[2], args[3]), new Vector3(args[4], args[5], args[6])));

                                i++; l = lines[i];
                            }
                        }
                        else
                        {
                            System.Windows.MessageBox.Show("SMD Importer Error: could not find skeleton definition for 'time 0'.");
                        }
                    }

                    #endregion

                    #region get triangles

                    // triangles
                    if (l.Contains("triangles"))
                    {
                        // for each triangle
                        for (int t = i + 1; t < lines.Count; t += 4)
                        {
                            triangle tri = new triangle();
                            tri.mat_name = lines[t];

                            #region get vertices in this triangle

                            // for each triangle
                            for (int v = 1; v < 4; v++)
                            {
                                // split string into string array for each space char sperator
                                args = lines[t + v].Split(' ');

                                if (args[0] == "end")
                                {
                                    break;
                                }

                                // if number objects inferior to what we expect, return
                                // TODO throw an exception
                                if (args.Length < 10)
                                {
                                    System.Windows.MessageBox.Show("SMD Importer Error: unexpected number of vertex definition arguments (" + args.Length + ") \nIn triangle at line number " + t);
                                    return;
                                }

                                // load values into vertex class
                                vertex vtx = new vertex();
                                vtx.parent_bone = Convert.ToInt32(args[0]);
                                vtx.pos         = new Vector3(args[1], args[2], args[3]);
                                vtx.norm        = new Vector3(args[4], args[5], args[6]);
                                vtx.uv          = new Vector2(args[7], args[8]);

                                // for each bone assigned to this vertex ( *2 two args bone_id/weight )
                                int vtx_weight_count = Convert.ToInt16(args[9]) * 2;

                                // for each bone weighted to this vertex
                                for (int w = 0; w < vtx_weight_count; w += 2)
                                {
                                    vtx.bone_weights.Add(new bone_weight(Convert.ToInt32(args[10 + w]), Convert.ToSingle(args[11 + w])));
                                }


                                // add vertex data to triangle object
                                tri.verts.Add(vtx);
                            }

                            #endregion
                            // add triangle to list
                            SMD_triangles.Add(tri);
                        }
                    }
                    #endregion
                }
            }
            catch { }
        }
Esempio n. 32
0
        //---
        protected void addInsertItem(int ind)
        {
            Item ob = new Item();
            int  sw = comboBoxItems.SelectedIndex;

            switch (sw)
            {
            case 0:
                ob = new point();
                break;

            case 1:
                ob = new mLine();
                break;

            case 2:
                ob = new circle();
                break;

            case 3:
                ob = new ellipse();
                break;

            case 4:
                ob = new triangle();
                break;

            case 5:
                ob = new rectangle();
                break;

            case 6:
                ob = new roundRect();
                break;

            case 7:
                ob = new polygon();
                break;

            case 8:
                ob = new arc();
                break;

            case 9:
                ob = new color();
                break;

            default:

                break;
            }

            if (ind < 0)
            {
                if (listBoxIcons.SelectedIndex < 0)
                {
                    return;
                }
                icons[listBoxIcons.SelectedIndex].add(ob);
                listBoxItems.SelectedIndex = listBoxItems.Items.Count - 1;
            }
            else
            {
                icons[listBoxIcons.SelectedIndex].insert(ind, ob);
                listBoxItems.SelectedIndex = ind;
            }
        }