コード例 #1
0
        private void button9_Click(object sender, EventArgs e)
        {
            Flag_Edge = 1;
            string S;

            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                System.IO.StreamReader sr = new
                                            System.IO.StreamReader(openFileDialog1.FileName);

                while (!sr.EndOfStream)
                {
                    S = sr.ReadLine();
                    S.Trim();
                    //textBox1.Text = S.ToString();

                    string[] s = S.Split(',');
                    int      x, y;
                    int.TryParse(s[0], out x);
                    int.TryParse(s[1], out y);
                    cnode n = new cnode();
                    n.x = x;
                    n.y = y;
                    Edges.Add(n);
                    //listBox1.Items.Add(S.ToString());
                }
                sr.Close();
            }
            for (int i = 0; i < Edges.Count; i++)
            {
                cnode ptrv = (cnode)Edges[i];
                listBox4.Items.Add(ptrv.x.ToString());
                listBox4.Items.Add(ptrv.y.ToString());
            }
        }
コード例 #2
0
        void DrawScene(Graphics g)
        {
            Pen pe = new Pen(Color.Black);

            g.Clear(Color.Gray);
            for (int i = 0; i < points.Count; i++)
            {
                cnode ptrv = (cnode)points[i];

                g.FillEllipse(Brushes.Black, (float)ptrv.x, (float)ptrv.y, 5, 5);
            }

            if (Flag_Edge == 1)
            {
                for (int i = 0; i < Edges.Count; i++)
                {
                    cnode ptrv = (cnode)Edges[i];
                    cnode pt   = (cnode)points[(int)ptrv.x];
                    cnode pt2  = (cnode)points[(int)ptrv.y];
                    g.DrawLine(Pens.Black, (float)pt.x, (float)pt.y, (float)pt2.x, (float)pt2.y);

                    cnode ptm  = (cnode)Edges[driv];
                    cnode ptt  = (cnode)points[(int)ptm.x];
                    cnode ptt2 = (cnode)points[(int)ptm.y];
                    g.DrawLine(Pens.Yellow, (float)ptt.x, (float)ptt.y, (float)ptt2.x, (float)ptt2.y);
                }
            }
        }
コード例 #3
0
 private void button8_Click(object sender, EventArgs e)
 {
     for (int i = 0; i < points.Count; i++)
     {
         cnode  ptrv = (cnode)points[i];
         double z    = ptrv.z;
         double x    = ptrv.x;
         z      = (ptrv.z * Math.Cos(5 * Math.PI / 180) + ptrv.x * Math.Sin(5 * Math.PI / 180));
         x      = (ptrv.x * Math.Cos(5 * Math.PI / 180) - ptrv.z * Math.Sin(5 * Math.PI / 180));
         ptrv.z = z;
         ptrv.x = x;
     }
     DB();
 }
コード例 #4
0
        private void button6_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < points.Count; i++)
            {
                cnode ptrv = (cnode)points[i];

                double x = ptrv.x;
                double y = ptrv.y;
                x      = (ptrv.x * Math.Cos(5 * Math.PI / 180) - ptrv.y * Math.Sin(5 * Math.PI / 180));
                y      = (ptrv.y * Math.Cos(5 * Math.PI / 180) + ptrv.x * Math.Sin(5 * Math.PI / 180));
                ptrv.x = x;
                ptrv.y = y;
            }
            DB();
        }
コード例 #5
0
        private void button3_Click(object sender, EventArgs e)
        {
            flag = 1;
            string S;

            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                System.IO.StreamReader sr = new
                                            System.IO.StreamReader(openFileDialog1.FileName);
                int i = 0;
                while (!sr.EndOfStream)
                {
                    S = sr.ReadLine();
                    S.Trim();
                    //textBox1.Text = S.ToString();

                    string[] s = S.Split(',');
                    int      x, y, z;
                    int.TryParse(s[0], out x);
                    int.TryParse(s[1], out y);
                    int.TryParse(s[2], out z);
                    cnode n = new cnode();
                    n.x   = x;
                    n.y   = y;
                    n.z   = z;
                    n.dri = i;
                    points.Add(n);
                    i++;
                    //listBox1.Items.Add(S.ToString());
                }
                sr.Close();
            }
            for (int i = 0; i < points.Count; i++)
            {
                cnode ptrv = (cnode)points[i];
                //textBox1.Text = ptrv.x.ToString();
                ptrv.x += this.ClientSize.Width / 2;
                cnode n = new cnode();
                n.x = ptrv.x;
                n.y = ptrv.y;
                points2.Add(n);
                listBox1.Items.Add(ptrv.x.ToString());
                listBox2.Items.Add(ptrv.y.ToString());
                listBox3.Items.Add(ptrv.z.ToString());
            }
        }
コード例 #6
0
        private void button12_Click(object sender, EventArgs e)
        {
            cnode ptr = (cnode)Edges[driv];
            cnode pt  = (cnode)points[(int)ptr.x];
            cnode pt2 = (cnode)points[(int)ptr.y];
            //double Delta = Math.Sqrt(Math.Pow((pt2.y - pt.y), 2) + Math.Pow((pt2.x - pt.x), 2) + Math.Pow((pt2.z - pt.z), 2));
            //double x = Math.Sqrt(Math.Pow((pt2.x - pt.x), 2));
            //double y = Math.Sqrt(Math.Pow((pt2.y - pt.y), 2));
            //double z = Math.Sqrt(Math.Pow((pt2.z - pt.z), 2));

            double x = pt2.x - pt.x;
            double y = pt2.y - pt.y;
            double z = pt2.z - pt.z;

            double x2 = pt.x;
            double y2 = pt.y;
            double z2 = pt.z;

            for (int i = 0; i < points.Count; i++)
            {
                cnode p1;
                p1 = (cnode)points[i];

                p1.x -= x2;
                p1.y -= y2;
                p1.z -= z2;

                points[i] = p1;
            }



            double th = Math.Atan2(y, x);

            th = th * Math.PI / 180;

            double phi = Math.Atan2(Math.Sqrt(x * x + y * y), z);

            phi = (phi * Math.PI / 180);

            for (int i = 0; i < points.Count; i++)
            {
                cnode ptrv = (cnode)points[i];

                double xx = ptrv.x;
                double yy = ptrv.y;

                xx = ((ptrv.x * Math.Cos(-th)) - (ptrv.y * Math.Sin(-th)));
                yy = ((ptrv.x * Math.Sin(-th)) + (ptrv.y * Math.Cos(-th)));

                ptrv.x    = xx;
                ptrv.y    = yy;
                points[i] = ptrv;
            }



            for (int i = 0; i < points.Count; i++)
            {
                cnode ptrv = (cnode)points[i];

                double zz = ptrv.z;
                double xx = ptrv.x;

                zz = ((ptrv.x * Math.Cos(-(phi))) + (ptrv.z * Math.Sin(-(phi))));
                xx = ((ptrv.z * Math.Cos(-(phi))) - (ptrv.x * Math.Sin(-(phi))));

//                zz = ((ptrv.x * Math.Sin(-(phi))) + (ptrv.z * Math.Cos(-(phi))));
//                xx = -((ptrv.z * Math.Sin(-(phi))) + (ptrv.x * Math.Cos(-(phi))));

                ptrv.z = zz;
                ptrv.x = xx;

                points[i] = ptrv;
            }



            for (int i = 0; i < points.Count; i++)
            {
                cnode ptrv = (cnode)points[i];

                double xx = ptrv.x;
                double yy = ptrv.y;
                xx     = ((ptrv.x * Math.Cos(0.20)) - (ptrv.y * Math.Sin(0.20)));
                yy     = ((ptrv.y * Math.Cos(0.20)) + (ptrv.x * Math.Sin(0.20)));
                ptrv.x = xx;
                ptrv.y = yy;

                points[i] = ptrv;
            }



            for (int i = 0; i < points.Count; i++)
            {
                cnode  ptrv = (cnode)points[i];
                double zz   = ptrv.z;
                double xx   = ptrv.x;
                zz = ((ptrv.x * Math.Cos((phi))) + (ptrv.z * Math.Sin((phi))));
                xx = ((ptrv.z * Math.Cos((phi))) - (ptrv.x * Math.Sin((phi))));

//                zz = ((ptrv.x * Math.Sin(-(phi))) + (ptrv.z * Math.Cos(-(phi))));
//                xx = -((ptrv.z * Math.Sin(-(phi))) + (ptrv.x * Math.Cos(-(phi))));

                ptrv.z = zz;
                ptrv.x = xx;

                points[i] = ptrv;
            }


            for (int i = 0; i < points.Count; i++)
            {
                cnode ptrv = (cnode)points[i];

                double xx = ptrv.x;
                double yy = ptrv.y;
                xx     = ((ptrv.x * Math.Cos(th)) - (ptrv.y * Math.Sin(th)));
                yy     = ((ptrv.y * Math.Cos(th)) + (ptrv.x * Math.Sin(th)));
                ptrv.x = xx;
                ptrv.y = yy;

                points[i] = ptrv;
            }

            for (int i = 0; i < points.Count; i++)
            {
                cnode p1 = new cnode();
                p1    = (cnode)points[i];
                p1.x += x2;
                p1.y += y2;
                p1.z += z2;

                points[i] = p1;
            }
            DB();
        }