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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2011, 12:40   #1
Русский человек
 
Регистрация: 17.03.2011
Сообщений: 9
По умолчанию Задача о кошачьей ноге

Задача состоит в том, чтобы написать программу, определяющую положение двух точек на плоскости, иначе говоря, их координаты.

Имеется система из трёх отрезков (т.н. кошачья нога), концы первого и третьего из которых совпадают с концами второго. Схематически (без учёта углов) можно представить это так: (A)------(B)------(C)------(D) (отрезки, соответственно, - AB, BC и CD). На вход программы поступает длина этих отрезков и координаты точек A и D. При этом известно, что угол ABC (т.е. образуемый отрезками AB и BC) соотносится с углом BCD как c (этот параметр также подаётся в программу). Необходимо найти точки B и C.

Помогите, пожалуйста, составить эту программу.
Русский человек вне форума Ответить с цитированием
Старый 17.03.2011, 14:29   #2
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Вообще-то, при таком условии, она однозначного решения не имеет. Необходим ещё один параметр. Например, угол BAD или ADC.
Vago вне форума Ответить с цитированием
Старый 17.03.2011, 14:47   #3
Русский человек
 
Регистрация: 17.03.2011
Сообщений: 9
По умолчанию

Верно. Решение не однозначно. Оно двузначно. То есть получится по два варианта точек B и C, а суть в том, что первый вариант точки будет симметричен второму относительно прямой AD. В частном случае, когда ломаная ABCD вытягивается в отрезок, эти варианты совпадают.

Последний раз редактировалось Русский человек; 17.03.2011 в 14:57.
Русский человек вне форума Ответить с цитированием
Старый 17.03.2011, 14:49   #4
Русский человек
 
Регистрация: 17.03.2011
Сообщений: 9
По умолчанию

Это весьма очевидно. Если бы давались какие-то углы, задача была бы намного проще.
Русский человек вне форума Ответить с цитированием
Старый 17.03.2011, 15:21   #5
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Язык? Бюджет? Сроки?
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 17.03.2011, 15:52   #6
Русский человек
 
Регистрация: 17.03.2011
Сообщений: 9
По умолчанию

Язык - Глагол, на крайняк Рапира.
Сроки - чем быстрее, тем лучше. Желательно в течение дня.
Бюджет - сколько хотите за такую работу?
Русский человек вне форума Ответить с цитированием
Старый 17.03.2011, 16:21   #7
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Человека, умеющего решать обратную кинематическую задачу, и до сих пор программирующего на Рапире... Ну, это долго придётся искать!.. :D
Vago вне форума Ответить с цитированием
Старый 17.03.2011, 16:32   #8
Русский человек
 
Регистрация: 17.03.2011
Сообщений: 9
По умолчанию

Я тоже так думаю =) Поэтому и предлагаю, кому интересны всякие головоломки, поучаствовать в размышлениях. Может, что-нибудь и придумаем.
Русский человек вне форума Ответить с цитированием
Старый 17.03.2011, 16:45   #9
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Ну, тупое численное решение, путём нахождения минимума ф-ии двух переменных, подойдёт? Только НЕ на Рапиде, естественно.

Последний раз редактировалось Vago; 17.03.2011 в 16:50.
Vago вне форума Ответить с цитированием
Старый 17.03.2011, 16:51   #10
Русский человек
 
Регистрация: 17.03.2011
Сообщений: 9
По умолчанию

Конечно, осталось только вывести эти функции.

Вообще, по условию задачи, мы имеем систему из 4-х уравнений:

( x(A) - x(B) ) ^ 2 + ( y(A) - y(B) ) ^ 2 = |AB| ^ 2 ;
( x(D) - x(С) ) ^ 2 + ( y(D) - y(С) ) ^ 2 = |CD| ^ 2 ;
( x(B) - x(С) ) ^ 2 + ( y(B) - y(С) ) ^ 2 = |BC| ^ 2 ;
ABC = c * BCD .

Тут x(T) - координата x точки T; y(T) - соответственно, y; |OT| - расстояние между точками O и T (длина отрезка OT); ABC и BCD - углы; c - задаваемая постоянная.

Задачу можно сформулировать по-другому: у четырёхугольника известны две противолежащие вершины, длины двух противолежащих сторон и обеих диагоналей, а также соотношение двух противолежащих углов. Найти оставшиеся две вершины.
Русский человек вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача минимизации дисбаланса на линии сборки (задача минимакса) LenZab Microsoft Office Excel 13 13.03.2011 22:51
Задача Anna T Паскаль, Turbo Pascal, PascalABC.NET 4 13.12.2010 18:47
Задача 1 UnLimited Помощь студентам 1 13.10.2010 19:26
Задача darter96 Помощь студентам 2 24.06.2009 15:34