Пример #1
0
        void Button6MouseClick(object sender, MouseEventArgs e)
        {
            OpenFileDialog load = new OpenFileDialog();

            load.ShowDialog();
            if (!load.CheckFileExists)
            {
                MessageBox.Show("Choose File");
                return;
            }

            string[] lines = File.ReadAllLines(load.FileName);
            for (int i = 0; i < lines.Length; i++)
            {
                string[] p  = lines[i].Split(':');
                var      ee = new edges();
                for (int j = 0; j < p.Length; j++)
                {
                    string   s   = p[j].TrimStart(' ');
                    string[] xyz = s.Split(' ');
                    var      x   = Double.Parse(xyz[0]);
                    var      y   = Double.Parse(xyz[1]);
                    var      z   = Double.Parse(xyz[2]);
                    ee.add(new point3D(x, y, z));
                }
                figure.Add(ee);
            }
            fillPoints();
            imDraw();
        }
Пример #2
0
        void Button7MouseClick(object sender, MouseEventArgs e)
        {
            pts++;
            if (pts < 2)
            {
                return;
            }
            pts = 0;
            double st    = Int32.Parse(textBox5.Text);
            double angle = ((360.0 / st) * Math.PI) / 180;

            for (int i = 0; i < st; i++)
            {
                rFig.Add(new List <point3D>());
                for (int j = 0; j < rFig[i].Count; j++)
                {
                    rFig[i + 1].Add(axRp(P1, P2, rFig[i][j], angle));
                }
            }

            for (int i = 0; i < rFig.Count - 1; i++)
            {
                for (int j = 0; j < rFig[i].Count - 1; j++)
                {
                    var ee = new edges();
                    ee.add(rFig[i][j]);
                    ee.add(rFig[i][j + 1]);
                    ee.add(rFig[i + 1][j + 1]);
                    ee.add(rFig[i + 1][j]);
                    figure.Add(ee);
                }
            }
            fillPoints();
            imDraw();
        }
Пример #3
0
        void tetrahedron()
        {
            var p1 = new point3D(-100, -100 / 2, 0);
            var p2 = new point3D(0, -100 / 2, -100);
            var p3 = new point3D(100, -100 / 2, 0);
            var p4 = new point3D(0, 100 / 2, 0);

            var f1 = new edges();
            var f2 = new edges();
            var f3 = new edges();
            var f4 = new edges();

            f1.add(p1);
            f1.add(p2);
            f1.add(p3);

            f2.add(p1);
            f2.add(p4);
            f2.add(p2);

            f3.add(p4);
            f3.add(p2);
            f3.add(p3);

            f4.add(p1);
            f4.add(p4);
            f4.add(p3);

            figure.Add(f1);
            figure.Add(f2);
            figure.Add(f3);
            figure.Add(f4);
        }
Пример #4
0
        void cube()
        {
            var p1 = new point3D(-100, -100, -100);
            var p2 = new point3D(-100, 100, -100);
            var p3 = new point3D(100, 100, -100);
            var p4 = new point3D(100, -100, -100);
            var p5 = new point3D(-100, -100, 100);
            var p6 = new point3D(-100, 100, 100);
            var p7 = new point3D(100, 100, 100);
            var p8 = new point3D(100, -100, 100);

            var f1 = new edges();
            var f2 = new edges();
            var f3 = new edges();
            var f4 = new edges();
            var f5 = new edges();
            var f6 = new edges();

            f1.add(p1);
            f1.add(p2);
            f1.add(p3);
            f1.add(p4);

            f2.add(p1);
            f2.add(p2);
            f2.add(p6);
            f2.add(p5);

            f3.add(p5);
            f3.add(p6);
            f3.add(p7);
            f3.add(p8);

            f4.add(p4);
            f4.add(p3);
            f4.add(p7);
            f4.add(p8);

            f5.add(p2);
            f5.add(p6);
            f5.add(p7);
            f5.add(p3);

            f6.add(p1);
            f6.add(p5);
            f6.add(p8);
            f6.add(p4);

            figure.Add(f1);
            figure.Add(f2);
            figure.Add(f3);
            figure.Add(f4);
            figure.Add(f5);
            figure.Add(f6);
        }
