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; } }
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); }
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)); }
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)); }
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)); }
public static Vektor IptalEt(Vektor vektor) { if ((Object)vektor == null) { return(null); } return(new Vektor(-vektor.X, -vektor.Y, -vektor.Z)); }
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))); }
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; } }
public Vektor(Vektor vektor) { m_X = vektor.X; m_Y = vektor.Y; m_Z = vektor.Z; }
public static Vektor Genislet(Vektor vektor, float dUzunlugu) { return(Daralt(vektor, -1 * dUzunlugu)); }