maxim_shlyahtin

Task_4.3

Oct 24th, 2020 (edited)
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.52 KB | None | 0 0
  1. from math import sqrt
  2.  
  3.  
  4. class Point:
  5.  
  6.     def __init__(self, x, y):
  7.         self.x = x
  8.         self.y = y
  9.  
  10.     def dist(self, other):
  11.         return sqrt((self.x - other.x) ** 2 + (self.y - other.y) ** 2)
  12.  
  13.     def getX(self):
  14.         return self.x
  15.  
  16.     def getY(self):
  17.         return self.y
  18.  
  19.     def __str__(self):
  20.         return f'{self.x}, {self.y}'
  21.  
  22.  
  23. v, v1 = Point(1, 1), Point(3, 3)
  24. print(v, v1, v.dist(v1), sep='\n')
  25.  
  26.  
  27. class Triangle:
  28.  
  29.     def __init__(self, x1, y1):
  30.         self.a = Point(0, 0)
  31.         self.b = Point(0, 5)
  32.         self.c = Point(5, 0)
  33.         self.x1, self.y1 = x1, y1
  34.  
  35.     def per(self):
  36.         return self.a.dist(self.b) + self.b.dist(self.c) + self.c.dist(self.a)
  37.  
  38.     def sqr(self):
  39.         return sqrt((self.per() / 2 - self.a.dist(self.b)) \
  40.                     + (self.per() / 2 - self.b.dist(self.c)) + \
  41.                     (self.per() / 2 - self.c.dist(self.a)))
  42.  
  43.     def acc(self):
  44.         if ((self.a.getX() - self.x1) * (self.b.getY() - self.a.getY()) - (self.b.getX() - self.a.getX()) * (self.a.getY() - self.y1)) > 0 and \
  45.                 ((self.b.getX() - self.x1) * (self.c.getY() - self.b.getY()) - (self.c.getX() - self.b.getX()) * (self.b.getY() - self.y1)) > 0 and \
  46.                 ((self.c.getX() - self.x1) * (self.a.getY() - self.c.getY()) - (self.a.getX() - self.c.getX()) * (self.c.getY() - self.y1)) > 0:
  47.             return 'Inside'
  48.         elif ((self.a.getX() - self.x1) * (self.b.getY() - self.a.getY()) - (self.b.getX() - self.a.getX()) * (self.a.getY() - self.y1)) < 0 and \
  49.                 ((self.b.getX() - self.x1) * (self.c.getY() - self.b.getY()) - (self.c.getX() - self.b.getX()) * (self.b.getY() - self.y1)) < 0 and \
  50.                 ((self.c.getX() - self.x1) * (self.a.getY() - self.c.getY()) - (self.a.getX() - self.c.getX()) * (self.c.getY() - self.y1)) < 0:
  51.             return 'Inside'
  52.         elif ((self.a.getX() - self.x1) * (self.b.getY() - self.a.getY()) - (self.b.getX() - self.a.getX()) * (self.a.getY() - self.y1)) == 0 or \
  53.                 ((self.b.getX() - self.x1) * (self.c.getY() - self.b.getY()) - (self.c.getX() - self.b.getX()) * (self.b.getY() - self.y1)) == 0 or \
  54.                 ((self.c.getX() - self.x1) * (self.a.getY() - self.c.getY()) - (self.a.getX() - self.c.getX()) * (self.c.getY() - self.y1)) == 0:
  55.             return 'On edge'
  56.         else:
  57.             return 'Outside'
  58.  
  59.     def __str__(self):
  60.         return f'({self.a}); ({self.b}); ({self.c})'
  61.  
  62.  
  63. x = Triangle(0, 0)
  64. print(x, x.per(), x.sqr(), x.acc(), sep='\n')
Add Comment
Please, Sign In to add comment