Пример #5
0
        void Button8MouseClick(object sender, MouseEventArgs e)
        {
            fnc f = sumq;

            switch (comboBox4.SelectedIndex)
            {
            case 0:
                break;

            case 2:
                f = minq;
                break;
            }

            int x1 = Int32.Parse(this.x1.Text);
            int y1 = Int32.Parse(this.y1.Text);
            int x2 = Int32.Parse(this.x2.Text);
            int y2 = Int32.Parse(this.y2.Text);
            int st = Int32.Parse(this.step.Text);

            int i = x1;
            int j = y1;

            int ky = (y2 - y1) / st + 1;
            int kx = (x2 - x1) / st + 1;

            while (i <= x2)
            {
                j = y1;
                while (j <= y2)
                {
                    points.Add(new point3D(i, j, f(i, j)));
                    j += st;
                }
                i += st;
            }

            for (int ii = 0; ii < ky - 1; ii++)
            {
                for (int jj = 0; jj < kx - 1; jj++)
                {
                    var edg = new edges();
                    edg.add(points[ky * ii + jj]);
                    edg.add(points[ky * ii + jj + 1]);
                    edg.add(points[ky * (ii + 1) + jj + 1]);
                    edg.add(points[ky * (ii + 1) + jj]);
                    figure.Add(edg);
                }
            }
            fillPoints();
            imDraw();
        }
Пример #6
0
        void eDraw2(edges f)
        {
            int n = f.points.Count - 1;
            int x1 = (int)Math.Round(maxx - f.points[0].X + 25); int x2 = (int)Math.Round(maxx - f.points[n].X + 25);
            int y1 = (int)Math.Round(maxy - f.points[0].Y + 25); int y2 = (int)Math.Round(maxy - f.points[n].Y + 25);

            g.DrawLine(new Pen(Color.Black), x1, y1, x2, y2);

            for (int i = 0; i < n; i++)
            {
                x1 = (int)Math.Round(maxx - f.points[i].X + 25); x2 = (int)Math.Round(maxx - f.points[i + 1].X + 25);
                y1 = (int)Math.Round(maxy - f.points[i].Y + 25); y2 = (int)Math.Round(maxy - f.points[i + 1].Y + 25);
                g.DrawLine(new Pen(Color.Black), x1, y1, x2, y2);
            }
        }
