Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2019, 21:33   #1
ifigurin12
 
Регистрация: 02.10.2019
Сообщений: 3
По умолчанию Задача на прямоугольник

Задачи: "Четвертая вершина. Даны действительные числа x1, y1, x2, y2, x3, y3. Известно, что точки с координатами (x1,y1), (x2,y2), (x3,y3) являются вершинами прямоугольника. Определить координаты четвертой вершины прямоугольника."
У меня есть решение для этой задачи, но только при условии что прямоугольник лежит параллельно осям x и y, а если он лежит не параллельно, то как тогда помогите пожалуйста.
ifigurin12 вне форума Ответить с цитированием
Старый 02.10.2019, 21:59   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

x0 = (x1+x3)/2
y0 = (y1+y3)/2
dx = x0-x2
dy = y0-y2
x4 = x0+dx
y4 = y0+dy

В общем, геометрия, 6-й класс. Все понятно из рисунка.
Конечно, предполагается, что точки 1,2,3,4 идут по порядку по периметру прямоугольника. Нужно проверять, прямой ли угол при вершине 2, а если нет - то при какой. Это - уже НИР
Изображения
Тип файла: jpg x1y1.JPG (4.4 Кб, 41 просмотров)

Последний раз редактировалось digitalis; 02.10.2019 в 22:11.
digitalis вне форума Ответить с цитированием
Старый 02.10.2019, 22:07   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Один из способов:
Четвёртая точка отстоит по X и Y от точки X1, Y1 на столько же, насколько точка X3, Y3 отстоит от точки X2, Y2.
Т.е. находишь dX и dY (dX = X3-X2, dY = Y3-Y2) и затем координаты четвёртой точки: X4 = X1+dX, Y4 = Y1+dY.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 03.10.2019, 19:32   #4
ifigurin12
 
Регистрация: 02.10.2019
Сообщений: 3
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
x0 = (x1+x3)/2
y0 = (y1+y3)/2
dx = x0-x2
dy = y0-y2
x4 = x0+dx
y4 = y0+dy

В общем, геометрия, 6-й класс. Все понятно из рисунка.
Конечно, предполагается, что точки 1,2,3,4 идут по порядку по периметру прямоугольника. Нужно проверять, прямой ли угол при вершине 2, а если нет - то при какой. Это - уже НИР
Спасибо большое!
Возможно это будет наглостью, но как примерно будет выглядеть код на C++, я в школе просто Python учил, а в универе вот C++
ifigurin12 вне форума Ответить с цитированием
Старый 03.10.2019, 19:43   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Я с Си приплюснутым вообще не работал, но смутно подозреваю, что то, что я намулюкал, уже и есть код, если добавить ; , ввод-вывод, инклюды и определение переменных. Эти штуки взять из букваря по С++ и добавить туда вот вышесказанное.

Последний раз редактировалось digitalis; 03.10.2019 в 19:47.
digitalis вне форума Ответить с цитированием
Старый 03.10.2019, 19:46   #6
ifigurin12
 
Регистрация: 02.10.2019
Сообщений: 3
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Я с Си приплюснутым вообще не работал, но смутно подозреваю, что то, что я намулюкал, уже и есть код, если добавить ; , ввод-вывод и определение переменных. Надо эти штуки взять из букваря по С++ и добавить туда вот это.
К сожалению 3 точки могут быть в произвольном порядке, твой код действительно работает, но только при таком рисунке. А как можно понять какой угол прямой фиг его знает...
ifigurin12 вне форума Ответить с цитированием
Старый 03.10.2019, 19:55   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А чего тебе тот порядок? Коль по условию прямоугольный треугольник задан, то найди его гипотенузу. Она самая длинная среди сторон такого треугольника. И сразу узнаешь какой угол прямой. Если еще и проверить, что на самом деле треугольник прямоугольный - примени теорему Пифагора
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.10.2019, 19:57   #8
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Легко. Даже прямой угол искать не надо. Перебором (Пифагором ) находим две точки, лежащие дальше всех одна от другой - они, значицца, на диагонали и имеют фамилию (x1,y1) и (x3,y3). Оставшаяся, сталбыть, (x2,y2).
Код писать не буду, а то совсем обленишься.
Аватар Это у нас синхронное плавание получается
digitalis вне форума Ответить с цитированием
Старый 03.10.2019, 21:09   #9
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

У меня остался вопрос.
Зачем делать ненужную операцию по поиску координат средней точки диагоналей?
Если нашли две противоположные точки, то далее см. пост 3.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 04.10.2019, 11:17   #10
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Методов может быть много. Даже экзотики ради - методом Монте-Карло. И оптимальный вариант никто не обещал. Как туземец на коне: что вижу, о том и пою.

Последний раз редактировалось digitalis; 05.10.2019 в 10:01.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Класс прямоугольник dmtrb C# (си шарп) 0 18.11.2017 20:51
Прямоугольник RAFA91 Win Api 0 10.03.2016 12:35
точка и прямоугольник julian97 Помощь студентам 2 01.12.2013 21:31
прямоугольник ronny137 Помощь студентам 2 21.04.2011 19:34
C#, прямоугольник Goldcoding Фриланс 2 09.04.2010 20:34