Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 23, 2019 23:11:13

Gira
Зарегистрирован: 2019-02-23
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Площади нескольких треугольников на Python

Здравствуйте! Имеются координаты четырех точек, необходимо найти площади всевозможных треугольников(их всего 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 результатов ?

Офлайн

#2 Фев. 24, 2019 01:59:25

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10024
Репутация: +  857  -
Профиль   Отправить e-mail  

Площади нескольких треугольников на Python

  
>>> 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)]
>>>



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version