Пример #7
0
        void Button1MouseClick(object sender, MouseEventArgs e)
        {
            var fNew = new List <edges>();

            switch (comboBox2.SelectedItem.ToString())
            {
            case "перспективная":
                int x = Int32.Parse(this.textBox4.Text);
                int y = Int32.Parse(this.textBox3.Text);
                int z = Int32.Parse(this.textBox2.Text);
                pMatr[0, 3] = 0;
                pMatr[1, 3] = 0;
                pMatr[2, 3] = 0;
                pMatr[0, 3] = -1 / x;
                pMatr[1, 3] = -1 / y;
                pMatr[2, 3] = -1 / z;
                pMatr[0, 0] = 1;
                pMatr[1, 1] = 1;
                foreach (edges f in figure)
                {
                    var f1 = new edges();
                    foreach (point3D pt in f.points)
                    {
                        double xx = pt.X * pMatr[0, 0] + pt.Y * pMatr[1, 0] + pt.Z * pMatr[2, 0] + pMatr[3, 0];
                        double yy = pt.X * pMatr[0, 1] + pt.Y * pMatr[1, 1] + pt.Z * pMatr[2, 1] + pMatr[3, 1];
                        double d  = pt.X * pMatr[0, 3] + pt.Y * pMatr[1, 3] + pt.Z * pMatr[2, 3] + pMatr[3, 3];
                        double t  = 1 / d;
                        xx *= t;
                        yy *= t;
                        f1.add(new point3D(xx, yy, 0));
                    }
                    fNew.Add(f1);
                }
                break;

            case "изометрическая":
                double rad = 120 * Math.PI / 180;
                double sin = Math.Sin(rad);
                double cos = Math.Cos(rad);
                iMatr[0, 0] = cos;
                iMatr[0, 1] = sin * sin;
                iMatr[1, 1] = cos;
                iMatr[2, 0] = sin;
                iMatr[2, 1] = -sin * cos;
                iMatr[3, 3] = 1;

                foreach (edges f in figure)
                {
                    var f1 = new edges();
                    foreach (point3D pt in f.points)
                    {
                        double xx = pt.X * iMatr[0, 0] + pt.Y * iMatr[1, 0] + pt.Z * iMatr[2, 0] + iMatr[3, 0];
                        double yy = pt.X * iMatr[0, 1] + pt.Y * iMatr[1, 1] + pt.Z * iMatr[2, 1] + iMatr[3, 1];

                        f1.add(new point3D(xx, yy, 0));
                    }
                    fNew.Add(f1);
                }
                break;

            case "ортографическая":
                oMatr[3, 3] = 1;
                switch (comboBox3.SelectedItem.ToString())
                {
                case "xy":
                    oMatr[0, 0] = 1;
                    oMatr[1, 1] = 1;
                    break;

                case "zx":
                    oMatr[0, 0] = 1;
                    oMatr[2, 2] = 1;
                    break;

                case "yz":
                    oMatr[1, 1] = 1;
                    oMatr[2, 2] = 1;
                    break;
                }
                foreach (edges f in figure)
                {
                    var f1 = new edges();
                    foreach (point3D pt in f.points)
                    {
                        double xx = pt.X * oMatr[0, 0] + pt.Y * oMatr[1, 0] + pt.Z * oMatr[2, 0] + oMatr[3, 0];
                        double yy = pt.X * oMatr[0, 1] + pt.Y * oMatr[1, 1] + pt.Z * oMatr[2, 1] + oMatr[3, 1];
                        double zz = pt.X * oMatr[0, 2] + pt.Y * oMatr[1, 2] + pt.Z * oMatr[2, 2] + oMatr[3, 2];

                        if (zz == 0)
                        {
                            f1.add(new point3D(xx, yy, 0));
                        }
                        else if (yy == 0)
                        {
                            f1.add(new point3D(xx, zz, 0));
                        }
                        else if (xx == 0)
                        {
                            f1.add(new point3D(yy, zz, 0));
                        }
                    }
                    fNew.Add(f1);
                }
                break;
            }

            for (int i = 0; i < 4; i++)
            {
                for (int j = 0; j < 4; j++)
                {
                    oMatr[i, j] = 0;
                }
            }
            var t3 = new Form2(fNew);

            t3.Show();
        }
Пример #8
0
        void octahedron()
        {
            double a = Math.Sqrt(3) * 100;
            double p = (a + a + (100 / 2)) / 2;
            double h = 2 * Math.Sqrt(p * (p - (100 / 2)) * (p - a) * (p - a)) / (100 / 2);

            var p1 = new point3D(0, -h, 0);
            var p2 = new point3D(-100, 0, -100);
            var p3 = new point3D(0, h, 0);
            var p4 = new point3D(100, 0, -100);
            var p5 = new point3D(-100, 0, 100);
            var p6 = new point3D(100, 0, 100);

            var f1 = new edges();
            var f2 = new edges();
            var f3 = new edges();
            var f4 = new edges();
            var f5 = new edges();
            var f6 = new edges();
            var f7 = new edges();
            var f8 = new edges();

            f1.add(p2);
            f1.add(p3);
            f1.add(p4);

            f2.add(p2);
            f2.add(p1);
            f2.add(p4);

            f3.add(p2);
            f3.add(p3);
            f3.add(p5);

            f4.add(p2);
            f4.add(p1);
            f4.add(p5);

            f5.add(p4);
            f5.add(p3);
            f5.add(p6);

            f6.add(p4);
            f6.add(p1);
            f6.add(p6);

            f7.add(p5);
            f7.add(p3);
            f7.add(p6);

            f8.add(p5);
            f8.add(p1);
            f8.add(p6);

            figure.Add(f1);
            figure.Add(f2);
            figure.Add(f3);
            figure.Add(f4);
            figure.Add(f5);
            figure.Add(f6);
            figure.Add(f7);
            figure.Add(f8);
        }
