Size: a a a

JavaScript.Ninja

2020 July 10

PK

Pasha K in JavaScript.Ninja
Nick
Могу Вам подсказать вот что (не утверджаю, что это самое оптимальное/лучшее/отличное решение):
Представим наше поле в виде матрицы:
0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0
где matrix[i][j] соответсвует размеру 1х1. Ну и все. Обходите матрицу, где 0 -> красим в черное (или ничего не делаем, если bg уже черный), где 1 -> красим в белое (что сложно! придется создавать очень много таких белых квадратиков)
осталось реализовать сдвиг всех элементов по всем 4 сторонам и все
Проблема в скорости, размер полотна 400х400, и матрица будет размером 160.000 (столько будет обходов)

красить каждый пиксель отдельно дорого, тут надо использовать алгоритм:
начинаем [i][j] i = 0; j = 0;
for (let i = 0 ...) { for (let j = 0; ... ) }
как встречаем 1, фиксируем левую точку для отрисовки прямоугольника. Далее, идем вправо, пока не найдем 0 или границу. Как только достигнули цели, идем вниз, находим нижнюю точку -> рисуем прямоугольник.
надо запоминать закрашенные площади, чтоб повторно туда не заходить (и не красить)
Кстати хорошая идея с матрицей. Я о об этом и не думал
источник

PK

Pasha K in JavaScript.Ninja
Спасибо
источник

N

Nick in JavaScript.Ninja
Pasha K
Кстати хорошая идея с матрицей. Я о об этом и не думал
сложность задачи в "неудобных" размерах линий и размера сдвига. Было бы все кратно, тогда задать размер 25х25 каждой ячейке и гонять 1 в матрице. Но расстояние между палками (22px), смещение на 25px, и толщина линий - 16pх, создают сложности
источник

IK

Illya Klymov in JavaScript.Ninja
не очень понятно что мешает создать либо два канваса и двигать верхний
источник

AP

Alexey Pan in JavaScript.Ninja
Illya Klymov
в секундах :)
Так мне же перфоманс нужен, там SPA переход за 800 мс может быть. Госпади, почему я выбрал такой сложный путь....
источник

IK

Illya Klymov in JavaScript.Ninja
либо копировать кусок со смещением
источник

IK

Illya Klymov in JavaScript.Ninja
Alexey Pan
Так мне же перфоманс нужен, там SPA переход за 800 мс может быть. Госпади, почему я выбрал такой сложный путь....
ну так прочитайте документацию по concat фильтру :) он умеет и не в секундах
источник

IK

Illya Klymov in JavaScript.Ninja
duration умеет в полный формат hh:mm:ss.mmm как и почти все временные метки в ffmpeg
источник

AP

Alexey Pan in JavaScript.Ninja
@xanf_ua спасибо, посмотрел твой доклад где ты говорил про ffmeg, орал в голос.
источник

V

Vladosik in JavaScript.Ninja
как перевести строку "true" в значение bool true
а "false" в bool false
?
источник

AP

Alexey Pan in JavaScript.Ninja
if a==="true"
источник

PK

Pasha K in JavaScript.Ninja
a = a === 'true' ? true : false
источник

N

Nick in JavaScript.Ninja
Vladosik
как перевести строку "true" в значение bool true
а "false" в bool false
?
!!a
источник

AP

Alexey Pan in JavaScript.Ninja
Nick
!!a
!!"false" === true
источник

AP

Alexey Pan in JavaScript.Ninja
не правильно
источник

V

Vladosik in JavaScript.Ninja
благодарю)
источник

S

Sm•ok 😈✔️ in JavaScript.Ninja
Vladosik
как перевести строку "true" в значение bool true
а "false" в bool false
?
const boolean = ("true" === "true") || ("false" === "false" ? false : "кот Шредингера");

Но в целом хватит просто проверки на тру
источник

AP

Alexey Pan in JavaScript.Ninja
Тут можно задавать вопросы про гит? как сквошнуть всю ветку?
источник

S

Sm•ok 😈✔️ in JavaScript.Ninja
const a = "true" === "true" - да, если не равно, значит фолс
источник

S

Sm•ok 😈✔️ in JavaScript.Ninja
(но это не точно, строка может быть другой)
источник