Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.12.2007, 14:31
Voffka Voffka вне форума
Прохожий
 
Регистрация: 03.12.2007
Сообщения: 3
Репутация: 10
По умолчанию Прямые в Tcanvas (геометрия :( )

Есть прямая заданная уравнением прямой проходящей через 2 точки
(x-x1)/(x2-x1)=(y-y1)/(y2-y1) где (х1, у1) это верхняя точка а (х2,у2) конечня(внизу) нужно дорисовать ещё 3 прямые до прямоугольника, или найти как сделать так чтобы прямоугольник рисуемый с помощью Rectangle() повернулся на угол cos(a);
2модераторы, сорри если тема не в тот раздел попала.
Изображения
Тип файла: jpg pic.jpg (27.5 Кбайт, 12 просмотров)

Последний раз редактировалось Voffka, 03.12.2007 в 14:35.
Ответить с цитированием
  #2  
Старый 03.12.2007, 15:15
Павлик Павлик вне форума
Прохожий
 
Регистрация: 03.12.2007
Сообщения: 6
Репутация: 10
По умолчанию

1. метод Rectangle рисует прямоуольник, параллельный осям координат.
2. прямоугольник задаётся 2мя точками (верхний левый и нижний правый углы) и уголом поворота. Так чта "прямая заданная уравнением прямой" не достаточно для постоения прямоугольника.
3. если ты осознаешь пункты 1 и 2, копай в сторону поворот точки на заданный угол
__________________
no comments
Ответить с цитированием
  #3  
Старый 03.12.2007, 15:25
Voffka Voffka вне форума
Прохожий
 
Регистрация: 03.12.2007
Сообщения: 3
Репутация: 10
По умолчанию

Цитата:
Сообщение от Павлик
3. если ты осознаешь пункты 1 и 2, копай в сторону поворот точки на заданный угол
пункты 1 и 2 то понятны, я просто хотел уточнить может быть можно как-то развернуть его.
А формулу разворота точки на определённый угол неподскежете?
Ответить с цитированием
  #4  
Старый 04.12.2007, 10:05
Voffka Voffka вне форума
Прохожий
 
Регистрация: 03.12.2007
Сообщения: 3
Репутация: 10
По умолчанию

ну что нету людей которые знают геометрию?
Ответить с цитированием
  #5  
Старый 05.12.2007, 14:56
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
Восклицание Матчасть

Вступление

Людей, что знают геометрию - много, просто уж на этот вопрос отвечать всем влом... тем более что это задачка из школы класса эдак 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 поставь вместо минусов плюсы
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:18.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter