95 lines
2.5 KiB
C#
95 lines
2.5 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Drawing;
|
|||
|
using System.Linq;
|
|||
|
using System.Numerics;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace Bonhomme02
|
|||
|
{
|
|||
|
class Vecteur
|
|||
|
{
|
|||
|
#region donnée
|
|||
|
private Vecteur parent = null;
|
|||
|
private Complex vecteur;
|
|||
|
#endregion
|
|||
|
#region accesseur
|
|||
|
public double Angle
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
if (parent != null)
|
|||
|
return parent.Angle - Math.PI/2;
|
|||
|
else
|
|||
|
return vecteur.Phase;
|
|||
|
}
|
|||
|
set
|
|||
|
{
|
|||
|
if (parent != null)
|
|||
|
Console.WriteLine("Erreur : La définition de l'angle d'un enfant ne peut-être fait !");
|
|||
|
else
|
|||
|
vecteur = Complex.FromPolarCoordinates(vecteur.Magnitude, value);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public int X
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
return (int)vecteur.Real;
|
|||
|
}
|
|||
|
}
|
|||
|
public int Y
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
return (int)vecteur.Imaginary;
|
|||
|
}
|
|||
|
}
|
|||
|
#endregion
|
|||
|
#region constructeur
|
|||
|
public Vecteur()
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
public Vecteur(double longueur, double angle)
|
|||
|
{
|
|||
|
vecteur = Complex.FromPolarCoordinates(longueur, angle);
|
|||
|
}
|
|||
|
public Vecteur(double longueur, ref Vecteur parent, bool flag) : this(longueur, parent.Angle - Math.PI / 2)
|
|||
|
{
|
|||
|
this.parent = parent;
|
|||
|
}
|
|||
|
#region operateur
|
|||
|
public static explicit operator Point(Vecteur v) // Rsique de perte de précision donc explicit
|
|||
|
{
|
|||
|
return new Point(v.X, v.Y);
|
|||
|
}
|
|||
|
public static implicit operator Vecteur(Point pt)
|
|||
|
{
|
|||
|
Complex c = new Complex(pt.X, pt.Y);
|
|||
|
return new Vecteur(c.Magnitude, c.Phase);
|
|||
|
}
|
|||
|
public static Point operator +(Vecteur v, Point pt)
|
|||
|
{
|
|||
|
return new Point(v.X + pt.X, v.Y + pt.Y);
|
|||
|
}
|
|||
|
public static Point operator +(Point pt, Vecteur v)
|
|||
|
{
|
|||
|
return new Point(v.X + pt.X, v.Y + pt.Y);
|
|||
|
}
|
|||
|
public static Point operator -(Vecteur v, Point pt)
|
|||
|
{
|
|||
|
return new Point(v.X - pt.X, v.Y - pt.Y);
|
|||
|
}
|
|||
|
public static Point operator -(Point pt, Vecteur v)
|
|||
|
{
|
|||
|
return new Point(pt.X - v.X, pt.Y - v.Y);
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
}
|
|||
|
#endregion
|
|||
|
}
|