|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Прямые в Tcanvas (геометрия :( )
Есть прямая заданная уравнением прямой проходящей через 2 точки
(x-x1)/(x2-x1)=(y-y1)/(y2-y1) где (х1, у1) это верхняя точка а (х2,у2) конечня(внизу) нужно дорисовать ещё 3 прямые до прямоугольника, или найти как сделать так чтобы прямоугольник рисуемый с помощью Rectangle() повернулся на угол cos(a); 2модераторы, сорри если тема не в тот раздел попала. Последний раз редактировалось Voffka, 03.12.2007 в 14:35. |
#2
|
|||
|
|||
1. метод Rectangle рисует прямоуольник, параллельный осям координат.
2. прямоугольник задаётся 2мя точками (верхний левый и нижний правый углы) и уголом поворота. Так чта "прямая заданная уравнением прямой" не достаточно для постоения прямоугольника. 3. если ты осознаешь пункты 1 и 2, копай в сторону поворот точки на заданный угол no comments |
#3
|
|||
|
|||
Цитата:
А формулу разворота точки на определённый угол неподскежете? |
#4
|
|||
|
|||
ну что нету людей которые знают геометрию?
|
#5
|
||||
|
||||
Матчасть
Вступление
Людей, что знают геометрию - много, просто уж на этот вопрос отвечать всем влом... тем более что это задачка из школы класса эдак 7-8, достаточно знать, что такое синус и косинус... Решение Немного непонятно, как именно тебе надо достраивать до прямоугольника, но ладно, предлагаю такой вариант: Прямоугольник - даны координаты двух его соседних вершин ( X1,Y1 и X2,Y2 ) , пусть расстояние между ними A, тогда длина другой стороны пусть будет B. => коорд. других вершин: Код:
var X1,Y1,X2,Y2,X3,Y3,X4,Y4:integer; B:integer; Sn,Cs:real; begin // вводишь значения X1,Y1,X2,Y2 - вершины и B - длина другой стороны Sn:=(Y1-Y2)/Sqrt( Sqr(X1-X2) + Sqr(Y1-Y2) ); Cs:=(X2-X1)/Sqrt( Sqr(X1-X2) + Sqr(Y1-Y2) ); X3:=Round(X2 - B*Sn); Y3:=Round(Y2 - B*Cs); X4:=Round(X1 - B*Sn); Y4:=Round(Y1 - B*Cs); Image1.Canvas.Polygon([Point(X1,Y1),Point(X2,Y2), Point(X3,Y3),Point(X4,Y4)] ); end; Будет достраиваться слева по направлению от первой ко второй точке, если надо иначе то в расчёте X3,Y3,X4,Y4 поставь вместо минусов плюсы |