Как найти площадь прямоугольника по координатам питон

Задача

Даны координаты вершин прямоугольника x1, y1 и x2, y2. Точки, лежащие в этом прямоугольнике назовем обработанными. Точки, расстояние от которых до точки с координатами x3, y3 не превышает r, назовем облученными. Требуется найти количество обработанных и облученных точек.

Иллюстрация для данных x1=y1=0, x2=5, y2=4, x3=4, y3=0, r=3:пример

Искомое количество точек в данном примере 14.

Проблема

Вот мое решение:

x1, y1, x2, y2 = map(int, input().split())
x3, y3, r = map(int, input().split())

if not (x3 in range(min(x1, x2), max(x1, x2) + 1) and y3 in range(min(y1, y2), max(y1, y2) + 1)):
    print('')
    exit()

w = min(abs(y2 - y3), r - 1) + min(abs(y1 - y3), r - 1) + 1
h = min(abs(x2 - x3), r - 1) + min(abs(x1 - x3), r - 1) + 1

corr = sum((abs(y2 - y3) >= r, abs(x3 - x1) >= r, abs(y1 - y3) >= r, abs(x2 - x3) >= r))

print((w * h) + corr)

На примере оно отрабатывает правильно, но дальше сыпется. Из моих ручных тестов следует, что оно выдает правильный ответ кроме тех случаев, когда точка x3, y3 не лежит в прямоугольнике x1,y1 x2,y2, поэтому в коде и добавлена заглушка.

Подскажите, как можно это исправить? Я думаю, что нужно как-то «достроить» прямоугольник до точки x3, y3, а потом вычесть из общего числа точек количество точек на достроенной площади, но я не знаю, как это правильно реализовать в коде.

2 / 2 / 0

Регистрация: 04.12.2022

Сообщений: 11

1

Посчитать площадь прямоугольника!

06.12.2022, 21:09. Показов 1387. Ответов 1


Студворк — интернет-сервис помощи студентам

В списке coords лежат четыре кортежа, каждый из которых соответствует координатам вершины прямоугольника на координатной плоскости. Напишите функцию, которая находит площадь прямоугольника по его координатам.

Обратите внимание: координаты могут находиться в любом порядке. Проверьте работоспособность программы на разных входных значениях списка.

Пример:

Input: coords = [(10, 20), (10, 30), (40, 20), (40, 30)]

Output: 300

Input: coords = [(10, 20), (40, 20), (40, 30), (10, 30)]

Output: 300



0



Vigilant Mole

489 / 252 / 97

Регистрация: 04.11.2022

Сообщений: 378

06.12.2022, 22:34

2

Python
1
2
3
4
5
6
7
8
def rs():
    x, y = map(list, (map(set, zip(*coords))))# или x, y = map(lambda a: list(set(a)), zip(*coords))
    return abs((x[0]-x[1])*(y[0]-y[1]))
 
coords = [(10, 20), (10, 30), (40, 20), (40, 30)]
print(rs())
coords = [(10, 20), (40, 20), (40, 30), (10, 30)]
print(rs())



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

06.12.2022, 22:34

Помогаю со студенческими работами здесь

Даны координаты левой верхней и правой нижней вершин прямоугольника. Найти его площадь
Буду признателен за полное решение

Периметр и площадь квадрата и прямоугольника
добрый день всем! Нужно для дз
Программа запрашивает у пользователя длину стороны квадрата и…

Написать функцию вычисляющую площадь прямоугольника
Написать функцию вычисляющую площадь прямоугольника. Создать декоратор для данной функции, для…

Вычислить периметр P и площадь S прямоугольника со сторонами, параллельными осям координат
Написать функции RectP(x1, y1, x2, y2), RectS(x1, y1, x2, y2), вычисляющие
периметр P и площадь S…

Посчитать периметр и площадь прямоугольника
Ребят помогите не считает значения
#include <iostream>
#include "Header.h"
using namespace…

Известны координаты вершин прямоугольника ABCD , A(x1,y1), B(x2,y2), C(x3,y3). Найти площадь и периметр прямоугольника.
как решить эту задачу с помощью delphi?
Известны координаты вершин прямоугольника ABCD , A(x1,y1),…

