0 / 0 / 0
Регистрация: 17.11.2018
Сообщений: 6
|
|
Построить четырехугольник с заданными сторонами03.04.2019, 21:21. Показов 14143. Ответов 23
Решить задачу и используя функции класса TСanvas нарисовать соответствующую геометрическую фигуру. Даны четыре числа а, b, с, d. Необходимо определить, существует ли четырехугольник с такими длинами сторон.
В общем условие существования я то проверил, но сложности возникли с нахождением координат и построением. Препод сказал,что вроде можно одну координату задать или за (0;0) обозначить. Помогите хотя-бы объяснением на словах.
0
|
03.04.2019, 21:21 | |
Ответы с готовыми решениями:
23
Построить четырехугольник Выяснить, можно ли построить прямоугольный треугольник со сторонами K, L, M Задан треугольник тремя сторонами A, B и C. Построить программу вычисления его углов в градусах. |
![]() |
|
03.04.2019, 21:27 | |
![]() Решение
не хватает половины данных для построения, да и для првоерки тоже... надо либо 4 коордианты вершин(8 значений), либо длины сторон + углы, по данным 4 числам (этим длинам) можно только построить точки на числовой оси и ничего адекватного больше
1
|
0 / 0 / 0
Регистрация: 17.11.2018
Сообщений: 6
|
|
03.04.2019, 21:33 [ТС] | |
Я это и так знаю. Если бы всё это было дано, то я бы сделал без проблем. Подходил с этим вопросом к преподу,он сам толком не знает, только плечами пожимает и говорит, что такой идиотский вариант попался. Но мне то нужно сдать. Мы с ним пытались что-то думать, но в итоге всё скатывается в задачу, которую я даже на листе толком то решить не могу.
0
|
![]() |
|
03.04.2019, 21:49 | |
это шутка такая??? препод курит чота с вами на уроках?)) дайте тоже попробовать)))
а как сдать если препод не знает, как он проверять будет?))))) я ф шоке .. ппц.. а мы то чем поможем решить?))) физику и математику перевернем и научимся строить по длинам сторон фигуры не имея дополнительных данных... только меня смущает вот чо покажи! Добавлено через 11 минут вот как раз даже уже моя недавно начатая программа может проилюстрировать ... вот посмотри, что такое четырехугольник... и что можно с 4 длинами сделать, можешь преподу показать наглядность
0
|
![]() |
|
03.04.2019, 22:47 | |
и что это даст?
ну пусть у нас будет 2 3 4 5 длины сторон, что из этого можно сделать? Я ничего не могу сделать)) потому что тут бесконечное количество прямых/ треугольников/ четырехугольников, если длины могли бы быть нулями то еще и точку можно описать этими длинами, надо либо углы еще, либо пару точек, сейчас у нас 4 уравнения можно составить с 8 неизвестными, система решения не имеет на данный момент как-бэ
0
|
421 / 150 / 27
Регистрация: 04.08.2018
Сообщений: 634
|
|
04.04.2019, 01:42 | |
Это даст ответ на вопрос:
Разве? По-моему, система имеет бесконечное количество решений. Рисуем любое возможное решение - это не противоречит условию задачи.
0
|
![]() |
|
04.04.2019, 09:42 | |
я хочу наглядное решение сего видеть, взаимосвязь как минимум
однозначного решения... ну написано же при этом отсеивайте точки/ прямые /треугольники из возможного решения... НО при этом учитывая, что длины сторон изменяться не могут ни коим образом, т.е. берем одну линию, к ней присандаливаем вторую, под произвольным углом, далее ко второй третью, снова под произвольным углом, далее надо запаковать четвертую так, чтобы начало первой линии и конец третьей линии оказались на расстоянии друг от друга в длину четвертой линии, решить можно только методом подгона, числовым методом решения, схождение в некой дельте. Приветствую Вас, мы пришли в тему "Инверсная кинематика" ![]()
0
|
421 / 150 / 27
Регистрация: 04.08.2018
Сообщений: 634
|
|
04.04.2019, 15:17 | |
Arcor, я решил без всякой "Инверсной кинематики". Найден один недочёт - нельзя построить квадрат, т.к. одна сторона обязательно должна быть длиннее других.
Я не программист, поэтому сделал в моём любимом мадкаде. Формулы простые, перевести в ЯП тривиально. Идея в следующем: Мы будем всегда строить четырёхугольник, у которого две стороны параллельны. Для нахождения углов я воспользовался теоремой косинусов. Треугольник строю из трапеции уменьшением нижней длиннейшей стороны на величину верхней стороны, которая должна быть не больше минимальной из a,b,c,d. Нижнюю сторону после уменьшения я назвал dd. И строю треугольник "b,c,dd". Для нахождения левого угла bdd между b и dd применяю теорему косинусов. Дальше для нахождения координат из длин и углов я использую тривиальные формулы. Получаю bx, by. Координаты линии c так же тривиально находятся из b. Обратно "горизонтально растягиваю" треугольник в трапецию и нахожу координаты линии a. Т.о. нижняя линия d самая длинная из всех, верхняя линия - a не меньше самой короткой, слева линия b, справа - c. Не сортирую заданные длины, это тоже тривиально.
0
|
![]() |
|
04.04.2019, 15:42 | |
я и говорил, что нету одного очевидного ответа, есть бесконечное множество решений, вы взяли что-то одно и начали плястаь оттуда, таким же успехом можно было бы придумать и точки, расположенные попарно на растоянии соответствующим длинам. затем например параллельным переносом переность, "зацепляя" их друг за дружку.
в вашем алгоритме, каким способом мы будем брать две линии которые обязаны быть параллельны, вы привели 4 картинки с индивидуальными длинами, покажите как построить из 4 длин разные варианты, комбинируя линии по разному алгоритм интреесный все же ![]()
0
|
Почетный модератор
![]() 64311 / 47608 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
|
||||||
04.04.2019, 16:08 | ||||||
Или такой алгоритм. Программу конечно нужно довести до ума.
1
|
421 / 150 / 27
Регистрация: 04.08.2018
Сообщений: 634
|
|
04.04.2019, 16:42 | |
Эти линии выбираются по длине. Самая длинная и самая короткая всегда будут параллельны. Самая короткая не обязательно должна быть короче всех остальных, может быть равной.
Ды вот нельзя комбинировать. Входные данные должны сортироваться и форма четырёхугольника будет типичной. В задании не вижу строгого следования линий, т.е. можно строить линии в любом порядке. Я выбрал порядок самая длинная, средняя, самая короткая, средняя. В другом порядке нельзя построить по моему алгоритму. Не по теме: С версии 13 для меня он Mad :)
0
|
![]() |
|
04.04.2019, 17:57 | |
Я вот что начал сейчас на работе перед уходом уже. уже бежать надо домой.. ээхх не доделал чуть
я со своей кинематикой)))) идея: берем теорему косинусов берем 3 первых длины, сравниваем длины, если сумма двух больше или равно третьей - то возможно строить треульник вырешиваем альфу выбираем произвольную бетту, чтобы построить первую линию, синус/косинус для высчитывания конечных точек первой линии имя бетту + полученныую альфу, строим вторую линию, конечная точка снова синус/косинус от альфы + бетта построили 2 линии уже!!! берем в расчет С, Д и С' снова по теореме косинусов решаем гамму, так как длина С у нас осталась, крутим ее вокруг на угол гамма + тот угол, что был у С до этого и вуаля мы построили четырехугольник, кинематическая модель которого останется неизменной для любых изменений углов в чем моя загвоздка вышла сейчас и я не успел решить это на работе - надо правильно распознать ситуацию, когда к полученному углу надо + 180, а когда не надо вообще я пошел домой, может быть вечером открою снова и попробую решить ![]()
0
|
421 / 150 / 27
Регистрация: 04.08.2018
Сообщений: 634
|
|
04.04.2019, 18:37 | |
Спасибо, потырил сортировку и может что-то ещё.
Сделал свой алгоритм, вроде работает. Разве что хотел сделать выполнение процедуры при показе формы, чтобы при старте программы уже было нарисовано. Добавляю процедуру в onShow формы, но не работает. Добавлял в другие события, но ничего не заработало. Чтобы отрисовало надо или сменить значение, масштаб или кликнуть на форму(или на PaintBox). Забыл добавить проверку на квадрат и отлов исключительных ситуаций!
0
|
421 / 150 / 27
Регистрация: 04.08.2018
Сообщений: 634
|
|
04.04.2019, 19:38 | |
Arcor, а вам нужно математически красивое решение или построить четырёхугольник? Если только последнее, то вы не думали про итерационный метод? Строите квадрат на основе первой стороны. Затем сравниваете вторую заданную сторону со второй стороной квадрата. Если не равны, то равняете. Сложность тут в том, что придётся равнять одну сторону и два угла. Придётся хитро разбивать на треугольники и по той же теореме косинусов считать новые углы. Это наркомания, конечно, но при современных вычислительных мощностях почему бы и нет?
0
|
![]() |
|
04.04.2019, 19:47 | |
и об этом я писал жеж выше...
потому мне и нравится метод "инверсной кинематики"(тут только малая часть этого значения), это элегантное геометрическое решение
Добавлено через 3 минуты на картинке ошибка.. там - 2АВ, а не -2АС
0
|
![]() |
|
04.04.2019, 21:43 | |
мой алгоритм выше был слегка не верный, вот что я хотел в конце концов сделать
по первой картинке 1 - берем 4 произвольные длины(A, B, C, D), заведомо из которых можно соорудить треугольник 2 - берем вспомогательную длину Q, любой длины, но тже при условии, что с ней можно построить треугольник 3 - по теореме косинусов вырешиваем углы 1 - 6, использовать будем 1, 2 и 6; 3, 4 и 5 для проверки или построения с другого "края" 4 - по углу 1 строим первую линию, длиной А 5 - по углу 2 строим вторую линию, длиной B 6 - по углу 6 строим третью линию, длиной С 7 - линия D строится автоматически, так как она тоже учавствовала при решении теоремы косинусов, так что все взаимосвязано!!! по сути тут только одна проищвольная величина выбирается, это длина Q, можно сделать и стартовый угол еще, чтобы задавать, но я просто взял из получившегося треугольника автоматом сгенерированную из трех длин, A, B и Q. той же теоремой косинусов далее просто от балды куча разных длин и в итоге идет замер реальной длины, решилось ли все верно или нет, слева в логе можно видеть углы и длины после проверки, на картинке начатая прога-фреймворк для 2D CAD, просто там уже есть много инструментов для удобной работы с геометрией)) не стал канвасом баловаться.. осталась самая малость сделать распознавание правильного угла, чем я в своем фреймворке и займусь, эта тема толкнула нановые мысли и я делал в первую очередь это задание для себя самого)
0
|
04.04.2019, 21:43 | ||||||
Помогаю со студенческими работами здесь
20
Пройдет ли кирпич со сторонами x,y,z сквозь прямоугольное отверстие со сторонами r и s. Стороны отверстия долж Определить, можно ли построить треугольник с заданными сторонами
Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Работа с объемным DOM в javascript
Htext 04.04.2025
Сегодня прочитал статью тут о расходах памяти в JS, ее утечках и т. п. И вот что вспомнил из своей недавней практики. Может, кому пригодится. Хотя, в той статье об этом тоже есть.
Дело в том, что я. . .
|
Оптимизация производительности Node.js с помощью кластеризации
run.dev 04.04.2025
Масштабирование приложений для обработки тысяч и миллионов запросов — обыденная задача для многих команд. Node. js, благодаря своей асинхронной событийно-ориентированной архитектуре, стал популярной. . .
|
Управление зависимостями в Python с Poetry
py-thonny 04.04.2025
Стандартный инструмент для установки пакетов в Python - pip - прекрасно справляется с базовыми сценариями: установил пакет командой pip install и используешь его. Но что произойдёт, когда разные. . .
|
Мониторинг с Prometheus в PHP
Jason-Webb 04.04.2025
Prometheus выделяется среди других систем мониторинга своим подходом к сбору и хранению метрик. В отличие от New Relic, который использует агентный подход и отправляет данные во внешнее хранилище,. . .
|
Пакет Context в Golang: Управление потоками и ресурсами
golander 04.04.2025
Работа с горутинами в Go часто напоминает управление непослушными детьми - они разбегаются кто куда, делают что хотят и не всегда завершаются вовремя. К счастью, в Go 1. 7 появился пакет context,. . .
|
Контейнеризация React приложений с Docker
Reangularity 03.04.2025
Контейнеризация позволяет упаковать приложение со всеми его зависимостями в автономный контейнер, который можно запустить на любой платформе с установленным Docker. Это существенно упрощает процессы. . .
|
Свой попап в SwiftUI
mobDevWorks 03.04.2025
SwiftUI, как декларативный фреймворк от Apple, предоставляет множество инструментов для создания пользовательских интерфейсов. В нашем распоряжении есть такие API как alerts, popovers, action sheets. . .
|
Антипаттерны микросервисной архитектуры
ArchitectMsa 03.04.2025
Хорошо спроектированная микросервисная система может выдержать испытание временем, оставаясь гибкой, масштабируемой и устойчивой к большинству проблем. Такая архитектура обладает высоким уровнем. . .
|
std::mutex в C++: Советы и примеры использования
bytestream 03.04.2025
std::mutex - это механизм взаимного исключения, который гарантирует, что критический участок кода выполняется только одним потоком в каждый момент времени. Это простое, но могущественное средство. . .
|
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
|