Перейти к содержимому

Лидеры


Популярный контент

Показан контент с высокой репутацией 15.09.2022 в Сообщения

  1. 3 балла
    Код: -- floyd steinberg dither -- function Dither.floyd_steinberg_dither(matrix, bool_matrix, width, height) for y=1, height-1 do for x=2, width-1 do local old_r,old_g,old_b = colors.toRGB(matrix[y][x]) --old_r,old_g,old_b = Dither.greyscale_pixel(old_r,old_g,old_b) local factor = 3 local new_r = CEIL(factor * old_r / 255) * (255 / factor) local new_g = CEIL(factor * old_g / 255) * (255 / factor) local new_b = CEIL(factor * old_b / 255) * (255 / factor) new_r,new_g,new_b = math.floor(new_r), math.floor(new_g), math.floor(new_b) matrix[y][x] = colors.fromRGB(new_r,new_g,new_b) bool_matrix[CEIL(y/3)][CEIL(x/2)] = true local err_r = old_r - new_r local err_g = old_g - new_g local err_b = old_b - new_b local index_x, index_y = x+1, y local c_r, c_g, c_b = colors.toRGB(matrix[index_y][index_x]) c_r = c_r + err_r * 7/16.0 c_g = c_g + err_g * 7/16.0 c_b = c_b + err_b * 7/16.0 matrix[index_y][index_x] = colors.fromRGB(c_r, c_g, c_b) bool_matrix[CEIL(index_y/3)][CEIL(index_x/2)] = true index_x, index_y = x-1, y+1 c_r, c_g, c_b = colors.toRGB(matrix[index_y][index_x]) c_r = c_r + err_r * 3/16.0 c_g = c_g + err_g * 3/16.0 c_b = c_b + err_b * 3/16.0 matrix[index_y][index_x] = colors.fromRGB(c_r, c_g, c_b) bool_matrix[CEIL(index_y/3)][CEIL(index_x/2)] = true index_x, index_y = x, y+1 c_r, c_g, c_b = colors.toRGB(matrix[index_y][index_x]) c_r = c_r + err_r * 5/16.0 c_g = c_g + err_g * 5/16.0 c_b = c_b + err_b * 5/16.0 matrix[index_y][index_x] = colors.fromRGB(c_r, c_g, c_b) bool_matrix[CEIL(index_y/3)][CEIL(index_x/2)] = true index_x, index_y = x+1, y+1 c_r, c_g, c_b = colors.toRGB(matrix[index_y][index_x]) c_r = c_r + err_r * 1/16.0 c_g = c_g + err_g * 1/16.0 c_b = c_b + err_b * 1/16.0 matrix[index_y][index_x] = colors.fromRGB(c_r, c_g, c_b) bool_matrix[CEIL(index_y/3)][CEIL(index_x/2)] = true --[[ [y+1][x ] [y+1][x+1] ]] end end return matrix, bool_matrix end colors взял отсюда: https://www.computercraft.info/forums2/index.php?/topic/23048-rgb-api-convert-rgb-colors-to-computercraft-colors-and-back/
  2. 1 балл
    Процесс уборки мусора провоцируется каждым десятым вызовом computer.pullSignal.
  3. 1 балл
    Ого виртуальная машина! слева сверху на скрине конеч попадос и да оперативе не будет хана?
  4. 0 баллов
    Я готовлю большой проект - виртуальную машину OpenComputers для OpenOS, и уже достиг некоторых успехов. Но появилась серьёзная проблема: Запустив MineOS своей виртуальной машиной и открыв там приложение palette, после пика любого цвета возникает ошибка Заранее извиняюсь за скриншот ошибки, но отлов и сохранение её в текстовом виде занял бы много времени. Ошибка возникает когда что-то пытается открыть файл /home/VirtualMachine1/mineos/lib/process.lua В том месте, где это происходит, - в функции filesystem.lines апи MineOS, я дампнул стек вызовов. Вот он: stack traceback: /Libraries/Filesystem.lua:572: in field 'lines' /Libraries/System.lua:2174: in field 'error' /OS.lua:231: in main chunk [C]: in function 'xpcall' machine:799: in global 'xpcall' virtual_bios:179: in upvalue 'executeString' virtual_bios:219: in upvalue 'boot' virtual_bios:473: in local 'tryBootFromAny' virtual_bios:485: in main chunk [C]: in function 'xpcall' machine:799: in global 'xpcall' /usr/lib/libvm.lua:110: in method 'start' /usr/bin/vm.lua:40: in main chunk (...tail calls...) [C]: in function 'xpcall' machine:799: in global 'xpcall' /lib/process.lua:63: in function </lib/process.lua:59> Из него становится ясно, что инициатором сего действия является библиотека OpenOS - /lib/process.lua. Тут надо немного объяснить, как вообще работает файловая система в моей виртуальной машине: Фактически, она полностью имитирует компонент файловой системы, но ограничивает её до конкретной директории. Простыми словами, open ("/test.txt") превращается в open ("/home/VirtualMachine1/mineos/test.txt"). То же самое происходит и здесь: система пытается открыть файл "/lib/process.lua", который действительно существует, но виртуальный компонент превращает его в "/home/VirtualMachine1/mineos/lib/process.lua". Кажется, всё и так понятно. Но с чего майноси вообще открывать системный файл OpenOS? Тут в дело вступает трейсбек, который говорит, что нечто происходит в 63 строке модуля process. Вот ссылка на эту самую строку в гитхабе. Здесь используется coroutine.create, которая, видимо, исполняет переданную ей функцию при пике цвета в палитре MineOS. Это всё, что мне удалось выяснить, и я понятия не имею, что с этим делать. Корутины и как они работают я знаю меньше всего из lua и opencomputers, так что буду очень рад помощи.
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...