![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 30.04.2010
Сообщений: 13
|
![]()
Некоторое изображение разленно на n количество кусков..после этого эти куски надо перемещать в произвольно порядке + повернуть их на угол 90 градусов.
Помогите пожалуйста!!! |
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Чем помочь то?
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 30.04.2010
Сообщений: 13
|
![]()
какие использовани функцию и вообще с чего начать программу?
может сможете помочь? |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Куски изображения имеют ровные края? То есть это квадраты, прямоугольники?
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 30.04.2010
Сообщений: 13
|
![]()
неа,края по-разному разрезанны
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 04.05.2010
Сообщений: 495
|
![]()
Как же можно перемешать куски с неровными краями ?
Ты пример приведи. Картинку линиями "разрежь" и выложи сюда.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948 |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 30.04.2010
Сообщений: 13
|
![]()
Вот примерный программный код для разделения на куски изображения:
procedure TMainForm.Splitting(n, m, T: integer); var x,y,x2,y2 :real; px,py,px2,py2,k, sinvert1,sinhoriz1,sinvert2,sinhori z2,uborder,dborder,lborder,rborder: longint; i,j,col:integer; begin Canvas.Brush.Color:=clBlack; Canvas.Pen.Color:=clBlack; // n:=10; // m:=10; // T:=30; for i := 0 to (n-2) do //рисуем горизонтальные синусоиды begin for px:=0 to 600 do begin x:=px*Pi/T; y:=0.1*sin(x); py:=trunc(round(400/n)*(1-y)); Canvas.Pixels[px,py+round(400/n*i)]:=0; end; end; for j := 0 to (m-2) do //рисуем вертикальные синусоиды begin for px:=0 to 400 do begin x:=px*Pi/T; y:=0.1*sin(x); py:=trunc(round(600/m)*(1-y)); Canvas.Pixels[py+round(600/m*j),px]:=0; end; end; for i:=-1 to (n-2) do //начинаем указывать границы, внутри которых будем выделять пиксели begin if i=-1 then //задаем верх-ниж границы будущих деталей begin uborder:=0; dborder:=round((400/n)*(1+0.1)); end else if i=(n-2) then begin dborder:=400; uborder:=round((400/n)*(1-0.1)+(400/n*(i))); end else begin uborder:=round((400/n)*(1-0.1)+(400/n*(i))); dborder:=round((400/n)*(1+0.1)+(400/n*(i+1))); end; for j := -1 to (m-2) do //продолжаем задавать ограничивающие синусоиды begin if j=-1 then //лев-прав границы деталей begin lborder:=0; rborder:=round((600/m)*(1+0.1)); end else if j=(m-2) then begin rborder:=600; lborder:= round((600/m)*(1-0.1)+(600/m*(j))); end else begin rborder:=round((600/m)*(1+0.1)+(600/m*(j+1))); lborder:= round((600/m)*(1-0.1)+(600/m*(j))); end; with det[i+2,j+2] do begin Width:=rborder-lborder; Height:=dborder-uborder; top:=uborder; left:=lborder; ID.x:=i+2; ID.y:=j+2; Show; Enabled:=true; OnClick:=click; DragMode:=dmAutomatic; end; for px := lborder to rborder do //собственно выделяем синусоиды, в зависимости от i, j begin for py := uborder to dborder do begin if i=-1 then begin sinhoriz1:=0; //верхняя синусоида: задаем горизонтальную линию sinhoriz2:=trunc(round(400/n)*(1-0.1*sin(px*Pi/T))+(400/n*(i+1))); end else if i=(n-2) then begin sinhoriz2:=400; //нижняя синусоида: для крайней нижней границы sinhoriz1:=trunc(round(400/n)*(1-0.1*sin(px*Pi/T))+(400/n*i)); end else begin sinhoriz1:=trunc(round(400/n)*(1-0.1*sin(px*Pi/T))+(400/n*i)); sinhoriz2:=trunc(round(400/n)*(1-0.1*sin(px*Pi/T))+(400/n*(i+1))); end; if j=-1 then begin sinvert1:=0; //прямая для боковых синусоид sinvert2:=trunc(round(600/m)*(1-0.1*sin(py*Pi/T))+(600/m*(j+1))); end else if j=(m-2) then begin sinvert2:=600; //то же для крайней правой позиции sinvert1:=trunc(round(600/m)*(1-0.1*sin(py*Pi/T))+(600/m*j)); end else begin sinvert1:=trunc(round(600/m)*(1-0.1*sin(py*Pi/T))+(600/m*j)); sinvert2:=trunc(round(600/m)*(1-0.1*sin(py*Pi/T))+(600/m*(j+1))); end; if (px>=sinvert1) and (px>lborder) and (px<=sinvert2) and (px<rborder) and (py>=sinhoriz1) and (py>=uborder) and (py<dborder) and (py<=sinhoriz2) then begin //Canvas.Pixels[px,py]:=clBlue; //закрашиваем пиксели, попавшие между заданными выше линиями (синусоидами) det[i+2,j+2].Canvas.pixels[px-lborder,py-uborder]:=img.Canvas.Pixels[px,py]; end; end; end; end; end; end; Задание точно звучит так: сшевание деталей после разрезания и задание им угла поворота(90 градусов) может сможете что-нибудь подсказать??? ![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
зачет | Dante68 | Фриланс | 13 | 12.03.2010 21:06 |
зачет по информатике | Neytron | Паскаль, Turbo Pascal, PascalABC.NET | 12 | 21.06.2009 12:25 |
Зачет по практике!!!!!! | KORT | Свободное общение | 39 | 21.07.2007 00:28 |