예제 #1
0
 public void Show(Graphics gr, Pen p, Diem node)
 {
     gr.DrawLine(p, node.X, node.Y, node.X + X, node.Y + Y);
 }
예제 #2
0
파일: Diem.cs 프로젝트: seakBz/CShap
 public void Veduongthang(Graphics gr, Pen p, Diem node)
 {
     gr.DrawLine(p, X, Y, node.X, node.Y);
 }
예제 #3
0
        public Diem Dagiacloi(Graphics gr, ref int numberShow, List <CosGoc> lstCos)
        {
            if (lstDiem.Count == 0)
            {
                return(null);
            }
            int    X_max  = lstDiem[0].X;
            int    Y_max  = lstDiem[0].Y;
            Vector vector = new Vector()
            {
                X = 10, Y = 10
            };

            for (int i = 0; i < lstDiem.Count; i++)
            {
                if (Y_max < lstDiem[i].Y)
                {
                    Y_max = lstDiem[i].Y;
                    X_max = lstDiem[i].X;
                }
                else if (Y_max == lstDiem[i].Y)
                {
                    Y_max = lstDiem[i].Y;
                    X_max = X_max < lstDiem[i].X ? lstDiem[i].X : X_max;
                }
            }
            Diem node = lstDiem.Find(x => x.X == X_max && x.Y == Y_max);

            vector.Show(gr, pBien, node);
            List <Diem> lstBien = new List <Diem>();

            lstBien.Add(node);

            //for (int i = 0; i < lstDiem.Count; i++)
            //{
            //    Diem newDiemBien = Helper.Laydiemcogocnhonhatsovoivector(lstDiem, node, vector, lstCos);
            //    if (lstBien.FindIndex(x => x.DiemID == newDiemBien.DiemID) < 0)
            //    {
            //        lstBien.Add(newDiemBien);
            //    }
            //    vector = new Vector() { X = newDiemBien.X - node.X, Y = newDiemBien.Y - node.Y };
            //    node = newDiemBien;
            //}


            Diem newDiemBien = null;

            node.DanhDau(gr, new Pen(Color.Gray));
            for (int i = 0; i < numberShow; i++)
            {
                newDiemBien = Helper.Laydiemcogocnhonhatsovoivector(lstDiem, node, vector, lstCos);
                if (lstBien.FindIndex(x => x.DiemID == newDiemBien.DiemID) < 0)
                {
                    lstBien.Add(newDiemBien);
                }
                vector = new Vector()
                {
                    X = newDiemBien.X - node.X, Y = newDiemBien.Y - node.Y
                };
                node = newDiemBien;
                newDiemBien.DanhDau(gr, new Pen(Color.Gray));
                //vector.Show(gr, pBien, node);
            }
            if (numberShow >= lstBien.Count)
            {
                numberShow = lstBien.Count - 1;
            }

            for (int i = 0; i < numberShow; i++)
            {
                lstBien[i].Veduongthang(gr, pBien, lstBien[i + 1]);
            }
            if (newDiemBien != null)
            {
                if (newDiemBien.DiemID == lstBien[0].DiemID)
                {
                    lstBien[lstBien.Count - 1].Veduongthang(gr, pBien, lstBien[0]);
                }
            }
            return(newDiemBien);
        }