Commit avent grosse modif pour prÃcision
This commit is contained in:
		| @@ -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) | ||||
|             { | ||||
|   | ||||
| @@ -55,7 +55,7 @@ | ||||
|       <DependentUpon>Form1.cs</DependentUpon> | ||||
|     </Compile> | ||||
|     <Compile Include="Jambe.cs" /> | ||||
|     <Compile Include="PointComplexe.cs" /> | ||||
|     <Compile Include="Vecteur.cs" /> | ||||
|     <Compile Include="PointOrigine.cs" /> | ||||
|     <Compile Include="Program.cs" /> | ||||
|     <Compile Include="Properties\AssemblyInfo.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; | ||||
|             } | ||||
|   | ||||
							
								
								
									
										2
									
								
								Bonhomme01/Form1.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								Bonhomme01/Form1.Designer.cs
									
									
									
										generated
									
									
									
								
							| @@ -47,7 +47,7 @@ | ||||
|             //  | ||||
|             // timerImage | ||||
|             //  | ||||
|             this.timerImage.Interval = 40; | ||||
|             this.timerImage.Interval = 500; | ||||
|             this.timerImage.Tick += new System.EventHandler(this.timerImage_Tick); | ||||
|             //  | ||||
|             // btnEffacer | ||||
|   | ||||
| @@ -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; | ||||
|   | ||||
| @@ -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; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -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 | ||||
|                 { | ||||
|                     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.FillClosedCurve(new SolidBrush(fond), l); | ||||
|  | ||||
|                 } | ||||
|                 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; | ||||
|             } | ||||
|   | ||||
| @@ -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); | ||||
|         } | ||||
		Reference in New Issue
	
	Block a user
	 adriy
					adriy