Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Линия


Автор: PMOLO 19.6.2012, 18:46
На картинке дана линия. Необходимо дорисовать линию до квадрата. Я знаю, как определить координаты этой линии, но не знаю, как дорисовать ее до квадрата. Подскажите!

Автор: superVad 19.6.2012, 20:50
Цитата(PMOLO @  19.6.2012,  17:46 Найти цитируемый пост)
На картинке дана линия. Необходимо дорисовать линию до квадрата. Я знаю, как определить координаты этой линии, но не знаю, как дорисовать ее до квадрата. Подскажите!

От обоих концов этой линии рисуешь в одну сторону две линии такой же длинны под углом 90 градусов. Потом соединяешь концы нарисованных тобой двух линий.

Автор: Pawl 19.6.2012, 21:31
Цитата(superVad @  19.6.2012,  20:50 Найти цитируемый пост)
От обоих концов этой линии рисуешь в одну сторону две линии такой же длинны под углом 90 градусов. Потом соединяешь концы нарисованных тобой двух линий.

 smile smile
На самом деле человеку, видимо, требуется определить длину линии исходя из координат ее концов. Тут все просто: если линия параллельна ОХ - ее длина х2 - х1; если оу - у2 - у1. Если же под углом к осям, длина вычисляется по теореме Пифагора. Дальше, исходя из длины линии, вычисляются координаты остальных вершин квадрата.

Автор: iff 19.6.2012, 22:20
Цитата(Pawl @  19.6.2012,  21:31 Найти цитируемый пост)
На самом деле человеку, видимо, требуется определить длину линии исходя из координат ее концов.

L=Sqrt(Sqr(X1-X2)+Sqr(Y1-Y2))

Цитата(Pawl @  19.6.2012,  21:31 Найти цитируемый пост)
если линия параллельна ОХ - ее длина х2 - х1; если оу - у2 - у1. Если же под углом к осям, длина вычисляется по теореме Пифагора.

этого ветвления в пограмме делать не надо.

Цитата(PMOLO @  19.6.2012,  18:46 Найти цитируемый пост)
не знаю, как дорисовать ее до квадрата.

Существует много способов.

Автор: northener 20.6.2012, 00:42
Цитата(iff @  19.6.2012,  22:20 Найти цитируемый пост)
Существует много способов. 

Геометрически только два!
smile

Автор: de_Nis 20.6.2012, 14:29
Цитата(iff @  19.6.2012,  21:20 Найти цитируемый пост)
L=Sqrt(Sqr(X1-X2)+Sqr(Y1-Y2)

Не хватает закрывающей скобки:
L=Sqrt(Sqr(X1-X2)+Sqr(Y1-Y2))

PMOLO, забудь на минутку о программировании. Вначале реши чисто геометрическую задачу.
Есть координаты двух точек - смежных вершин квадрата. Квадрат может быть с одной или с другой стороны линии, соединяющей эти точки.
То есть, как говорил northener, их может быть только два. 
Нужно высчитать координаты двух оставшихся вершин квадрата. Можешь посчитать для какого-то одного или для обоих квадратов, зависит от задания, которое ты получил.
Потом переходи к программированию. Напиши код по расчету координат вершин квадрата (квадратов). И только после этого уже рисуй квадрат (или квадраты), последовательно соединяя точки с известными и рассчитанными координатами, используя команду Line.

Автор: iff 20.6.2012, 16:13
Цитата(de_Nis @  20.6.2012,  14:29 Найти цитируемый пост)
Вначале реши чисто геометрическую задачу.
Есть координаты двух точек - смежных вершин квадрата. Квадрат может быть с одной или с другой стороны линии, соединяющей эти точки.
То есть, как говорил northener, их может быть только два. 

Ещё может быть так, что линия - диагональ квадрата.


Автор: de_Nis 21.6.2012, 08:50
Цитата(PMOLO @  19.6.2012,  17:46 Найти цитируемый пост)
Необходимо дорисовать линию до квадрата.

ИМХО, эти слова говорят, что эта линия (вернее, отрезок, так как есть начало и конец) - сторона квадрата.
Да и northener пришел к такому же выводу.
Впрочем, PMOLO может уточнить, может ли этот отрезок быть диагональю квадрата.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)