|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
нарисовать две перпендикулярных прямых
требуется нарисовать две прямых пересекающихся под прямым углом. как это лучше сделать, чтобы не на глаз. в дальнейшем ожидается что они будут двигаться по окружности. во вложении изображено как это должно приблизительно выглядеть
|
#2
|
||||
|
||||
Открываем учебник школьной геометрии, видим там формулу тангенса угла между прямыми в зависимости от коэффициентов tgA = (k2-k1)/(1+k1/k2), вспоминаем, чему равен тангенс прямого угла, понимаем, что для этого надо в знаменателе заиметь 0, решаем уравнение k1=-1/k2, радуемся результату.
jmp $ ; Happy End! The Cake Is A Lie. |
#3
|
|||
|
|||
Цитата:
пробовал. вот только она у меня от вертикальной оси строить пытается. и математика это одно. а как это програмно описать |
#4
|
||||
|
||||
Значит некорректный алгоритм построения. k есть тангенс угла от горизонтальной оси.
А вообще алгоритм элементарен: Код:
y1 := k*x1+b; y2 := k*x2+b; Canvas.MoveTo(x1,y1); Canvas.LineTo(x2,y2); Код:
k2 := -1/k1; И строим как выше. З.Ы. Прибавка, на всякий случай. На форме ось Y направлена вниз. jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 12.12.2011 в 21:33. |
#5
|
|||
|
|||
Цитата:
|
#6
|
||||
|
||||
Если ты уж можешь первую линию поворачивать, то что мешает также после поворота первой поворачивать вторую вокруг новой точки (угол первой-90 градусов), по умолчанию ставив вторую линию сначала на 0 градуссов?
|
#7
|
|||
|
|||
Мля... ну что за...
уравнение прямой: y = k*x + a уравнение перпендикулярной к первой прямой будет y = (1/k)*x + a. Дальше элементарная математика для определения k по 2м чточкам и a если у тебя еть одна из точек. |
#8
|
||||
|
||||
Как я понял ето дубль темы http://www.delphisources.ru/forum/sh...ad.php?t=19396 Там ему нужны не прямые, а отрезки, и сам код нужно полностью переработать.
|
#9
|
|||
|
|||
Цитата:
|
#10
|
|||
|
|||
Цитата:
Ну по памяти писал, мог и ошибиться Тем более, что знаешь. 1. Берешь 2 точки для первого отрезка (одна из них - та, куда будет примыкать второй отрезок). 2. Вращаешь их вокруг некоторого центра врашения. 3. Вычисляешь коэф. для первого отрезка, чертишь его. 4. Вычисляешь коэф. для второго отрезка. 5. Вычисляешь a для второго отрезка. 6. Вычисляешь вторую точку для второго отрзка. 7. Рисуешь второй отрезок. а вообще, можно просто взять 4 точки и все их вращать вокруг общего центра и по ним чертить. |
#11
|
|||
|
|||
Цитата:
ну не совсем дубль. там другой вопрос поднимается. и что в коде переработать? |
#12
|
|||
|
|||
А я откуда знаю, что надо переработать? Кода, полного, я не видел. Точного описания задачи тоже...
Да и, пожалуй, проще просто переписать по тому алгоритму, что предложен. И вообще подумать над тем, что бы просто вращать (или двигать по окружности, тут тоже есть небольшая разница) 4 точки, по которым просто чертить отрезки. |
#13
|
|||
|
|||
вот он код
|