class TestPoint(unittest.TestCase): def setUp(self): self.a = Point(0, 0, 0) self.b = Point(1, 2, 3) def test_initialisation(self): self.assertIsInstance(self.a, Point, msg=None) self.assertEqual(self.a.x, 0) self.assertEqual(self.a.y, 0) self.assertEqual(self.a.z, 0) def test_setPosition(self): self.a.setPosition(Point(0, 0, 1)) self.assertEqual(self.a.x, 0) self.assertEqual(self.a.y, 0) self.assertEqual(self.a.z, 1) def test_deplacer(self): self.a.deplacer(self.b) self.assertEqual(self.a.x, self.b.x) self.assertEqual(self.a.y, self.b.y) self.assertEqual(self.a.z, self.b.z) def test_toVect(self): v = self.a.toVect() self.assertIsInstance(v, Vecteur, msg=None) self.assertEqual(v.x, self.a.x) self.assertEqual(v.y, self.a.y) self.assertEqual(v.z, self.a.z)
def __init__(self, centre=None): """ centre : Point definissant le centre de l'objet. initialise a (0, 0, 0) """ if centre: self.centre = centre else: self.centre = Point(0, 0, 0)
def __init__(self, longueur, hauteur, largeur, centre=None): """ Constructeur ajoutant les 8 sommets autour du centre par defaut: (0,0,0) """ Polygone3D.__init__(self, centre) self.longueur = longueur self.largeur = largeur self.hauteur = hauteur self.addSommet( Point(self.centre.x - longueur / 2, self.centre.y - largeur / 2, self.centre.z + hauteur / 2)) self.addSommet( Point(self.centre.x + longueur / 2, self.centre.y - largeur / 2, self.centre.z + hauteur / 2)) self.addSommet( Point(self.centre.x + longueur / 2, self.centre.y + largeur / 2, self.centre.z + hauteur / 2)) self.addSommet( Point(self.centre.x - longueur / 2, self.centre.y + largeur / 2, self.centre.z + hauteur / 2)) self.addSommet( Point(self.centre.x - longueur / 2, self.centre.y - largeur / 2, self.centre.z - hauteur / 2)) self.addSommet( Point(self.centre.x + longueur / 2, self.centre.y - largeur / 2, self.centre.z - hauteur / 2)) self.addSommet( Point(self.centre.x + longueur / 2, self.centre.y + largeur / 2, self.centre.z - hauteur / 2)) self.addSommet( Point(self.centre.x - longueur / 2, self.centre.y + largeur / 2, self.centre.z - hauteur / 2))
class Objet3D(object): """ Classe definissant un objet 3D de facon abstraite """ def __init__(self, centre=None): """ centre : Point definissant le centre de l'objet. initialise a (0, 0, 0) """ if centre: self.centre = centre else: self.centre = Point(0, 0, 0) def deplacer(self, vecteur): """ deplace les Point dans sommets et centre de l'objet """ self.centre.deplacer(vecteur) def tournerAutour(self, point, teta): """ tourne l'objet d'un angle teta auout d'un point :param point: Point :param teta: float en rad """ self.centre.tournerAutour(point, teta) def __repr__(self): """ Quand on entre un objet3D dans l'interpreteur """ return "Objet3D: centre: {}".format(self.centre) def __getattr__(self, nom): """ Permet d'acceder a un attribut si ce n'est pas possible: """ print("L'attribut {} n'est pas accessible dans {} !".format( nom, type(self)))
def setUp(self): self.a = Arene() self.o = Polygone3D() self.v = Polygone3D() self.o.addSommet(Point(0, 0, 0)) self.o.addSommet(Point(1, 0, 0)) self.o.addSommet(Point(0, 1, 0)) self.o.addSommet(Point(1, 1, 0)) self.v.addSommet(Point(2, 0, 0)) self.v.addSommet(Point(4, 0, 0)) self.v.addSommet(Point(0, 2, 0)) self.v.addSommet(Point(4, 4, 0)) self.a.add(self.o) self.a.add(self.v)
def setUp(self): self.a = Point(0, 0, 0) self.b = Point(1, 2, 3)
def test_setPosition(self): self.a.setPosition(Point(0, 0, 1)) self.assertEqual(self.a.x, 0) self.assertEqual(self.a.y, 0) self.assertEqual(self.a.z, 1)