diff --git a/Bonhomme01/Bonhomme.cs b/Bonhomme01/Bonhomme.cs index 4591235..2541b86 100644 --- a/Bonhomme01/Bonhomme.cs +++ b/Bonhomme01/Bonhomme.cs @@ -48,12 +48,14 @@ namespace Bonhomme01 public void Bouger(int x, int y, Jambe.AngleJambe angleJambe1, Jambe.AngleJambe angleJambe2) { if(flag == 0) - jambe1.angleJambe = angleJambe1; + jambe1.angleJambe = angleJambe1; flag = 2; if (jambe1.angleJambe.AngleBassin == 0 && jambe2.angleJambe.AngleBassin == 0 || 1==1) { - //jambe1.Monter(2); + //jambe1.Monter(1); jambe1.Avancer(10); + // jambe1.Avancer(10); + // jambe1.Avancer(10); } else if (jambe1.angleJambe.AngleBassin != 0 && jambe2.angleJambe.AngleBassin == 0 && 1==2) { diff --git a/Bonhomme01/Bonhomme01.csproj b/Bonhomme01/Bonhomme01.csproj index 889fa94..fd19958 100644 --- a/Bonhomme01/Bonhomme01.csproj +++ b/Bonhomme01/Bonhomme01.csproj @@ -55,7 +55,7 @@ Form1.cs - + diff --git a/Bonhomme01/Cercle.cs b/Bonhomme01/Cercle.cs index 01d6832..f32e250 100644 --- a/Bonhomme01/Cercle.cs +++ b/Bonhomme01/Cercle.cs @@ -60,10 +60,10 @@ namespace Bonhomme01 this.origineRotation = origineRotation; } #region pointPourRotation - public PointComplexe CSG { get { return (new PointComplexe(Origine.X, Origine.Y, OrigineRotation.X, OrigineRotation.Y, angleRotation)); } } - public PointComplexe CSD { get { return (new PointComplexe(Origine.X + Lhorizontal, Origine.Y, OrigineRotation.X, OrigineRotation.Y, angleRotation)); } } - public PointComplexe CIG { get { return (new PointComplexe(Origine.X, Origine.Y + Lvertical, OrigineRotation.X, OrigineRotation.Y, angleRotation)); } } - public PointComplexe CID { get { return (new PointComplexe(Origine.X + Lhorizontal, Origine.Y + Lvertical, OrigineRotation.X, OrigineRotation.Y, angleRotation)); } } + public Vecteur CSG { get { return (new Vecteur(Origine.X, Origine.Y, OrigineRotation.X, OrigineRotation.Y, angleRotation)); } } + public Vecteur CSD { get { return (new Vecteur(Origine.X + Lhorizontal, Origine.Y, OrigineRotation.X, OrigineRotation.Y, angleRotation)); } } + public Vecteur CIG { get { return (new Vecteur(Origine.X, Origine.Y + Lvertical, OrigineRotation.X, OrigineRotation.Y, angleRotation)); } } + public Vecteur CID { get { return (new Vecteur(Origine.X + Lhorizontal, Origine.Y + Lvertical, OrigineRotation.X, OrigineRotation.Y, angleRotation)); } } #endregion #region accesseur @@ -115,8 +115,8 @@ namespace Bonhomme01 { decalageX = 0; decalageY = 0; - Point millieuParent = PointComplexe.Millieux(rectParent.CIG, rectParent.CID); - Point millieuxenfant = PointComplexe.Millieux(this.CSG, this.CSD); + Point millieuParent = Vecteur.Millieux(rectParent.CIG, rectParent.CID); + Point millieuxenfant = Vecteur.Millieux(this.CSG, this.CSD); decalageX = millieuParent.X - millieuxenfant.X; decalageY = millieuParent.Y - millieuxenfant.Y; setToCenterFlag = false; @@ -125,7 +125,7 @@ namespace Bonhomme01 { float old = angleRotation; angleRotation = 0; - OrigineRotation = PointComplexe.Millieux(this.CSG, this.CSD); + OrigineRotation = Vecteur.Millieux(this.CSG, this.CSD); setToCenterFlag = true; angleRotation = old; } diff --git a/Bonhomme01/Form1.Designer.cs b/Bonhomme01/Form1.Designer.cs index 61e8f6d..ed87e8b 100644 --- a/Bonhomme01/Form1.Designer.cs +++ b/Bonhomme01/Form1.Designer.cs @@ -47,7 +47,7 @@ // // timerImage // - this.timerImage.Interval = 40; + this.timerImage.Interval = 500; this.timerImage.Tick += new System.EventHandler(this.timerImage_Tick); // // btnEffacer diff --git a/Bonhomme01/Form1.cs b/Bonhomme01/Form1.cs index cb4d625..92e7b2f 100644 --- a/Bonhomme01/Form1.cs +++ b/Bonhomme01/Form1.cs @@ -37,7 +37,7 @@ namespace Bonhomme01 } else { - this.bonhomme.Cacher(this.TV.Handle); + //this.bonhomme.Cacher(this.TV.Handle); //angleJ1.AngleBassin += 1; //angleJ1.AngleCheville = angleJ1.AngleGenou += 2; //angleJ2.AngleBassin -= 1; diff --git a/Bonhomme01/Jambe.cs b/Bonhomme01/Jambe.cs index 5c8a648..b614a9a 100644 --- a/Bonhomme01/Jambe.cs +++ b/Bonhomme01/Jambe.cs @@ -32,33 +32,33 @@ namespace Bonhomme01 public AngleJambe(float angleBassin, float angleGenou, float angleCheville) { this.AngleBassin = angleBassin; - this.AngleGenou= angleGenou; + this.AngleGenou = angleGenou; this.AngleCheville = angleCheville; } } public AngleJambe angleJambe; - public Jambe(PictureBox hebergeur, Point origine, int Lhorizontal, int Lvertical) : base(hebergeur, origine, Lhorizontal, Lvertical/2) + public Jambe(PictureBox hebergeur, Point origine, int Lhorizontal, int Lvertical) : base(hebergeur, origine, Lhorizontal, Lvertical / 2) { Rectangle me = this; angleJambe = new AngleJambe(0, 0, 0); base.angleRotation = angleJambe.AngleBassin; - jambeBas = new Rectangle(hebergeur, Lhorizontal, Lvertical/2, ref me, angleJambe.AngleGenou); - pied = new Rectangle(hebergeur, Lhorizontal*2, Lvertical/10, ref jambeBas, angleJambe.AngleCheville); + jambeBas = new Rectangle(hebergeur, Lhorizontal, Lvertical / 2, ref me, angleJambe.AngleGenou); + pied = new Rectangle(hebergeur, Lhorizontal * 2, Lvertical / 10, ref jambeBas, angleJambe.AngleCheville); } - public Jambe(PictureBox hebergeur, Point origine, int Lhorizontal, int Lvertical, AngleJambe angle) : base(hebergeur, origine, Lhorizontal, Lvertical/2, angle.AngleBassin) + public Jambe(PictureBox hebergeur, Point origine, int Lhorizontal, int Lvertical, AngleJambe angle) : base(hebergeur, origine, Lhorizontal, Lvertical / 2, angle.AngleBassin) { Rectangle me = this; angleJambe = angle; - jambeBas = new Rectangle(hebergeur, Lhorizontal, Lvertical/2, ref me, angleJambe.AngleGenou); - pied = new Rectangle(hebergeur, Lhorizontal * 2, Lvertical/10, ref jambeBas, angleJambe.AngleCheville); + jambeBas = new Rectangle(hebergeur, Lhorizontal, Lvertical / 2, ref me, angleJambe.AngleGenou); + pied = new Rectangle(hebergeur, Lhorizontal * 2, Lvertical / 10, ref jambeBas, angleJambe.AngleCheville); } - public Jambe(PictureBox hebergeur, Point origine, int Lhorizontal, int Lvertical, AngleJambe angle, Point origineRotation) : base(hebergeur, origine, Lhorizontal, Lvertical/2, angle.AngleBassin, origineRotation) + public Jambe(PictureBox hebergeur, Point origine, int Lhorizontal, int Lvertical, AngleJambe angle, Point origineRotation) : base(hebergeur, origine, Lhorizontal, Lvertical / 2, angle.AngleBassin, origineRotation) { Rectangle me = this; angleJambe = angle; - jambeBas = new Rectangle(hebergeur, origine, Lhorizontal, Lvertical/2, angleJambe.AngleGenou, origineRotation); - pied = new Rectangle(hebergeur, jambeBas.CIG, Lhorizontal * 2, Lvertical/10, angleJambe.AngleCheville, origineRotation); + jambeBas = new Rectangle(hebergeur, origine, Lhorizontal, Lvertical / 2, angleJambe.AngleGenou, origineRotation); + pied = new Rectangle(hebergeur, jambeBas.CIG, Lhorizontal * 2, Lvertical / 10, angleJambe.AngleCheville, origineRotation); } public new void Afficher(IntPtr handle) { @@ -85,27 +85,28 @@ namespace Bonhomme01 public float Genou { get { return jambeBas.angleRotation; } - set { jambeBas.angleRotation = angleJambe.AngleGenou = value%360; } + set { jambeBas.angleRotation = angleJambe.AngleGenou = value % 360; } } public float Cheville { get { return pied.angleRotation; } - set { pied.angleRotation = angleJambe.AngleCheville =value%360; } + set { pied.angleRotation = angleJambe.AngleCheville = value % 360; } } public void Bouger(int x, int y) { //Origine = new Point(Origine.X + x, Origine.Y + y); - // jambeBas.Origine = new Point(jambeBas.Origine.X + x, jambeBas.Origine.Y + y); - // pied.Origine = new Point(pied.Origine.X + x, pied.Origine.Y + y); + // jambeBas.Origine = new Point(jambeBas.Origine.X + x, jambeBas.Origine.Y + y); + // pied.Origine = new Point(pied.Origine.X + x, pied.Origine.Y + y); } public void Monter(int x) { - PointComplexe l = new PointComplexe(new PointComplexe(base.CSG, base.CSD).Millieux(), new PointComplexe(jambeBas.CIG, jambeBas.CID).Millieux());//Vecteur entre le haut et le bas du pied - PointComplexe m = new PointComplexe(new PointComplexe(base.CSG, base.CSD).Millieux(), new PointComplexe(base.CIG, base.CID).Millieux());//Vecteur entre le haut et le bas du pied - // var a = ((l.ABS - x) * (l.ABS - x)); + MajAngle(); + Vecteur l = new Vecteur(new Vecteur(base.CSG, base.CSD).Millieux(), new Vecteur(jambeBas.CIG, jambeBas.CID).Millieux());//Vecteur entre le haut et le bas du pied + Vecteur m = new Vecteur(new Vecteur(base.CSG, base.CSD).Millieux(), new Vecteur(base.CIG, base.CID).Millieux());//Vecteur entre le haut et le genou + // var a = ((l.ABS - x) * (l.ABS - x)); int lvertical = (int)m.ABS; //var b = (2 * (l.ABS - x) * Lvertical); - Console.WriteLine("L:{0} vert:{1} x:{2}", l.ABS,lvertical, x); - var bla = (Math.Pow((l.ABS - x), 2)) / (2 * (l.ABS)* (lvertical)); + Console.WriteLine("L:{0} vert:{1} x:{2}", l.ABS, lvertical, x); + double bla = (Math.Pow((l.ABS - x), 2)) / (2 * (l.ABS) * (lvertical)); Console.WriteLine("bla:{0}", bla); double angle = Math.Acos(bla); angle *= 180; @@ -116,25 +117,91 @@ namespace Bonhomme01 } public void Avancer(int x) { - x=10 - PointComplexe m = new PointComplexe(new PointComplexe(base.CSG, base.CSD).Millieux(), new PointComplexe(pied.CIG, pied.CID).Millieux());//Vecteur entre le haut et le bas du pied - // var a = ((l.ABS - x) * (l.ABS - x)); - int lvertical = (int)m.ABS; + x = 10; + MajAngle(); + Vecteur l = new Vecteur(new Vecteur(base.CSG, base.CSD).Millieux(), new Vecteur(jambeBas.CIG, jambeBas.CID).Millieux());//Vecteur entre le haut et le bas de la jambe + Vecteur m = new Vecteur(new Vecteur(base.CSG, base.CSD).Millieux(), new Vecteur(base.CIG, base.CID).Millieux());//Vecteur entre le haut et le genou + /* Vecteur m = new Vecteur(new Vecteur(base.CSG, base.CSD), new Vecteur(pied.CIG, pied.CID));//Vecteur entre le haut et le bas du pied + // var a = ((l.ABS - x) * (l.ABS - x)); + double lvertical = (new Vecteur(base.CSG, base.CIG)).ABS/* m.ABS*/ - Complex origine = new Complex(base.CSG.X, base.CSG.Y); - Complex Pointpied = new Complex(this.pied.CSG.X+x, this.pied.CSG.Y); - Pointpied = Pointpied - origine; + //try + //{ + + Vecteur vecteurPied = new Vecteur(jambeBas.CIG.X+x, jambeBas.CIG.Y, base.CSG.X, base.CSG.Y);//Vecteur entre le haut et le bas de la jambe + vecteurPied.DeplacerSurOrigine(); + double rayon = m.ABS; + Console.WriteLine("Rayon : " + rayon); + double paramA = Math.Pow(vecteurPied.X, 2) + Math.Pow(vecteurPied.Y, 2); + paramA /= vecteurPied.Y * 2; + Console.WriteLine("pied X : " + vecteurPied.X + " ;; pied Y : " + vecteurPied.Y + " ;; a : " + paramA); + double paramRacineDelta = Math.Pow(paramA, 2) * Math.Pow(vecteurPied.Y, 2); + paramRacineDelta = (Math.Pow(rayon, 2) * (Math.Pow(vecteurPied.X, 2) + Math.Pow(vecteurPied.Y, 2))) - paramRacineDelta; + paramRacineDelta = 2 * Math.Sqrt(paramRacineDelta); + paramRacineDelta /= Math.Abs(vecteurPied.Y); + double pxSurPy = vecteurPied.X / vecteurPied.Y; + double cooGenouX = -2 * paramA * pxSurPy + paramRacineDelta; + cooGenouX /= 2 + 2 * Math.Pow(pxSurPy, 2); + double cooGenouY = paramA - pxSurPy * cooGenouX; + Complex genouComplex = new Complex(cooGenouX, cooGenouY); + + + angleJambe.AngleBassin = -(float)(genouComplex.Phase * 57.2958)%90; + + + Vecteur vecteurGenouPied = new Vecteur(vecteurPied.X, vecteurPied.Y, (int)cooGenouX, (int)cooGenouY); + vecteurGenouPied.DeplacerSurOrigine(); + angleJambe.AngleGenou = (float)(vecteurGenouPied.point.Phase * 57.2958)%90; + + //} + //catch + // { + + // } + + + + + + + + /* + + int lvertical = (int)m.ABS; + Console.WriteLine("DBG1 : m.abs :" + lvertical + " ; angle genou : " + angleJambe.AngleGenou); + + Complex haut = new Complex(base.CSG.X, base.CSG.Y); Complex Pointgenou; + Complex Pointpied = new Complex(this.pied.CSG.X + x, this.pied.CSG.Y); + Pointpied = Pointpied - haut; double genouxX, genouY; double a = Math.Pow(Pointpied.Real, 2) + Math.Pow(Pointpied.Imaginary, 2); - a /= 2 * Pointpied.Imaginary; - genouxX = 2 * a - 2 * Math.Sqrt(Math.Pow(a, 2)-lvertical); - genouxX /= 4; - genouY = a - genouxX; + Console.WriteLine("a=" + a + "+++++" + Pointpied.ToString()); + a /= (2 * Pointpied.Imaginary); + + + //ax²+bx+c=0 + double eqa = 1; + double eqb = -Pointpied.Real / (Math.Pow(Pointpied.Imaginary, 2)); + double eqc = (a * Pointpied.Imaginary); eqc /= Math.Pow(Pointpied.Imaginary, 2); eqc -= Math.Pow(lvertical, 2); + double delta = Math.Pow(eqb, 2) - 4 * eqa * eqc; + genouxX = (-eqb) - Math.Sqrt(delta); genouxX /= 2 * eqa; + genouY = a - genouxX * (-Pointpied.Real / Pointpied.Imaginary); + Console.WriteLine("Genou X : {0} ;; Genou Y : {1} ;; COUPUTE ;; Genou X : {2} ;; Genou Y : {3}",Pointpied.ToString(), genouxX, genouxX, genouY); Pointgenou = new Complex(genouxX, genouY); - angleJambe.AngleBassin += (float)Pointgenou.Phase; - Pointpied = Pointpied - Pointgenou; - angleJambe.AngleGenou += (float)Pointpied.Phase; + angleJambe.AngleBassin = (float)(Pointgenou.Phase); + angleJambe.AngleBassin *= (float)(180 / Math.PI); + //Pointpied = Pointpied - Pointgenou; + angleJambe.AngleGenou = (float)(Pointpied.Phase * 57.2958); + angleJambe.AngleGenou *= (float)(180 / Math.PI); + Console.WriteLine("DBG2 : m.abs :" + lvertical + " ; angle genou : " + angleJambe.AngleGenou);*/ + MajAngle(); + } + private void MajAngle() + { + base.angleRotation = angleJambe.AngleBassin; + jambeBas.angleRotation = angleJambe.AngleGenou; + pied.angleRotation = angleJambe.AngleCheville; } } } diff --git a/Bonhomme01/Rectangle.cs b/Bonhomme01/Rectangle.cs index c50432c..e026a8e 100644 --- a/Bonhomme01/Rectangle.cs +++ b/Bonhomme01/Rectangle.cs @@ -18,8 +18,10 @@ namespace Bonhomme01 public bool remplir = true; public bool visible = true; private Point origine, origineRotation; + private Rectangle rectParent; public bool parentFlag = false; + bool setToCenterFlag = false; public bool memeOrigineOrigineRotation_flag = true; public int Lhorizontal, Lvertical; @@ -57,10 +59,10 @@ namespace Bonhomme01 this.origineRotation = origineRotation; } #region pointPourRotation - public PointComplexe CSG { get { return (new PointComplexe(Origine.X, Origine.Y, OrigineRotation.X, OrigineRotation.Y, angleRotation)); } } - public PointComplexe CSD { get { return (new PointComplexe(Origine.X + Lhorizontal, Origine.Y, OrigineRotation.X, OrigineRotation.Y, angleRotation)); } } - public PointComplexe CIG { get { return (new PointComplexe(Origine.X, Origine.Y + Lvertical, OrigineRotation.X, OrigineRotation.Y, angleRotation)); } } - public PointComplexe CID { get { return (new PointComplexe(Origine.X + Lhorizontal, Origine.Y + Lvertical, OrigineRotation.X, OrigineRotation.Y, angleRotation)); } } + public Vecteur CSG { get { return (new Vecteur(Origine.X, Origine.Y, OrigineRotation.X, OrigineRotation.Y, angleRotation)); } } + public Vecteur CSD { get { return (new Vecteur(Origine.X + Lhorizontal, Origine.Y, OrigineRotation.X, OrigineRotation.Y, angleRotation)); } } + public Vecteur CIG { get { return (new Vecteur(Origine.X, Origine.Y + Lvertical, OrigineRotation.X, OrigineRotation.Y, angleRotation)); } } + public Vecteur CID { get { return (new Vecteur(Origine.X + Lhorizontal, Origine.Y + Lvertical, OrigineRotation.X, OrigineRotation.Y, angleRotation)); } } #endregion #region accesseur @@ -114,14 +116,28 @@ namespace Bonhomme01 { if (visible) { - Graphics gr = Graphics.FromHwnd(handle); - Point[] l = new Point[4] { CSG, CSD, CID, CIG }; - if (remplir) + try { - gr.FillClosedCurve(new SolidBrush(fond), l); - + Graphics gr = Graphics.FromHwnd(handle); + Point[] l = new Point[4] { CSG, CSD, CID, CIG }; + if (remplir) + { + try + { + gr.FillClosedCurve(new SolidBrush(fond), l); + } + catch + { + + } + + } + gr.DrawClosedCurve(new Pen(contour, eppaisseurContour), l); + } + catch + { + } - gr.DrawClosedCurve(new Pen(contour, eppaisseurContour), l); } } public void Afficher(IntPtr handle, float angle) @@ -140,15 +156,22 @@ namespace Bonhomme01 } public void Cacher(IntPtr handle) { - if (visible && 1 == 1) + try { - Graphics gr = Graphics.FromHwnd(handle); - Point[] l = new Point[4] { CSG, CSD, CID, CIG }; - if (remplir) + if (visible && 1 == 1) { - gr.FillClosedCurve(new SolidBrush(this.backgroud), l); + Graphics gr = Graphics.FromHwnd(handle); + Point[] l = new Point[4] { CSG, CSD, CID, CIG }; + if (remplir) + { + gr.FillClosedCurve(new SolidBrush(this.backgroud), l); + } + gr.DrawClosedCurve(new Pen(this.backgroud, eppaisseurContour), l); } - gr.DrawClosedCurve(new Pen(this.backgroud, eppaisseurContour), l); + } + catch + { + } } @@ -160,11 +183,11 @@ namespace Bonhomme01 angleRotation = 0; decalageX = 0; decalageY = 0; - Point millieuParent = PointComplexe.Millieux(rectParent.CIG, rectParent.CID); - Point millieuxenfant = PointComplexe.Millieux(this.CSG, this.CSD); + Point millieuParent = Vecteur.Millieux(rectParent.CIG, rectParent.CID); + Point millieuxenfant = Vecteur.Millieux(this.CSG, this.CSD); decalageX = millieuParent.X - millieuxenfant.X; decalageY = millieuParent.Y - millieuxenfant.Y; - OrigineRotation = PointComplexe.Millieux(this.CSG, this.CSD); + OrigineRotation = Vecteur.Millieux(this.CSG, this.CSD); setToCenterFlag = true; angleRotation = old; } @@ -172,7 +195,7 @@ namespace Bonhomme01 { float old = angleRotation; angleRotation = 0; - OrigineRotation = PointComplexe.Millieux(this.CSG, this.CSD); + OrigineRotation = Vecteur.Millieux(this.CSG, this.CSD); setToCenterFlag = true; angleRotation = old; } diff --git a/Bonhomme01/PointComplexe.cs b/Bonhomme01/Vecteur.cs similarity index 62% rename from Bonhomme01/PointComplexe.cs rename to Bonhomme01/Vecteur.cs index cb5f71b..81401ed 100644 --- a/Bonhomme01/PointComplexe.cs +++ b/Bonhomme01/Vecteur.cs @@ -8,10 +8,11 @@ using System.Drawing; namespace Bonhomme01 { - class PointComplexe + class Vecteur { - Complex point; + public Complex point; Complex origine; + Boolean flagDeplacerOrigine; public int X { get { return (int)point.Real; } @@ -24,42 +25,45 @@ namespace Bonhomme01 { get { - DeplacerSurOrigine(); - double abs = point.Magnitude; - RetoursPosition(); - return abs; + if (!flagDeplacerOrigine) + { + DeplacerSurOrigine(); + double abs = point.Magnitude; + RetoursPosition(); + return abs; + } + else + return point.Magnitude; } set { } } - public PointComplexe(int x, int y, int xo, int yo) + public Vecteur(int x, int y, int xo, int yo) { point = new Complex(x, y); origine = new Complex(xo, yo); + flagDeplacerOrigine = false; } - public PointComplexe(PointComplexe a, PointComplexe b) + public Vecteur(Vecteur a, Vecteur b) { point = new Complex(b.X, b.Y); origine = new Complex(a.X, a.Y); + flagDeplacerOrigine = false; } - public PointComplexe(Point a, Point b) + public Vecteur(Point a, Point b) { point = new Complex(b.X, b.Y); origine = new Complex(a.X, a.Y); + flagDeplacerOrigine = false; } - public PointComplexe(int x, int y, int xo, int yo, double degre) + public Vecteur(int x, int y, int xo, int yo, double degre) { point = new Complex(x, y); origine = new Complex(xo, yo); - //Console.WriteLine("Avent rotation {0}", point.ToString()); - - //Console.WriteLine("Avent rotation {0}", point.ToString()); + flagDeplacerOrigine = false; RotateDegre(degre); - //Console.WriteLine("Après rotation {0}", point.ToString()); - - //Console.WriteLine("Après rotation {0}", point.ToString()); } public void RotateDegre(double angle) { @@ -74,9 +78,9 @@ namespace Bonhomme01 point = Complex.Add(point, Complex.FromPolarCoordinates(point.Magnitude, point.Phase + radian)); point = Complex.Add(point, origine); } - public static Point Millieux(PointComplexe a, PointComplexe b) + public static Point Millieux(Vecteur a, Vecteur b) { - PointComplexe pt = new PointComplexe(a, b); + Vecteur pt = new Vecteur(a, b); pt.DeplacerSurOrigine(); pt.point = Complex.FromPolarCoordinates(pt.point.Magnitude / 2, pt.point.Phase); pt.RetoursPosition(); @@ -89,19 +93,24 @@ namespace Bonhomme01 point = Complex.FromPolarCoordinates(point.Magnitude / 2, point.Phase); RetoursPosition(); - return new Point(X, Y); + return new Point((int)point.Real, (int)point.Imaginary); } public void DeplacerSurOrigine() - { - point = Complex.Subtract(point, origine); + { if (!flagDeplacerOrigine) + { + flagDeplacerOrigine = true; + point = Complex.Subtract(point, origine); + } } public void RetoursPosition() { - point = Complex.Add(point, origine); + if (flagDeplacerOrigine) + { + flagDeplacerOrigine = false; + point = Complex.Add(point, origine); + } } - - - public static implicit operator Point(PointComplexe point) + public static implicit operator Point(Vecteur point) { return new Point(point.X, point.Y); }