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);
}