Есть две матрицы:
int[][] one = {{ 1, 1, 1 },
{ 0, 0, 0 },
{ 0, 0, 0 }};
int[][] two = {{ 0, 0, 1 },
{ 0, 1, 0 },
{ 1, 0, 0 }};
Нужно их объединить, сместив вторую относительно первой на offset:
merge(int[][] one, int[][] two, Point offset)
Например, offset = new Point(2,-2);
Результат:
int[][] result = {{0,0,0,0,1},
{0,0,0,1,0},
{1,1,1,0,0},
{0,0,0,0,0},
{0,0,0,0,0}}
Матрицы могут быть разной размерности, смещение отрицательным.
Пока смог реализовать только объединение матриц разной размерности, без смещения:
public int[][] merge( int[][] one, int[][] two, Point offset ) {
int[][] merged = getEmptyMergedMatrix( one, two, offset );
addToMatrix( matrix, one, offset );
addToMatrix( matrix, two, offset );
return merged;
}
private int[][] getEmptyMergedMatrix( int[][] one, int[][] two, Point offset ) {
int height = Math.max( one.length, two.length );
//int height = Math.max( one.length, two.height + Math.abs( offset.y ) );
int width = Math.max( one[0].length, two[0].length );
// int width = Math.max( one[0].length, two[0].length + Math.abs( offset.x );
return new int[][]( height, width );
}
private void addToMatrix( int[][] dest, int[][] src, Point offset ) {
int srcHeight = src.length;
int srcWidth = src[ 0 ].length;
for ( int y = 0; y < srcHeight; y++ ) {
for ( int x = 0; x < srcWidth; x++ ) {
if ( src[ y ][ x ] == 1 ) dest[ y ][ x ] = 1;
}
}
}
Если раскомментировать строки в 3-ем методе - получается матрица правильного размера для любых смещений. Но не могу сообразить, как скопировать значения со смещенной матрицы. Есть какие-нибудь идеи?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
На главном экране есть FrameLayout, где, в зависимости от выбранного пункта меню, меняются фрагменты (экраны)
Собственно уже n-ый день мучаюсь с размером шрифтаВот ситуация: на обычный AnchorPane добавил обычную кнопку и поставил все якори по 30
Когда ставлю фон с помощью jlabel, все кнопки и поля становятся под фономКак это исправить можно?