Anonymous
а не надо кавычкировать? т.е. table.insert(optionsScroll. "backgroundColor", {0.8...
Anonymous
ага надо, поправил
Particle Booster
Подскажите, что не так? https://pomax.github.io/bezierinfo/ тут, прямо над 14-м параграфом, график слева. Точки распределены практически равномерно, но у меня с самого начал очень большие расстояния, а затем, ближе к концу кривой, сливаются в одну =/ lua function drawCurve(points, t) if #points == 1 then coords[#coords + 1] = {points[1][1], points[1][2]} else local newpoints = {} for i = 1, #points - 1 do newpoints[i] = points[i] end for i = 1, #newpoints do newpoints[i][1] = t * (points[i + 1][1] - points[i][1]) + points[i][1] newpoints[i][2] = t * (points[i + 1][2] - points[i][2]) + points[i][2] end drawCurve(newpoints, t) end end
Particle Booster
у меня 4я (с 1й включительно) точка уже на середине пути
Yuriy
Всем привет кто нибудь встречал проблему мб: os.clock отдает всегда 0... Хоть ^5 хоть ^1 хоть сколько... Встерилось на centOs 7 Думаю мб из за системы виртуализации..
ShadoWalkeR
Селинукс?
ShadoWalkeR
Он может еще обращения к системе блокировать
Particle Booster
т.е. как-то наоборот получается - частота точек должна увеличиваться на изгибах, а у меня на прямых =/
Anonymous
для работы с виртуализированными часами может быть специальный пакет (в случае центоса .рпм)
Yuriy
Ну вообще сокетом решилось конечно
Yuriy
но не clock
Anonymous
сокетом решилась проблема с часами? это как?
Yuriy
в моем случае мне нужно было уникальное значение чего либо Впринипе миллисекунд вполне хватило socket.gettime()*10000
Snusmumriken
После этого сделай нано-слип, если тебе нужно генерить кучу уникальных значений.
Yuriy
Я не имел ввиду что я решил конкретную проблему. Я имел ввиду что результат получил необходимый мне в итоге
Snusmumriken
Snusmumriken
Это даже с учётом того что print - охреннено медленный. P.S. Конспирологам на заметку: я только что спалил свой часовой пояс ))
Yuriy
Мне не на столько часто нада)
Yuriy
но я учел по поводу nanosleep
Particle Booster
Разобрался с кривыми. Больше помощь не нужна.
Anonymous
Это даже с учётом того что print - охреннено медленный. P.S. Конспирологам на заметку: я только что спалил свой часовой пояс ))
чет я не понимаю. Ты же даешь просто таймстамп сейчас , а его таймзона определяется там , где он интерпретируется (превращается в читаему дату, например)
Anonymous
а, я забыл про System clock set to UTC
Anonymous
да, у тебя таймстамп именно в локальной таймзоне
Particle Booster
А почему не передается time в модуль? for time = 0, 1, 0.03 do scr_bezier.set(Points, Coords, time) end
Particle Booster
nil пишет
Particle Booster
всё, въехал
vvzvlad
Так расскажи
Particle Booster
vvzvlad
Да
Particle Booster
функция рекурсивная, я забыл аргумент прописать в ней (в месте повторного вызова) =/
Particle Booster
алгоритм Де Бура для чайников есть в природе? Подскажите, где можно почитать, что бы максимально разжевано было (я в математике ноль).
Lucky
https://www.intuit.ru/studies/courses/993/163/lecture/4497?page=5
Particle Booster
я, к сожалению, даже этого не понимаю. Что-нибудь с кодом бы, хотя бы js или на худой конец С...
Lucky
Школьники обленились совсем. https://en.wikipedia.org/wiki/De_Boor%27s_algorithm
Matwey
Шкальники
Lucky
Particle Booster
А как вот это на lua перевести? def deBoor(k, x, t, c, p): """ Evaluates S(x). Args ---- k: index of knot interval that contains x x: position t: array of knot positions, needs to be padded as described above c: array of control points p: degree of B-spline """ d = [c[j + k - p] for j in range(0, p+1)] for r in range(1, p+1): for j in range(p, r-1, -1): alpha = (x - t[j+k-p]) / (t[j+1+k-r] - t[j+k-p]) d[j] = (1.0 - alpha) * d[j-1] + alpha * d[j] return d[p]
Lucky
гугл транслейтом
Lucky
слева выбираешь python, справа - lua
Lucky
https://github.com/hawkthorne/hawkthorne-client-lua/blob/master/src/vendor/bspline.lua
Lucky
https://github.com/msteinbeck/tinyspline
Particle Booster
Спасибо большое!
Particle Booster
Particle Booster
Particle Booster
Помогите еще немного. Кароче, собрал сплайн из квадратичных кривых, соединенных в мидпоинтах. Хочу через указанные точки их пустить, но не знаю, как выровнять промежуточные.
Particle Booster
промежуточные надо переместить относительно новых координат на то же расстояние (отразить)?
Particle Booster
Выходит за синие точки, но пойдет =) Кстати, не знаете как по точкам её протащить? Я плясал от координат синих, но после смещения мидпоинтов, линия вышла за пределы координат.
Particle Booster
походу, можно перевернуть порядок вычисления и сделать контрольными точками зеленые, которые пересекает линия...
Particle Booster
Ребят, скажите, в чём разница между двумя строками? По сути это одно и то же, не? В данном случае: Case = {{x , y}, {x , y}, {x , y}, ..., {x , y}} table.insert(Case, 1, {Case[1][1], Case[1][2]}) table.insert(Case, 1, Case[1]) Проблема в том, что во втором варианте, кривая функции в космос улетает =/
Даниил
@particle_booster, если у тебя где-то идут операции с этими значениями, то в первом варианте ты передаёшь непосредственно значения, а во втором варианте - ссылку на таблицу со значениями. И во втором варианте, когда ты начнёшь проводить операции с скопированным элементом - будут изменятся и оригинальные элементы. *Объяснения не мой конёк В общем есть табличка t t = {{1}, {2}} Копируем первый элемент по ссылке table.insert(t, 1, t[1]) Получаем табличку t == {{1}, {1}, {2}} Теперь делаем t[1][1] = 3 Получаем t == {{3}, {3}, {2}} Думается мне что проблема в этом
Lucky
Минутка офтопа - криптолулзы: http://www.opennet.ru/opennews/art.shtml?num=48653
Александр
Привет. Прочитал где-то, что добавление __tostring к таблице автоматически включает и возможность использовать оператор "..". На практике получаю ошибку вида "нельзя сконкатенировать myobj с чем-то". Как решить проблему? Lua 5.3, биндинг к C++ (sol2)
mva
смотря что ты называешь "добавлением __tostring"
Александр
Ну.. я не силен в терминах, но подразумеваю добавление метода в метатаблицу.
Александр
Короче tostring(myobj) после этого работает корректно
mihacooper [МСК -2]
__tostring для "перегрузки" tostring(myobj)
mihacooper [МСК -2]
я для перегрузки .. нужен __concat
Александр
В статье, которую я читал, упоминалась "совместимость" __concat и __tostring, но видимо имелось в виду другое. Тогда другой вопрос - как удобно и быстро перегрузить __concat, чтобы он использовал __tostring? Не прописывать же в каждой реализации return tostring(lhs) .. tostring(rhs)?
mihacooper [МСК -2]
1) Перегружаешь __tostring для преобразования объекта в строку 2) Перегружаешь __concat для того, что он использовал преобразование в строку
Anonymous
может быть можно пройтись по метатаблицам и каждой сделать: .__concat = function return tostring(lhr)..(tostring(rhs) ?
mihacooper [МСК -2]
a = setmetatable({data="message"}, { __tostring=function(t) return t.data end, __concat=function(l,r) return tostring(l) .. tostring(r) end })
Александр
Так как это биндинг, то мне в принципе не сложно автоматизировать. Просто смутил сам факт, что это разные вещи и могут быть по-разному реализованы
mihacooper [МСК -2]
типа того
Anonymous
не знаю, я предположил, т.к. на луа не писал
mva
проще просто сделать свой конструктор таблиц
mva
и создавать их им, а не {} :)
mva
тогда нужно будет задать метатаблицу только один раз (в, собственно, конструкторе)
Александр
А какие исторические причины того, что concat - отдельный от tostring оператор?
mva
по-моему, ответ очевиден
mva
это же разные действия
Александр
Это понятно, что разные, но ведь concat реализуется через tostring явно. Вопрос в том, когда это может быть не так?
mva
другое дело, что конкатенация могла бы использовать __tostring по умолчанию, но тогда бы каждому типу пришлось бы иметь __concat даже есть из коробки он с ним не совместим, что немного нарушает концепцию Lua "as less as possible"
mihacooper [МСК -2]
concat - оператор и то, что он должен вызывать "tostring" как раз таки не очевидно, можно перегрузить его и сделать конкатенацию таблиц например
Александр
Окей, логично
mihacooper [МСК -2]
это как оператор "плюс", который необязатльно должен что-то складывать)