![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 29.09.2008
Сообщений: 1
|
![]()
Друзья! Помогите, пожалуйста. Возникла такая задача: необходимо разбить прямолинейную область на конечное число прямоугольных элементов (грубо говоря "нанести" на него сетку), а также пронумеровать узлы этой сетки (произвольным образом) и пронумеровать элементы. И, в добавок, "запомнить" какие номера узлов (координаты) соответствуют какому элементу.
Я не прошу готовых программ... Подскажите, пожалуйста, идею реализации. Спасибо! |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
![]()
Если область не прямолинейная, как написано, а прямоугольная, то можно сделать так:
1.Присваиваем номера элементов как в матрице слева направо, сверху вниз. Номера узлов храним вместе с номерами элементов в двухмерном массиве записей. type Telem=record; el:integer; uz1,uz2,uz3,uz4:integer; end; var x:array of Telem; Тогда, зная номер элемента и размерность матрицы по ширине (n) можно легко найти номера узлов. Так для элемента x[i,j].el номера узлов будут : верхний левый x[i,j].uz1=(n+1)*(i-1)+j верхний правый x[i,j].uz2=(n+1)*(i-1)+j нижний левый x[i,j].uz3=(n+1)*i+j нижний правый x[i,j].uz4=(n+1)*i+j+1 Тогда номера элементов и их узлов запишутся так: for i:=0 to n do //высота for j:=0 to m do //ширина begin x[i,j].el:=n*(i-1)+j; x[i,j].uz1:=(n+1)*(i-1)+j; x[i,j].uz2:=(n+1)*(i-1)+j; x[i,j].uz3:=(n+1)*i+j; x[i,j].uz4:=(n+1)*i+j+1; end; Если не понравится, или ошибки, не пинать. Написал первое, что пришло в голову, как вариант. P.S. Если потом нужно найти узлы например при точке №71 вводим это число в какой-нибудь Эдит и пишем: for i:=1 to n do for j:=1 to m do if StrToInt(Edit1.text)=x[i,j].el then Edit2.text:=Edit2.text+IntToStr(x[i,j].uz1)+' '+IntToStr(x[i,j].uz2)+' '+IntToStr(x[i,j].uz3)+' '+IntToStr(x[i,j].uz4); Последний раз редактировалось puporev; 29.09.2008 в 23:06. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Разбиение на части | MAcK | Общие вопросы .NET | 4 | 18.09.2008 13:56 |
Разбиение дочернего окна на колонки... | HunterMan | Win Api | 3 | 03.04.2008 23:19 |
Разбиение окна на области? | HunterMan | Win Api | 2 | 03.04.2008 22:18 |
Разбиение матриц на макроблоки!!! | metamfetamin | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 02.11.2007 23:33 |
Случайное разбиение списка на множесво маленьких списков | eXa | Общие вопросы Delphi | 5 | 15.08.2007 09:23 |