Ввести площадь и периметр прямоугольника. Вывести длины сторон этого прямоугольника
Помогите написать программу…

Пользователь водит прямоугольника площадь и периметр. Надо…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

2

If I have two points (51.9925734, 5.65038093), (51.99226769, 5.64991222)

I want to get the rectangle earth area.

I tried this method from other resources:

from area import area
obj_field = {'type':'Polygon','coordinates':[[[51.9925734,5.65038093],
                                     [51.9925734,5.64991222],
                                     [51.99226769,5.64991222],
                                     [51.99226769,5.65038093]]]}
field_area_2 = area(obj_field)
print(f'The total field area is: {field_area_2} square meters')
The total field area is: 1767.018812772391 square meters

But I’m not sure if it is correct.

Для небольших областей, таких как ваш пример, самый простой подход — преобразовать координаты широты и долготы в UTM. Затем вы можете использовать простую математику, например, вычислить площадь прямоугольника, как в этом фрагменте:

import utm

a_geo = 51.9925734, 5.65038093
b_geo = 51.99226769, 5.64991222

# Convert lat, lon to utm
a_easting, a_northing, zone, _ = utm.from_latlon(*a_geo)
b_easting, b_northing, _, _ = utm.from_latlon(*b_geo, force_zone_number=zone)

area = abs((a_easting - b_easting) * (a_northing - b_northing))

Найти площадь прямоугольника, треугольника или круга

В зависимости от того, что выберет пользователь, вычислить площадь либо прямоугольника, либо треугольника, либо круга. Если выбраны прямоугольник или треугольник, то надо запросить длины сторон, если круг, то его радиус.

Решение задачи на языке программирования Python

Площадь треугольника вычисляется по формуле Герона:

, где p — это полупериметр, a, b, c — длины сторон. Полупериметр равен половине периметра, то есть половине суммы сторон.

Площадь прямоугольника равна произведению его двух сторон (длины и ширины). Площадь круга вычисляется по формуле S = πr2.

from math import sqrt, pi
 
print("1-прямоугольник, 2-треугольник, 3-круг")
figure = input("Выберите фигуру: ")
 
if figure == '1':
    print("Длины сторон прямоугольника:")
    a = float(input("a = "))
    b = float(input("b = "))
    print("Площадь: %.2f" % (a * b))
elif figure == '2':
    print("Длины сторон треугольника:")
    a = float(input("a = "))
    b = float(input("b = "))
    c = float(input("c = "))
    p = (a + b + c) / 2
    s = sqrt(p * (p - a) * (p - b) * (p - c))
    print("Площадь: %.2f" % s)
elif figure == '3':
    r = float(input("Радиус круга R = "))
    print("Площадь: %.2f" % (pi * r ** 2))
else:
    print("Ошибка ввода")

Пример выполнение программы:

1-прямоугольник, 2-треугольник, 3-круг
Выберите фигуру: 2
Длины сторон треугольника:
a = 4
b = 5
c = 6
Площадь: 9.92

Начиная с версии 3.10, в Python имеется оператор match. Вариант решения задачи с его помощью будет выглядеть так:

from math import sqrt, pi
 
print("1-прямоугольник, 2-треугольник, 3-круг")
figure = input("Выберите фигуру: ")
 
match figure:
    case '1':
        print("Длины сторон прямоугольника:")
        a = float(input("a = "))
        b = float(input("b = "))
        print("Площадь: %.2f" % (a * b))
    case '2':
        print("Длины сторон треугольника:")
        a = float(input("a = "))
        b = float(input("b = "))
        c = float(input("c = "))
        p = (a + b + c) / 2
        s = sqrt(p * (p - a) * (p - b) * (p - c))
        print("Площадь: %.2f" % s)
    case '3':
        r = float(input("Радиус круга R = "))
        print("Площадь: %.2f" % (pi * r ** 2))
    case _:
        print("Ошибка ввода")

Больше задач в PDF

Понравилась статья? Поделить с друзьями:
  • Как найти массу если известно только скорость
  • Как исправить кожу на видео
  • Как одноклассниках найти основное
  • Где найти повязку как у наруто
  • Как найти инвестора для покупки квартиры