Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 20.10.2016, 10:53
Профессор
Отправить личное сообщение для Brook Посмотреть профиль Найти все сообщения от Brook
 
Регистрация: 13.04.2012
Сообщений: 210

laimas, хочу извиниться за прошлые коментарии, сейчас смотрю это было глупо с моей стороны. Спасибо за участие.
Ответить с цитированием
  #42 (permalink)  
Старый 20.10.2016, 11:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Brook,
на всякий случай
[JS run][/JS]
Ответить с цитированием
  #43 (permalink)  
Старый 20.10.2016, 14:30
Профессор
Отправить личное сообщение для Brook Посмотреть профиль Найти все сообщения от Brook
 
Регистрация: 13.04.2012
Сообщений: 210

рони,
спасибо - не знал
Ответить с цитированием
  #44 (permalink)  
Старый 20.10.2016, 19:56
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Brook
aimas, хочу извиниться за прошлые коментарии, сейчас смотрю это было глупо с моей стороны.
Не за что, чтобы меня обидеть, это надо очень постараться.
А вот результат мне не нравится, много что-то. Сейчас немного некогда, чуть позже надо подумать. Я правильно понял, что размерность среза может быть произвольной, то есть в размерности например 6х6 можно взять 4х4 и плюс оставшиеся?
Ответить с цитированием
  #45 (permalink)  
Старый 21.10.2016, 05:49
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Сообщение от laimas
чтобы меня обидеть, это надо очень постараться
LOL.
Ответить с цитированием
  #46 (permalink)  
Старый 29.10.2016, 15:28
Профессор
Отправить личное сообщение для Brook Посмотреть профиль Найти все сообщения от Brook
 
Регистрация: 13.04.2012
Сообщений: 210

Сообщение от laimas Посмотреть сообщение
6х6 можно взять 4х4 и плюс оставшиеся?
да но без остатка; тоесть он просто создаст 4х4 а края срежет
Изначально задумывал сделать нарезку массива (в моем случае режу поверхность в 2d на ячейки) на более мелкие, надо чтобы на срезах ячейки были сшиты:

Дан массив(порехность) 5х5, хочу нарезать ее с шагом 2, в результате получу 4 массива по 3х3 (индексация шагов с 0)

Массив:
Код:
00 | 01 | 02 | 03 | 04
------------------------
05 | 06 | 07 | 08 | 09
------------------------
10 | 11 | 12 | 13 | 14
------------------------
15 | 16 | 17 | 18 | 19
------------------------
20 | 21 | 22 | 23 | 24
Места пересечений между массивами после нарезки:
Код:
00 | 01 | 02 | 03 | 04
------------------------
05 | 06 | 07 | 08 | 09
------------------------
10 | 11 | 12 | 13 | 14
------------------------
15 | 16 | 17 | 18 | 19
------------------------
20 | 21 | 22 | 23 | 24
Результат:
М1:
Код:
00 | 01 | 02
-------------
05 | 06 | 07
-------------
10 | 11 | 12
М2:
Код:
02 | 03 | 04
-------------
07 | 08 | 09
-------------
12 | 13 | 14
М3:
Код:
10 | 11 | 12
-------------
15 | 16 | 17
-------------
20 | 21 | 22
М4:
Код:
12 | 13 | 14
-------------
17 | 18 | 19
-------------
22 | 23 | 24
Мне это было нужно для изменения плотности точек на поверхности.
Сейчас же пытаюсь написать триангуляция для иррегулярной сетки (сразу Делоне подходит), алгортим должен использовать набор из 4х правил по увеличению числа точек на поверхности.
Ответить с цитированием
  #47 (permalink)  
Старый 29.10.2016, 16:03
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Brook
тоесть он просто создаст 4х4 а края срежет
Ну так это даже упрощает все, ок.
Ответить с цитированием
  #48 (permalink)  
Старый 29.10.2016, 17:25
Профессор
Отправить личное сообщение для Brook Посмотреть профиль Найти все сообщения от Brook
 
Регистрация: 13.04.2012
Сообщений: 210

да, но я не вижу никаких проблем и с остатком, просто если до края меньше шага меняем размер шага на расстояние до края в вашем примере 6х6, первый 4х4 после изменения 2х2, единственная трудность это высчитывать начала этого самого края ... но все равно не думаю что решение займет много времени)

сейчас как уже писал выше делаю триангуляцию .. пока что только начал так что как таковых результатов нет - но если интересно могу сбросит задачу на рассмотрения так сказать)
Ответить с цитированием
  #49 (permalink)  
Старый 29.10.2016, 17:30
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Brook
да, но я не вижу никаких проблем и с остатком
Если остаток не нужен, да еще и не запрашиваем непотребное, типа у размерности 6х6 запрашиваем 7х7, а если проверяем это, но всегда w = h, то это будет в любом случае меньше "телодвижений".
Ответить с цитированием
  #50 (permalink)  
