![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#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
Подпись ? Не, не слышал ...
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Уравнение диагональной прямой сделай и находи по нему y для x=108 и x для y=182. Учти, что в этой плоскости ось x сверху вниз направлена
ADD упс, ось y вниз, а не х
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 24.05.2016 в 08:31. |
![]() |
![]() |
![]() |
#3 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
![]()
Аватар
Возможно, я не очень разбираюсь, а что такое это "уравнение диагональной прямой" ? Я могу сделать два списка зависимостей, в первом будут расстояния от нуля до диагонали по оси Y для заданной X, а во втором - с точностью наоборот. Но тогда у меня в первом списке будет 640 зависимостей, во втором 464. Прописывать их все как то не комильфо. А формулу зависимости я просто не знаю.
Подпись ? Не, не слышал ...
|
![]() |
![]() |
![]() |
#4 | |
Раздолбайских Дел
Старожил
Регистрация: 22.05.2009
Сообщений: 3,828
|
![]() Цитата:
Код:
a — тангенс наклона линии, будет такой же, как и у исходной диагонали; b найдутся через точки; ну и отрезки уже не сложно будет посчитать.
Alar, верни репу!
|
|
![]() |
![]() |
![]() |
#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. |
|
![]() |
![]() |
![]() |
#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 пикселей. Код программы нет смысла проверять, пока ручные расчёты не покажут правильные результаты. Откуда такая аранжировка значений - я, мягко говоря, не понимаю. Где я ошибся ?
Подпись ? Не, не слышал ...
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]() Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#8 |
Раздолбайских Дел
Старожил
Регистрация: 22.05.2009
Сообщений: 3,828
|
![]()
-464/640 это и есть тангенс
Alar, верни репу!
|
![]() |
![]() |
![]() |
#9 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]() Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
![]() |
![]() |
![]() |
#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 |