Найти - Пользователи
Полная версия: Площади нескольких треугольников на Python
Начало » Python для новичков » Площади нескольких треугольников на Python
1
Gira
Здравствуйте! Имеются координаты четырех точек, необходимо найти площади всевозможных треугольников(их всего 4 можно составить).
Делаю это так, напролом так сказать:

A = abs( x1*(y2 - y3) + x2*(y3 - y1) + x3*(y1 - y2) ) / 2.0

B = abs( x2*(y3-y4) + x3*(y4-y2) + x4*(x2 - y3) ) / 2.0

C = abs( x1*(y2 - y4) + x2*(y4 - y1) + x4*(y1 - y2) ) / 2.0

D = abs( x1*(y3-y4) + x3*(y4-y1) + x4*(x1 - y3) ) / 2.0

Вопрос, можно ли как то, например, определить функцию, таким образом, что она будет при вводе координат n точек считать площади всевозможных треугольников, то есть выдаст C из n по 3 результатов ?
py.user.next
  
>>> import itertools
>>> 
>>> def triangle_square(point1, point2, point3):
...     x1, y1 = point1
...     x2, y2 = point2
...     x3, y3 = point3
...     return abs((x1 * y2 - y1 * x2)
...              + (x2 * y3 - y2 * x3)
...              + (x3 * y1 - y3 * x1)) / 2
... 
>>> a, b, c, d = (0, 0), (0, 2), (2, 0), (2, 8)
>>> 
>>> out = [(i, triangle_square(*i))
...        for i in itertools.combinations((a, b, c, d), 3)]
>>> out
[(((0, 0), (0, 2), (2, 0)), 2.0), (((0, 0), (0, 2), (2, 8)), 2.0), (((0, 0), (2, 0), (2, 8)), 8.0), (((0, 2), (2, 0), (2, 8)), 8.0)]
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB