Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/55: Рейтинг темы: голосов - 55, средняя оценка - 4.51
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 57

Определить координаты 4 вершины квадрата

08.06.2021, 13:35. Показов 11539. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Во время предвыборных кампаний особое внимание уделяется вопросам экологии. Перед муниципальными выборами в Байтсбурге один из независимых кандидатов представил проект восстановления Старого Парка в центре города. Изначально парк на плане имел форму квадрата, однако несколько десятков лет назад во время реконструкции одной из площадей города площадь парка была уменьшена вдвое, а сам парк стал представлять собой треугольник.
Три вершины этого треугольника совпадают с угловыми точками старого парка, для детальной проработки плана требуется определить местоположение четвёртой.
Вот мой код
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import math
 
x1,y1 = map(int,input().split())
x2,y2 = map(int,input().split())
x3,y3 = map(int,input().split())
sumx1 = x1-x2
sumx = []
sumy = []
sumx2 = x1-x3
sumx3 = x2-x3
sumy1 = math.sqrt(sumx1**2 + (y1-y2)**2)
sumy2 = math.sqrt(sumx3**2 + (y1-y3)**2)
sumy3 = math.sqrt(sumx2**2 + (y2-y3)**2)
sumx.append(sumy1)
sumx.append(sumy2)
sumx.append(sumy3)
k = sumx.index(max(sumx))
if k ==0:
    h = x1-x3+x2
    k = y1-y3+y2
elif k == 1:
    h = x1-x2+x3
    k = y1-y2+y3
elif k == 2:
    h = x2- x1+x3
    k = y2-y1+y3
print(h,k)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.06.2021, 13:35
Ответы с готовыми решениями:

Даны две вершины треугольника. Найти координаты третьей вершины
Даны две вершины треугольника А(х1,у1), В(х2,у2) и точка пересечения медиан М(хм,хм). Найти координаты третьей вершины. Помогите...

Вычислить координаты вершины параболы
Парабола задана уравнением y=x^2+px+q. Вычислить координаты вершины параболы. Результат вывести с тремя знаками после запятой. Исходные...

Найти координаты третьей вершины треугольника
Даны две вершины треугольника А(x1,y1), B(x2,y2) и точка пересечения медиан M(xm,ym). Найти координаты третьей вершины. Помогите...

9
Костыли любой сложности
201 / 146 / 36
Регистрация: 27.10.2019
Сообщений: 843
08.06.2021, 13:59
JessyPinkman, причём здесь питон, когда это дело геометрии, очевидно что искомый x будет равен х верхней точки, а искомый у нижней точки.
да и их можно в проекте посмотреть DDD
0
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 57
08.06.2021, 14:04  [ТС]
Тоесть? Вот допуситм пример

Ввод
0 -7
-10 -3
-7 -10
Вывод
-3 0
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
08.06.2021, 16:55
JessyPinkman, если стороны квадрата параллельны осям, то
Python
1
2
3
4
5
6
x1,y1 = map(int,input().split())
x2,y2 = map(int,input().split())
x3,y3 = map(int,input().split())
x4 = set((y1,y2,y3)) - set((x1,x2,x3))
y4 = set((x1,x2,x3)) - set((y1,y2,y3))
print(*x4, *y4)
0
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 57
08.06.2021, 17:07  [ТС]
Не не параллельны
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
08.06.2021, 19:15
Лучший ответ Сообщение было отмечено JessyPinkman как решение

Решение

JessyPinkman,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
x1,y1 = map(int,input().split())
x2,y2 = map(int,input().split())
x3,y3 = map(int,input().split())
 
# для скалярного произведения векторов
v12 = (x1-x2) * (y1-y2)
v13 = (x1-x3) * (y1-y3)
v23 = (x2-x3) * (y2-y3)
 
if v12 == -v13:
    x4 = x2 + x3 - x1
    y4 = y2 + y3 - y1
elif v12 == -v23:
    x4 = x1 + x3 - x2
    y4 = y1 + y3 - y2
else:
    x4 = x1 + x2 - x3
    y4 = y1 + y2 - y3
    
print((x4, y4))
1
5517 / 2870 / 571
Регистрация: 07.11.2019
Сообщений: 4,761
08.06.2021, 19:39
Лучший ответ Сообщение было отмечено Gdez как решение

Решение

Нахождение 4-ой вершины дельтоида (квадрат как частный случай дельтоида):
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import numpy as np
from scipy.spatial.distance import pdist
points=np.array([[float(input(f'{i}{j}=')) for i in 'xy']for  j in '₁₂₃'])
#points=np.array([[2.0, 1.0], [5.0, -1.0], [4.0, 4.0]])
edges_dist=pdist(points)[::-1]
# the last point opposite the long side of the triangle:
ordered_points=points[np.argsort(edges_dist), :] 
# homogeneous coordinates:
ordered_points_homogeneous=np.hstack((ordered_points, np.ones((3,1))))
# translate matrix
T=np.array([[1,0,0], [0,1,0],[-ordered_points[0,0],-ordered_points[0,1],1]])
# rotate angle
angle=np.arctan2((ordered_points_homogeneous@T)[1,1], (ordered_points_homogeneous@T)[1,0])
# rotate matrix:
R=np.array([[np.cos(angle),-np.sin(angle),0], [np.sin(angle),np.cos(angle),0],[0,0,1]])
# mirror matrix
M=np.array([[1,0,0], [0,-1,0],[0,0,1]])
# all transform matrix:
A=T@R@M@np.linalg.inv(R)@np.linalg.inv(T)
# fourth vertex of the square:
pos=(ordered_points_homogeneous[2,:]@A)[:-1]
print(f'x₄={pos[0]:.2f}, y₄={pos[1]:.2f}')
1
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 57
08.06.2021, 20:25  [ТС]
УУ спасибо, но даже у проверяющая система не знает что такое scrypti
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
08.06.2021, 20:40
u235, через numpy круто
Думаю через вектора не намного "тяжелее" код будет.
Но для тел (не фигур), конечно, numpy.
1
5517 / 2870 / 571
Регистрация: 07.11.2019
Сообщений: 4,761
08.06.2021, 22:41
Вот еще для квадрата, без numpy:
Python
1
2
3
4
5
6
7
8
9
10
points=[[float(input(f'{i}{j}=')) for i in 'xy']for  j in '₁₂₃']
#points=[[2.0, 1.0], [5.0, -1.0], [4.0, 4.0]]
mass_center=[sum(i)/3 for i in zip(*points)] # calculate mass center
points2=[[points[j][i]-mass_center[i] for i in (0,1)] for j in (0,1,2)] # origin to mass center
length=[(j, x[0]*x[0]+x[1]*x[1]) for j, x in enumerate(points2)] # system of vector from mass center to vertices
idx=min(length, key=lambda x: x[1])[0] # index shortest vector from mass center
points2.append(points2.pop(idx)) # shortest vector to end list
fourth_vertex=[x[0]+x[1]-x[2] for x in zip(*points2)]
pos=[x[0]+x[1] for x in zip(mass_center, fourth_vertex)] #reconstruct origin
print(f'x₄={pos[0]:.2f}, y₄={pos[1]:.2f}')
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.06.2021, 22:41
Помогаю со студенческими работами здесь

Найти координаты четвертой вершины прямоугольника
16. Данные целочисленные координаты трех вершин прямоугольника, стороны которого параллельные координатным осям. Найти координаты его...

Определить координаты четвертой вершины прямоугольника
Заданы координаты трех вершин прямоугольника. Необходимо определить координаты четвертой вершины. Входные данные Входная строка...

Искажаются координаты квадрата при вращении
При изменении угла поворота точек координаты постепенно уменьшаются т.е. квадрат становится меньше. Быть может проблема в неточности...

Известны координаты вершин квадрата. Найти его площадь и периметр
Известны координаты вершин квадрата ABCD: А(х1,у1) и С(х2,у2). Найти его площадь S и периметр P Помогите пожалуйста заранее спасибо

Найти координаты вершин квадрата, если известны координаты одной вершины и уравнение одной стороны
Найти координаты вершин квадрата, если известны координаты одной вершины (11;23) и уравнение одной стороны у=2/19*х+50/19


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru