IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Графика в Delphi, Поворот на 90 градусов
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Женский
Реальное имя: Екатерина

Репутация: -  0  +


Здравствуйте! Мы начали изучать новую дисциплину «Компьютерная графика». У меня есть задание по лабе на тему "Поворот фигуры на определенное количество градусов". Задание хотелось бы выполнить самостоятельно, но тема оказалась тяжела для понимания.
Подскажите, как реализовать поворот точки на осях координат вокруг их центра на 90 градусов. Если я это пойму, тогда возможно и свою фигуру смогу повернуть самостоятельно.

Оси вроде бы правильно составлены. Вот они:

implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
x,y: Real;
x0, y0: Integer;
m: Integer;
i: Integer;
n: Integer;
begin
x0 := Image1.Width div 2; // центр координатной плоскости по х оси
y0 := Image1.Height div 2; // центр координатной плоскости по у оси
m := 25; // масштаб

// координатная плоскость
Image1.Canvas.MoveTo(0, y0);
Image1.Canvas.LineTo(ClientWidth, y0);
Image1.Canvas.MoveTo(x0, 0);
Image1.Canvas.LineTo(x0, ClientHeight);

x := -7; // стартовое значение функции
n := Abs(Round(x)); // конечное значение функции

// шкалирование осей
for i := Round(x) to n do
begin
Image1.Canvas.MoveTo(x0+i*m, y0-5);
Image1.Canvas.LineTo(x0+i*m, y0-(-5));
Image1.Canvas.TextOut(x0+i*m, y0+10, IntToStr(i));
Image1.Canvas.MoveTo(x0+5, y0-m*i);
Image1.Canvas.LineTo(x0-5, y0-m*i);
Image1.Canvas.TextOut(x0-15, y0+i*m, IntToStr(-i));
end;
end;


Сообщение отредактировано: Екатерина -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Ну смотри, есть точка
(x,y)
Чтобы найти её положение относительно центра (xc,yc), надо взять

(x1 = x-xc, y1=y-yc)

Потом эту точку поворачиваем на 90 градусов стандартным способом:

(x2=-y1, y2=x1)

Потом из положения относительно центра переводим в положение относительно экрана.

(xn=x2+xc; yn=y2+xc).


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 11.05.2024 22:36
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name