Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
3 / 3 / 3
Регистрация: 06.09.2012
Сообщений: 45

Поворот не туда.Аффинные преобразования

08.06.2015, 02:10. Показов 1338. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Кажется, аффинные преобразования тут не особо жалуют, но все же задам свой вопрос. Требуется повернуть картинку. Не спрашивайте почему не использовал TPoint.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var
 PointImage1X , PointImage1Y, PointImageEndX , PointImageEndY : array of integer;
 i  , x , y , angle: integer;
 ColorImage : array of TColor;
 
begin
  i:=0; 
  //угол поворота
  angle:=SpinEdit1.Value;
  //перебор всех пикселей изображения. DrawPointX,DrawPointY-начало отрисовки
  for x:=DrawPointX to  DrawPointX+ImageWidth do
    for y:=DrawPointY to  DrawPointY + ImageHeight do
      begin
          //начальные координаты
          PointImage1X[i]:=x;
          PointImage1Y[i]:=y;
          //запись цвета пикселей в массив
          ColorImage[i]:=Image1.Canvas.Pixels[x,y];
          //расчет новых координат
          PointImageEndX[i]:=((round(cos(angle)))*PointImage1X[i])+((round(sin(angle)))*PointImage1Y[i]);
          PointImageEndY[i]:=((round(-(sin(angle))))*PointImage1X[i]) + ((round(cos(angle)))*PointImage1Y[i]);
          //закраска старой картинки. рисовка картинки с полученными координатами
          Image1.Canvas.Pixels[PointImage1X[i],PointImage1Y[i]]:=clwhite;
          Image1.Canvas.Pixels[PointImageEndX[i] , PointImageEndY[i]]:=ColorImage[i] ;
          inc(i);
      end;
end;
Можно бы понять если бы хоть что то вырисовывало, но увы только белый холст за место изображения. Не могу понять что не то?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.06.2015, 02:10
Ответы с готовыми решениями:

Аффинные преобразования на плоскости
построить матрицу поворота вокруг точки А сс кординатами а в на угол фи построить матрицу растежения с коэфицентами рас альфа вдоль...

Аффинные преобразования. Вращение
Не могу понять, как сделать поворот(вращение) фигуры во круг какой-нибудь из своих точек. Фигура много угольник 11 вершин. Поворот...

Как делать аффинные преобразования в пространстве: вращение, растяжение, отражение, перенос фигуры.
Помогите решить задачу на Delphi. Задача. Пользователь курсором мыши задаёт координаты появления круга на форме. При каждом новом...

3
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
08.06.2015, 06:36
round(sin(angle)) !!!
это больше похоже на переключатель чем на функцию )))

округлять надо то что получилось итого, а не каждое слагаемое отдельно
найди отличия
Round(0.4) + Round(0.4) = 0
Round(0.4 + 0.4) = 1

Добавлено через 44 секунды
и кстати, почему не использовал TPoint ? ))))
1
3 / 3 / 3
Регистрация: 06.09.2012
Сообщений: 45
08.06.2015, 12:57  [ТС]
Спасибо, помогло. Только вот теперь после поворота точек становится больше и появляются белые точки. Как это исправить то можно?
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
09.06.2015, 06:56
вначале было слово нужно все стирать
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.06.2015, 06:56
Помогаю со студенческими работами здесь

Аффиные преобразования поправить код(поворот)
не могу разобраться с поворотами по оси х у и z поварачивает не правильно..помогите исправить ошибку... unit Unit1; interface ...

Не могу сделать поворот матрицы на каждое нажатие, и её нормальный поворот
var Form1: TForm1; m, n: integer; i, j: byte; b, a: array of integer; implementation uses Unit2, Unit3;

Аффинные преобразования: поворот, масштабирование
фигура нарисована, не пойму как правильно сделать поворот, сжатие и растяжение const int size=19; int...

Аффинные преобразования - поворот и перенос пятиугольника
Задача: Вывести на pictureBox пятиугольник и, используя аффинные преобразования, осуществить поворот данной фигуры и сделать перенос. ...

Аффинные преобразования
Доброго времени суток! Возникло 2 вопроса: 1) Создание горячих клавиш: брала образец кода на msdn, но суть в том, что, например, я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru