Tete Ok, deplacement corp Ok

This commit is contained in:
adri 2018-01-05 12:19:46 +01:00
parent a878a66888
commit 289affdb8d
6 changed files with 133 additions and 31 deletions

View File

@ -22,14 +22,19 @@ namespace Bonhomme02
{ {
} }
public BaseBJ(PictureBox Hebergeur, ref Peau parent, Peau bas, double longueur, double epaisseur, double angle) public BaseBJ(PictureBox Hebergeur, ref Peau parent, Peau bas, double longueur, double epaisseur, double angle) : this( Hebergeur, ref parent, longueur, epaisseur, angle)
{
this.Bas = bas;
this.Bas.parent = this.Millieux;
}
public BaseBJ(PictureBox Hebergeur, ref Peau parent, double longueur, double epaisseur, double angle)
{ {
this.parent = parent; this.parent = parent;
this.longueur = longueur; this.longueur = longueur;
this.Haut = new Peau(Hebergeur, ref parent, longueur/2, epaisseur, angle); this.Haut = new Peau(Hebergeur, ref parent, longueur / 2, epaisseur, angle);
this.Millieux = new Peau(Hebergeur, ref this.Haut, longueur/2, epaisseur, angle); this.Millieux = new Peau(Hebergeur, ref this.Haut, longueur / 2, epaisseur, angle);
this.Bas = bas;
this.Bas.parent = this.Millieux;
} }
public void Afficher(IntPtr handle) public void Afficher(IntPtr handle)
{ {
@ -57,41 +62,44 @@ namespace Bonhomme02
} }
public Point TouverPointMillieux(Point bas) public Point TouverPointMillieux(Point bas)
{ {
Point H = Haut.Coordonnee; try
//Point M = new Point() ; //Inconnue {
Point B = new Point(bas.X-H.X, bas.Y-H.Y); //On part du principe que H est 0;0 Point H = Haut.Coordonnee;
//Point M = new Point() ; //Inconnue
Point B = new Point(bas.X - H.X, bas.Y - H.Y); //On part du principe que H est 0;0
Complex tt = new Complex(B.X, B.Y); Complex tt = new Complex(B.X, B.Y);
double a = Math.Sqrt(4 * Math.Pow(Haut.longueur.ABS, 2) - Math.Pow(B.X, 2) - Math.Pow(B.Y, 2)); double a = Math.Sqrt(4 * Math.Pow(Haut.longueur.ABS, 2) - Math.Pow(B.X, 2) - Math.Pow(B.Y, 2));
double b = Math.Sqrt(Math.Pow(B.X, 2) + Math.Pow(B.Y, 2)); double b = Math.Sqrt(Math.Pow(B.X, 2) + Math.Pow(B.Y, 2));
double cooMX = (B.Y * a + B.X * b); double cooMX = (B.Y * a + B.X * b);
cooMX /= 2*b; cooMX /= 2 * b;
double cooMY = -(B.X * a - B.Y * b); double cooMY = -(B.X * a - B.Y * b);
cooMY /= 2 * b; cooMY /= 2 * b;
Complex t = new Complex(cooMX, cooMY); Complex t = new Complex(cooMX, cooMY);
cooMX += H.X; cooMX += H.X;
cooMY += H.Y; cooMY += H.Y;
int xx = (int)Math.Round(cooMX); int xx = (int)Math.Round(cooMX);
int yy = (int)Math.Round(cooMY); int yy = (int)Math.Round(cooMY);
return new Point(xx, yy); return new Point(xx, yy);
}
catch(Exception e)
{
Console.WriteLine("Erreur Point millieux : " + e);
return new Point(0, 0);
}
} }
public void Bouger(int X, int Y) public void Bouger(int X, int Y)
{ {
Point nouveauPtBas = new Point(Bas.X + X, Bas.Y + Y); Point nouveauPtBas = new Point(Bas.X + X, Bas.Y + Y);
Point nouveauPtMillieux = TouverPointMillieux(nouveauPtBas); Point nouveauPtMillieux = TouverPointMillieux(nouveauPtBas);
if(nouveauPtMillieux.X == 0 && nouveauPtMillieux.Y == 0) if(nouveauPtMillieux.X != 0 || nouveauPtMillieux.Y != 0)
{
}
else
{ {
Haut.Angle = TrouverAngleHaut(nouveauPtMillieux); Haut.Angle = TrouverAngleHaut(nouveauPtMillieux);
Millieux.Angle = TrouverAngleMillieux(nouveauPtBas); Millieux.Angle = TrouverAngleMillieux(nouveauPtBas);
} }
} }
} }

View File

@ -3,10 +3,19 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms;
namespace Bonhomme02 namespace Bonhomme02
{ {
class Bras : BaseBJ class Bras : BaseBJ
{ {
public Bras()
{
}
public Bras(PictureBox Hebergeur, ref Peau parent, double longueur, double epaisseur, double angle) : base( Hebergeur, ref parent, longueur, epaisseur, angle)
{
base.Bas = new Pied(Hebergeur, ref base.Millieux, longueur * 0.3125, epaisseur, 0);
}
} }
} }

View File

@ -16,6 +16,7 @@ namespace Bonhomme02
private BaseBJ jambe; private BaseBJ jambe;
private Pied pied; private Pied pied;
private Peau corp; private Peau corp;
Tete tete;
private BufferedGraphics bufferG = null; private BufferedGraphics bufferG = null;
private Graphics g; private Graphics g;
@ -36,9 +37,14 @@ namespace Bonhomme02
} }
else else
{ {
corp.Cacher(this.TV.Handle);
tete.Cacher(this.TV.Handle);
jambe.Cacher(this.TV.Handle); jambe.Cacher(this.TV.Handle);
corp.coordonnee = new Point(corp.coordonnee.X + 3, corp.coordonnee.Y + 0);
jambe.Bouger(+3, -3); jambe.Bouger(+3, -3);
jambe.Afficher(this.TV.Handle); jambe.Afficher(this.TV.Handle);
corp.Afficher(this.TV.Handle);
tete.Afficher(this.TV.Handle);
} }
} }
@ -59,11 +65,13 @@ namespace Bonhomme02
corp = new Peau(this.TV, 80, 80, 100, 40, Math.PI / 2); corp = new Peau(this.TV, 80, 80, 100, 40, Math.PI / 2);
pied = new Pied(this.TV, 25, 10, 0); pied = new Pied(this.TV, 25, 10, 0);
jambe = new BaseBJ(this.TV, ref corp, pied, 80, 10, Math.PI / 2); jambe = new Jambe(this.TV, ref corp, 100, 10, Math.PI / 2);
tete = new Tete(this.TV, ref corp, 35);
jambe.Haut.Angle = Math.PI/4; jambe.Haut.Angle = Math.PI/4;
jambe.Millieux.Angle = Math.PI/2 + Math.PI/8 ; jambe.Millieux.Angle = Math.PI/2 + Math.PI/8 ;
jambe.Afficher(this.TV.Handle); jambe.Afficher(this.TV.Handle);
corp.Afficher(this.TV.Handle); corp.Afficher(this.TV.Handle);
tete.Afficher(this.TV.Handle);
this.btnStopDeplacerCTick.Enabled = true; this.btnStopDeplacerCTick.Enabled = true;
this.timerImage.Start(); this.timerImage.Start();

View File

@ -3,10 +3,21 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms;
namespace Bonhomme02 namespace Bonhomme02
{ {
class Jambe : BaseBJ class Jambe : BaseBJ
{ {
/*pied = new Pied(this.TV, 25, 10, 0);
jambe = new BaseBJ(this.TV, ref corp, pied, 80, 10, Math.PI / 2);*/
public Jambe()
{
}
public Jambe(PictureBox Hebergeur, ref Peau parent, double longueur, double epaisseur, double angle) : base( Hebergeur, ref parent, longueur, epaisseur, angle)
{
base.Bas = new Pied(Hebergeur,ref base.Millieux, longueur*0.3125, epaisseur, 0);
}
} }
} }

View File

@ -74,7 +74,7 @@ namespace Bonhomme02
{ {
base.longueur = new Vecteur(lg, angle); base.longueur = new Vecteur(lg, angle);
base.epaisseur = new Vecteur(ep, ref base.longueur, true); base.epaisseur = new Vecteur(ep, ref base.longueur, true);
talon = new Vecteur(lg / 2, angle); talon = new Vecteur(lg / 3, angle);
} }
#endregion #endregion

View File

@ -1,12 +1,78 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms;
namespace Bonhomme02 namespace Bonhomme02
{ {
class Tete class Tete : BaseDessin
{ {
public int rayon;
Peau corp;
public Tete() : base()
{
}
public Tete(PictureBox hebergeur, ref Peau corp, int rayon) : base(hebergeur)
{
this.rayon = rayon;
this.corp = corp;
}
public Tete(PictureBox hebergeur, int xy) : base(hebergeur, xy)
{
}
public Tete(PictureBox hebergeur, int x, int y) : base(hebergeur, x, y)
{
}
public Tete(int x, int y) : base(x, y)
{
}
public Tete(PictureBox hebergeur, int xy, Color crayon) : base(hebergeur, xy, crayon)
{
}
public Tete(PictureBox hebergeur, int x, int y, Color crayon) : base(hebergeur, x, y, crayon)
{
}
public override void Cacher(IntPtr handle)
{
Point posi = new Point(corp.coordonnee.X - rayon, corp.coordonnee.Y - rayon * 2);
if (base.Visible)
{
Graphics gr = Graphics.FromHwnd(handle);
if (base.Remplir)
{
gr.FillEllipse(new SolidBrush(base.Fond), posi.X , posi.Y, rayon*2, rayon*2);
}
gr.DrawEllipse(new Pen(base.Fond), posi.X, posi.Y, rayon*2, rayon*2);
}
}
public override void Afficher(IntPtr handle)
{
if (base.Visible)
{
Graphics gr = Graphics.FromHwnd(handle);
Point posi = new Point(corp.coordonnee.X - rayon , corp.coordonnee.Y - rayon * 2);
if (base.Remplir)
{
gr.FillEllipse(new SolidBrush(Color.Blue), posi.X, posi.Y, rayon * 2, rayon * 2);
}
gr.DrawEllipse(new Pen(Brushes.Black), posi.X, posi.Y, rayon * 2, rayon * 2);
}
}
} }
} }