![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Уважаемый
Форумчанин
Регистрация: 04.07.2010
Сообщений: 318
|
![]()
var
xA,yA,xB,yB,xC,yC,xD,yD,fi: integer; begin //получаем значение угла fi:= StrToInt(Edit1.Text); //инициализация начальных точек полигона xA:= 70; yA:= 85; xB:= 130; yB:= 85; xC:= 130; yC:= 115; xD:= 70; yD:= 115; //конец инициализации // преобразуем градусы в радианы xA:= Round((xA*cos(fi*Pi/180) - yA*sin(fi*Pi/180))); yA:= Round((xA*sin(fi*Pi/180) + yA*cos(fi*Pi/180))); xB:= Round((xB*cos(fi*Pi/180) - yB*sin(fi*Pi/180))); yB:= Round((xB*sin(fi*Pi/180) + yB*cos(fi*Pi/180))); xC:= Round((xC*cos(fi*Pi/180) - yC*sin(fi*Pi/180))); yC:= Round((xC*sin(fi*Pi/180) + yC*cos(fi*Pi/180))); xD:= Round((xD*cos(fi*Pi/180) - yD*sin(fi*Pi/180))); yD:= Round((xD*sin(fi*Pi/180) + yD*cos(fi*Pi/180))); //конец преобразования //вывод полигона Form1.Canvas.Polygon([Point(xA,yA),Point(xB,yB),Point(xC, yC),Point(xD, yD)]); end; Не могу понять, что же тут не так? Рисуется прямоугольник, который должен поворачиваться на угол fi при нажатии по кнопке. Поворачивается, но не понятно относительно какой точки происходит поворот? Это не центр пересечения его диагоналей и даже не ноль формы. А нужно относительно центра пересечения его диагоналей. Что же не так?
даешь высокое напряжение
|
![]() |
![]() |
![]() |
#2 | |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
![]() Цитата:
Отн-но верхнего левого угла канвы ! |
|
![]() |
![]() |
![]() |
#3 |
Уважаемый
Форумчанин
Регистрация: 04.07.2010
Сообщений: 318
|
![]()
нет. точно не относительно ее. Такое чувство что как будто в 3D поворачивается. Но это не так. Нужно разобраться, и сделать, чтобы относительно центра пересечения его диагоналей.
даешь высокое напряжение
|
![]() |
![]() |
![]() |
#4 | ||
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
![]() Цитата:
Цитата:
Последний раз редактировалось mss; 27.05.2011 в 18:21. |
||
![]() |
![]() |
![]() |
#5 | |
Уважаемый
Форумчанин
Регистрация: 04.07.2010
Сообщений: 318
|
![]() Цитата:
Тут вся проблема в том, что я не знаю как сделать так, чтобы поворот полигона осуществлялся относительно точки пересечения диагоналей данного полигона и все, больше мне ничего не надо.
даешь высокое напряжение
|
|
![]() |
![]() |
![]() |
#6 |
Уважаемый
Форумчанин
Регистрация: 04.07.2010
Сообщений: 318
|
![]()
Для перевода градусов в радианы существует штатная ф-ция DegToRad()[/QUOTE]
учту на будущее )))
даешь высокое напряжение
|
![]() |
![]() |
![]() |
#7 | |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 26.01.2010
Сообщений: 215
|
![]()
исправлено и дополнено, поворот относительно чентра диагонали AC
что не понятно спрашивай Код:
Могу лишь пнуть в нужном направлении (ну или как получится)
Последний раз редактировалось Swarog; 27.05.2011 в 20:06. |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 26.01.2010
Сообщений: 215
|
![]()
твоя ошибка была во первых в формуле, хотя нет с формулой нормально просто крутить будет в обратную сторону, это формула обратного преобразования, вторая твоя ошибка ты не сохранял Х, в итоге значение У считалось не правильно
Могу лишь пнуть в нужном направлении (ну или как получится)
|
![]() |
![]() |
![]() |
#10 |
Уважаемый
Форумчанин
Регистрация: 04.07.2010
Сообщений: 318
|
![]()
говорит:
[Error] Unit1.pas(68): Undeclared identifier: 'DegToRad' что-то добавить нужно?
даешь высокое напряжение
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Точки персечения окружности и прямоугольника | _-Re@l-_ | Общие вопросы Delphi | 2 | 29.05.2011 20:28 |
Не работает алгоритм вращения точки. | 616th | Помощь студентам | 4 | 06.02.2011 23:31 |
Проблема со скриптом на сайте (скорее всего) | Alex_Rad | Помощь студентам | 0 | 26.05.2010 22:04 |
Улучшить алгоритм нахождения элемента, чаще всего повторяющегося в возрастающем массиве | nitrolighter | Помощь студентам | 6 | 18.10.2009 13:33 |
Проблема с рисованием прямоугольника | Юра. | Общие вопросы Delphi | 13 | 04.08.2007 06:08 |