예제 #1
0
        public void OklariCiz(Graphics cizge, Pen kalem, Brush firca, PointF[] apf, float[] uzaklikBaslangici, float[] uzaklikBitisi)
        {
            if (apf.Length < 2)
            {
                throw new ArgumentException("PointF[] apf en az 2 uzunluğuna sahip olmak zorunda");
            }
            if (apf.Length != uzaklikBaslangici.Length || apf.Length != uzaklikBitisi.Length ||
                uzaklikBitisi.Length != uzaklikBaslangici.Length)
            {
                throw new ArgumentException("apf, uzaklikBaslangici ve uzaklikBitisi eşit uzunlukta dizilere sahip olmak zorunda");
            }

            PointF[] yeniApf = new PointF[apf.Length + 1];
            Array.Copy(apf, yeniApf, apf.Length);
            yeniApf[yeniApf.Length - 1] = yeniApf[0];

            PointF Pden = yeniApf[0], toP;

            for (int i = 0; i < yeniApf.Length - 1; i++)
            {
                toP = yeniApf[i + 1];
                Vektor vektorUzunlugu   = new Vektor(toP.X - Pden.X, toP.Y - Pden.Y);
                Vektor vektorBaslangici = vektorUzunlugu - (vektorUzunlugu.Uzunluk - uzaklikBaslangici[i]);
                PointF nFromP           = new PointF(Pden.X + vektorBaslangici.X, Pden.Y + vektorBaslangici.Y);
                Vektor vektorBitisi     = vektorUzunlugu - uzaklikBitisi[i];
                PointF nToP             = new PointF(Pden.X + vektorBitisi.X, Pden.Y + vektorBitisi.Y);
                OkCiz(cizge, kalem, firca, nFromP, nToP);
                Pden = toP;
            }
        }
예제 #2
0
        public void OkCiz(Graphics cizge, Pen kalem, Brush firca, PointF nokta1, PointF nokta2)
        {
            PointF[] okIciDizisi = new PointF[3];

            okIciDizisi[0] = nokta2;

            Vektor vektorKose = new Vektor(nokta2.X - nokta1.X, nokta2.Y - nokta1.Y);
            Vektor vektorSol  = new Vektor(-vektorKose[1], vektorKose[0]);

            float cizgiUzunlugu = vektorKose.Uzunluk;
            float th            = Genislik / (2.0f * cizgiUzunlugu);
            float ta            = Genislik / (2.0f * ((float)Math.Tan(Teta / 2.0f)) * cizgiUzunlugu);

            PointF noktaTabani = new PointF(okIciDizisi[0].X + -ta * vektorKose[0], okIciDizisi[0].Y + -ta * vektorKose[1]); //base of the arrow

            okIciDizisi[1] = new PointF(noktaTabani.X + th * vektorSol[0], noktaTabani.Y + th * vektorSol[1]);
            okIciDizisi[2] = new PointF(noktaTabani.X + -th * vektorSol[0], noktaTabani.Y + -th * vektorSol[1]);

            cizge.DrawLine(kalem, nokta1, noktaTabani);

            if (OkIciniDoldur)
            {
                cizge.FillPolygon(firca, okIciDizisi);
            }

            cizge.DrawPolygon(kalem, okIciDizisi);
        }
예제 #3
0
 public static Vektor Ekle(Vektor vektor1, Vektor vektor2)
 {
     if (((Object)vektor1 == null) || ((Object)vektor2 == null))
     {
         return(null);
     }
     return(new Vektor(vektor1.X + vektor2.X, vektor1.Y + vektor2.Y, vektor1.Z + vektor2.Z));
 }
예제 #4
0
 public static Vektor Cikar(Vektor vektor1, Vektor vektor2)
 {
     if (((Object)vektor1 == null) || ((Object)vektor2 == null))
     {
         return(null);
     }
     return(new Vektor(vektor1.X - vektor2.X, vektor1.Y - vektor2.Y, vektor1.Z - vektor2.Z));
 }
예제 #5
0
 public static Vektor Cogalt(Vektor vektor, float deger)
 {
     if ((Object)vektor == null)
     {
         return(null);
     }
     return(new Vektor(vektor.X * deger, vektor.Y * deger, vektor.Z * deger));
 }
예제 #6
0
 public static Vektor IptalEt(Vektor vektor)
 {
     if ((Object)vektor == null)
     {
         return(null);
     }
     return(new Vektor(-vektor.X, -vektor.Y, -vektor.Z));
 }
예제 #7
0
        public static Vektor Daralt(Vektor vektor, float dUzunlugu)
        {
            float uzunluk = vektor.Uzunluk;

            if (uzunluk == 0)
            {
                throw new ArgumentException("Vektör uzunluğu sıfıra eşit. Daraltılma ve genişletilme imkanı yok.");
            }
            return(new Vektor(vektor.X - (vektor.X * dUzunlugu / uzunluk),
                              vektor.Y - (vektor.Y * dUzunlugu / uzunluk),
                              vektor.Z - (vektor.Z * dUzunlugu / uzunluk)));
        }
예제 #8
0
        public void OklariCiz(Graphics cizge, Pen kalem, Brush firca, PointF[] apf, float uzaklikBaslangici, float uzaklikBitisi)
        {
            if (apf.Length < 2)
            {
                throw new ArgumentException("PointF[] apf en az 2 uzunluğuna sahip olmak zorunda");
            }
            PointF[] yeniApf = new PointF[apf.Length + 1];
            Array.Copy(apf, yeniApf, apf.Length);
            yeniApf[yeniApf.Length - 1] = yeniApf[0];

            PointF noktadan = yeniApf[0], toP;

            for (int i = 0; i < yeniApf.Length - 1; i++)
            {
                toP = yeniApf[i + 1];
                Vektor vektorUzunlugu   = new Vektor(toP.X - noktadan.X, toP.Y - noktadan.Y);
                Vektor vektorBaslangici = vektorUzunlugu - (vektorUzunlugu.Uzunluk - uzaklikBaslangici);
                PointF nFromP           = new PointF(noktadan.X + vektorBaslangici.X, noktadan.Y + vektorBaslangici.Y);
                Vektor vektorSonu       = vektorUzunlugu - uzaklikBitisi;
                PointF nToP             = new PointF(noktadan.X + vektorSonu.X, noktadan.Y + vektorSonu.Y);
                OkCiz(cizge, kalem, firca, nFromP, nToP);
                noktadan = toP;
            }
        }
예제 #9
0
 public Vektor(Vektor vektor)
 {
     m_X = vektor.X;
     m_Y = vektor.Y;
     m_Z = vektor.Z;
 }
예제 #10
0
 public static Vektor Genislet(Vektor vektor, float dUzunlugu)
 {
     return(Daralt(vektor, -1 * dUzunlugu));
 }