Старый 05.12.2016, 20:13
Профессор
Отправить личное сообщение для Brook Посмотреть профиль Найти все сообщения от Brook
 
Регистрация: 13.04.2012
Сообщений: 210

И снова поднимаю эту тему.
Однако в этот раз задача состоит в том чтобы преобразовывать одномерный массив в "сектора" с использованием лишь одного цинкла (и никакой рекурсии так это тоже будет считься как дополнительный цикл ).

Оригинальный массив ( 1D !!! ):
00 | 01 |  02 |  03 |  04 |  05 |  06 |  07 |  08 |  09 |  10 |  11 |  12 |  13 |  14 | 15 |  16 |  17 |  18 |  19 |  20 |  21 |  22 |  23 |  24


Теперь визуально предсталю как 2D что бы было проще вам понять, а мне объяснять:
Код:
00 | 01 | 02 | 03 | 04
------------------------
05 | 06 | 07 | 08 | 09
------------------------
10 | 11 | 12 | 13 | 14
------------------------
15 | 16 | 17 | 18 | 19
------------------------
20 | 21 | 22 | 23 | 24
Места пересечений между массивами после нарезки, однако на одномерном массиве все в разы сложнее :
Код:
00 | 01 | 02 | 03 | 04
------------------------
05 | 06 | 07 | 08 | 09
------------------------
10 | 11 | 12 | 13 | 14
------------------------
15 | 16 | 17 | 18 | 19
------------------------
20 | 21 | 22 | 23 | 24
Результат:
М1:
Код:
00 | 01 | 02
-------------
05 | 06 | 07
-------------
10 | 11 | 12
М2:
Код:
02 | 03 | 04
-------------
07 | 08 | 09
-------------
12 | 13 | 14
М3:
Код:
10 | 11 | 12
-------------
15 | 16 | 17
-------------
20 | 21 | 22
М4:
Код:
12 | 13 | 14
-------------
17 | 18 | 19
-------------
22 | 23 | 24
В данном примере размер одномерного массива 25, но я его буду обозначать как 5( это граница среза ), опять же что бы было проще объяснть.
Выходные массивы также представлены как двумерные, однако по сущности являются одномерными!

Однако, как уже писал выше, в этот раз есть 'условие' для последующего решения - использовать всего один цикл. Так же прошу не использать slice(), splice() и т.п.

Вот способ которым пытаюсь это сделать я:

Как было сказано ранее граница среза ракна 5, тоесть каждый пятый элемент указывающий на "окончание" одной сроки и начала другой
Код:
00 | 01 |  02 |  03 |  04 |  05 |  06 |  07 |  08 |  09 |  10 |  11 |  12 |  13 |  14 | 15 |  16 |  17 |  18 |  19 |  20 |  21 |  22 |  23 |  24
Далее полученные части надо разбить для двое по три:
Код:
[ 00 | 01 |  02 ], [ 02 |  03 | 04 ]
Как видно из примера тут присутствует повторяющийся елемент!! Так же предполагается что мы уже знаем конечное колличество массивов и они уже подготовлены, например var result_arrs = [ [M1], [M2], [M3], [M4] ]. ( тут М* используется просто для указания места вывода результатов работы алгоритма, сами массивы являются пустыми)

Приблизительно вот так должжен быть нарезан весь массив, повторюсь это одномерныймассив, и выходные массивы также имеют только один разряд (одномерны)!

Здесь предсавлен пример конечного результата, прошлого решения:
http://jsbin.com/qimaliy/edit?js,console

З.Ы. чуть позже выложу результ своих попыток, я забыл их сохранить так что сейчас занимаюсь их востановлением .
З.З.Ы. причина по которой снова поднял тему - скорость работы алгоритма - в конце буду все тетстировать на массиве размером от 4 000 000 )), на данный момент предыдущий алгоритм установил планку в 2сек. так что этот должен быть как мимнимум в 2-е быстрее ( <= ~1sec. )

Надеюсь на Вашу помощь, и надесь Вам будет также интресно это решать как и мне ))

Заранее спасибо

Последний раз редактировалось Brook, 05.12.2016 в 20:53.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите к js коду, написать html код Modrih Элементы интерфейса 8 16.06.2015 18:08
Перебор массива кнопкой Giyas Элементы интерфейса 14 28.01.2015 23:00
Сортировка массива по возрастанию другого массива. vas88811 Events/DOM/Window 4 12.01.2014 10:31
Перебор массива - вложенный цикл SWin Общие вопросы Javascript 35 27.12.2013 05:06
Перебор массива объектов Триви jQuery 12 26.08.2011 09:22