Пример #9
0
        void ikosaedr()
        {
            var p1  = new point3D(-100 * 1 / 2, 100, 0);
            var p2  = new point3D(100 * 1 / 2, 100, 0);
            var p3  = new point3D(0, 100 * 1 / 2, 100);
            var p4  = new point3D(0, -100 * 1 / 2, 100);
            var p5  = new point3D(-100 * 1 / 2, -100, 0);
            var p6  = new point3D(100 * 1 / 2, -100, 0);
            var p7  = new point3D(-100, 0, 100 * 1 / 2);
            var p8  = new point3D(-100, 0, -100 * 1 / 2);
            var p9  = new point3D(100, 0, 100 * 1 / 2);
            var p10 = new point3D(100, 0, -100 * 1 / 2);
            var p11 = new point3D(0, 100 * 1 / 2, -100);
            var p12 = new point3D(0, -100 * 1 / 2, -100);

            var f1  = new edges();
            var f2  = new edges();
            var f3  = new edges();
            var f4  = new edges();
            var f5  = new edges();
            var f6  = new edges();
            var f7  = new edges();
            var f8  = new edges();
            var f9  = new edges();
            var f10 = new edges();
            var f11 = new edges();
            var f12 = new edges();
            var f13 = new edges();
            var f14 = new edges();
            var f15 = new edges();
            var f16 = new edges();
            var f17 = new edges();
            var f18 = new edges();
            var f19 = new edges();
            var f20 = new edges();

            f1.add(p1);
            f1.add(p2);
            f1.add(p3);

            f2.add(p1);
            f2.add(p3);
            f2.add(p7);

            f3.add(p1);
            f3.add(p8);
            f3.add(p11);

            f4.add(p1);
            f4.add(p2);
            f4.add(p11);

            f5.add(p1);
            f5.add(p7);
            f5.add(p8);

            f6.add(p2);
            f6.add(p3);
            f6.add(p9);

            f7.add(p2);
            f7.add(p9);
            f7.add(p10);

            f8.add(p2);
            f8.add(p10);
            f8.add(p11);

            f9.add(p3);
            f9.add(p4);
            f9.add(p7);

            f10.add(p3);
            f10.add(p4);
            f10.add(p9);

            f11.add(p4);
            f11.add(p5);
            f11.add(p7);

            f12.add(p4);
            f12.add(p5);
            f12.add(p6);

            f13.add(p4);
            f13.add(p6);
            f13.add(p9);

            f14.add(p5);
            f14.add(p7);
            f14.add(p8);

            f15.add(p5);
            f15.add(p8);
            f15.add(p12);

            f16.add(p5);
            f16.add(p6);
            f16.add(p12);

            f17.add(p6);
            f17.add(p9);
            f17.add(p10);

            f18.add(p6);
            f18.add(p10);
            f18.add(p12);

            f19.add(p8);
            f19.add(p11);
            f19.add(p12);

            f20.add(p10);
            f20.add(p11);
            f20.add(p12);

            figure.Add(f1);
            figure.Add(f2);
            figure.Add(f3);
            figure.Add(f4);
            figure.Add(f5);
            figure.Add(f6);
            figure.Add(f7);
            figure.Add(f8);
            figure.Add(f9);
            figure.Add(f10);
            figure.Add(f11);
            figure.Add(f12);
            figure.Add(f13);
            figure.Add(f14);
            figure.Add(f15);
            figure.Add(f16);
            figure.Add(f17);
            figure.Add(f18);
            figure.Add(f19);
            figure.Add(f20);
        }