![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Уважаемый
Форумчанин
Регистрация: 04.07.2010
Сообщений: 318
|
![]()
1. Можно ли повернуть прямоугольник, нарисованный канвой на форме на любой угол. Или даже сначала повернуть, а потом вывести?
2. Как позиционировать прямоугольник по его центру, а не по левому верхнему углу? С учетом того, что он повернут на определенный угол, т.е. поворачивать прямоугольник относительно его центра. P.S. прямоугольник неизвестного заранее размера. ![]()
даешь высокое напряжение
|
![]() |
![]() |
![]() |
#2 |
Сливочное масло
Участник клуба
Регистрация: 01.01.2011
Сообщений: 1,149
|
![]()
Ходят слухи, что можно. Для начала опиши поворот математически на листочке... а перевести в код это без проблем.
Сливочное масло Valio - компиляция как по маслу
|
![]() |
![]() |
![]() |
#3 | |
Уважаемый
Форумчанин
Регистрация: 04.07.2010
Сообщений: 318
|
![]() Цитата:
![]()
даешь высокое напряжение
|
|
![]() |
![]() |
![]() |
#4 |
Сливочное масло
Участник клуба
Регистрация: 01.01.2011
Сообщений: 1,149
|
![]()
Ну листочек это просто листочек
![]() Тетрадный листочек, формата А4 дял принтера и пр. Взять ручку и подумать как можно вычислить координаты точек при повороте.
Сливочное масло Valio - компиляция как по маслу
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
![]()
1) Гугли: "Матрица поворота". Можно из википедии.
2) То же самое только поворачивать будешь относительно центра.
Изобретатель велосипедов
|
![]() |
![]() |
![]() |
#6 | |
Уважаемый
Форумчанин
Регистрация: 04.07.2010
Сообщений: 318
|
![]() Цитата:
... x:= 100; y:= 100; //координаты центра ... x1:= x div 2; y1:= y div 2; x2:= x1 + "73"; (например) y2:= y2 + "5"; (например) //второй угол, ну здесь динамической переменной размер задать можно ... //здесь считать "матрицу поворота" ... Form6.Image1.Canvas.Rectangle(x1, y1,x2, y2); ... Что-то не понял матрицу, там как считать вообще?
даешь высокое напряжение
|
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
![]()
Есть у вас W,H - размер. Cx,Cy - центр. Alpha - угол поворота.
Ваш прямо-ик выглядит сначала так: -_______ |---.----| |_______| Точка - центр. Есть 4 вершины, найти координаты которых ОТНОСИТЕЛЬНО центра элементарно. То есть есть 4 вектора от центра к вершине: A1x,A1y...A4x,A4y Вот их-то и будем поворачивать по матрице поворота: M=(cos(Alpha),-sin(Alpha), sin(Alpha),cos(Alpha)) После трансформации эти вектора ессно изменятся и останется прибавить к позиции центра координаты этих векторов. -/-\ /-.-\ \---/ -\-/ Ах да, Alpha:= - Alpha И рисовать, разумеется, придётся уже не Rectangle, а набором линий.
Изобретатель велосипедов
Последний раз редактировалось Selestis; 04.01.2011 в 16:16. |
![]() |
![]() |
![]() |
#8 | |
Уважаемый
Форумчанин
Регистрация: 04.07.2010
Сообщений: 318
|
![]() Цитата:
![]() M=(cos(Alpha)-sin(Alpha) * sin(Alpha) * cos(Alpha)) ?
даешь высокое напряжение
|
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
![]()
M: array[1..2,1..2] of real;
M[1,1]:=cos(a); M[1,1]:=-sin(a); M[2,1]:=sin(a); M[2,2]:=cos(a); Вобщем-то это просто запись такая, можно и формулу сразу для координат вывести, но так проще. Хотя может вам и сложнее. Рискну предположить, что вам нужно посмотреть ещё материал про перемножение матрицы на вектор... Впрочем, вот формулы координат: a:=-a; NewX:=x*cos(a)-y*sin(a); NewY:=x*sin(a)+y*cos(a);
Изобретатель велосипедов
Последний раз редактировалось Selestis; 04.01.2011 в 16:23. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
графика в делфи | Lena neznayka | Помощь студентам | 15 | 16.06.2010 10:08 |
Графика делфи | Asira | Помощь студентам | 3 | 07.06.2010 14:07 |
графика в Делфи. | pionerka | Помощь студентам | 5 | 28.04.2010 16:38 |
Графика в Делфи | R_A_M_I_L7777777 | Помощь студентам | 14 | 27.03.2009 15:21 |
Графика в Делфи | Killbrum | Мультимедиа в Delphi | 19 | 17.09.2008 22:29 |