|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
24.05.2016, 06:22 | #1 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Найти длины отрезков
Всем привет.
Есть следующая задача: дана плоскость размером 640x464 точек, через которую проведена боковая диагональ (из правого верхнего в левый нижний угол); так же дана точка с произвольными координатами x и y (которые известны). Требование: провести линию, которая будет параллельна диагонали, и будет проходить через данную точку. На иллюстрации требуемая линия - C, описанная точка - пересечение отрезков A, B и C, имеет координаты (x=108,y=182) - взято в качестве примера. Что бы провести линию C, нужно получить её начальную координату X и конечную координату Y. Первая равна 640-A, вторая - 464-B. Вопрос: как найти длины отрезков A и B ? https://pp.vk.me/c630716/v630716413/...X12kRJkSPo.jpg
Подпись ? Не, не слышал ...
|
24.05.2016, 06:49 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Уравнение диагональной прямой сделай и находи по нему y для x=108 и x для y=182. Учти, что в этой плоскости ось x сверху вниз направлена
ADD упс, ось y вниз, а не х
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 24.05.2016 в 08:31. |
24.05.2016, 09:16 | #3 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Аватар
Возможно, я не очень разбираюсь, а что такое это "уравнение диагональной прямой" ? Я могу сделать два списка зависимостей, в первом будут расстояния от нуля до диагонали по оси Y для заданной X, а во втором - с точностью наоборот. Но тогда у меня в первом списке будет 640 зависимостей, во втором 464. Прописывать их все как то не комильфо. А формулу зависимости я просто не знаю.
Подпись ? Не, не слышал ...
|
24.05.2016, 09:26 | #4 | |
Раздолбайских Дел
Старожил
Регистрация: 22.05.2009
Сообщений: 3,828
|
Цитата:
Код:
a — тангенс наклона линии, будет такой же, как и у исходной диагонали; b найдутся через точки; ну и отрезки уже не сложно будет посчитать.
Alar, верни репу!
|
|
24.05.2016, 10:02 | #5 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Можно без вычислений тангенса. Там уравнение через две точки:
-(y-464)/464=x/640 -> y=-(x*464/640)+464 x=-(y-464)*640/464 и находи из них Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 24.05.2016 в 10:33. |
|
24.05.2016, 11:41 | #6 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Я замутил другой способ, и я сейчас опишу его.
Можно пробовать находить длину меньшего основания трапеции (показано на следующем рисунке), тогда искомое значение будет будет равно lsot - T(c), где lsot - длина меньшего основания трапеции, T - заданная точка, с - зависимая координата точки. https://pp.vk.me/c630719/v630719413/...y0U0le-5XM.jpg На изображении пара отрезков A и A0 в сумме дают меньшее основание первой трапеции, B и B0 - второй трапеции. Угол d можно получить по соответствующей формуле треугольника, и этот угол понадобится в формуле основания трапеции. Для второй трапеции угол свой (забыл дорисовать). Руководствуясь формулами прямоугольной трапеции и прямоугольного треугольника можно получить все необходимые значения. Но как бы не так, если у меня бы всё получилось - сюда бы я не стал писать. Ручной расчёт в радианах показывает, что длина отрезка A+A0 равна 325 пикселей, при указании углов, как градусов длина того же отрезка равна 508 пикселей, а программа мне насчитала 433 пикселя. На деле же можно в paint увидеть, что длина этого отрезка равна 388 пикселей. Код программы нет смысла проверять, пока ручные расчёты не покажут правильные результаты. Откуда такая аранжировка значений - я, мягко говоря, не понимаю. Где я ошибся ?
Подпись ? Не, не слышал ...
|
24.05.2016, 11:50 | #7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
24.05.2016, 14:06 | #8 |
Раздолбайских Дел
Старожил
Регистрация: 22.05.2009
Сообщений: 3,828
|
-464/640 это и есть тангенс
Alar, верни репу!
|
24.05.2016, 14:16 | #9 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
24.05.2016, 17:49 | #10 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Аватар
По вашей формуле X рассчитывается правильно (279 для моего примера), Y рассчитывается не правильно - для моего примера 202, а получается 442.
Подпись ? Не, не слышал ...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Найти квадрат длины веревки | bmxsavo | Общие вопросы C/C++ | 0 | 21.05.2014 14:07 |
Ассемблер. Найти слово минимальной длины и укоротить остальные слова до длины минимального. | xqr | Помощь студентам | 1 | 25.05.2012 22:41 |
Даны длины отрезков a,b,c,d,e.Выяснить,можно ли построить треугольник со сторонами {a,b,c},{b,c,d},{c,d,e}?Если да,то найдите пло | kazbek1 | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 18.05.2012 21:15 |
Найти длины векторов Pascal | GaJIbI4 | Помощь студентам | 3 | 28.12.2011 21:17 |
Нужно найти координаты точки пересечения двух отрезков в пространстве... | Dima6120 | Мультимедиа в Delphi | 2 | 30.07.2010 13:36 |