Насибуллин
23.05.2018
10:04:27
а не надо кавычкировать? т.е.
table.insert(optionsScroll. "backgroundColor", {0.8...
Vadim
23.05.2018
10:40:49
ага надо, поправил
Particle
23.05.2018
12:15:18
Подскажите, что не так?
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
у меня 4я (с 1й включительно) точка уже на середине пути
Google
Yuriy
23.05.2018
12:24:19
Всем привет
кто нибудь встречал проблему мб:
os.clock отдает всегда 0...
Хоть ^5 хоть ^1 хоть сколько...
Встерилось на centOs 7
Думаю мб из за системы виртуализации..
ShadoWalkeR
23.05.2018
12:26:03
Селинукс?
Он может еще обращения к системе блокировать
Particle
23.05.2018
12:30:09
т.е. как-то наоборот получается - частота точек должна увеличиваться на изгибах, а у меня на прямых =/
Yuriy
23.05.2018
13:14:35
Насибуллин
23.05.2018
13:15:49
для работы с виртуализированными часами может быть специальный пакет (в случае центоса .рпм)
Yuriy
23.05.2018
13:32:10
Ну вообще сокетом решилось конечно
но не clock
Насибуллин
23.05.2018
13:34:00
сокетом решилась проблема с часами? это как?
Yuriy
23.05.2018
13:46:08
в моем случае мне нужно было уникальное значение чего либо
Впринипе миллисекунд вполне хватило
socket.gettime()*10000
Snusmumriken
23.05.2018
13:46:35
После этого сделай нано-слип, если тебе нужно генерить кучу уникальных значений.
Yuriy
23.05.2018
13:46:48
Я не имел ввиду что я решил конкретную проблему. Я имел ввиду что результат получил необходимый мне в итоге
Google
Snusmumriken
23.05.2018
13:48:23
Это даже с учётом того что print - охреннено медленный.
P.S. Конспирологам на заметку: я только что спалил свой часовой пояс ))
Yuriy
23.05.2018
13:53:58
Мне не на столько часто нада)
но я учел по поводу nanosleep
Particle
23.05.2018
13:57:40
Разобрался с кривыми. Больше помощь не нужна.
Насибуллин
23.05.2018
14:01:24
а, я забыл про System clock set to UTC
да, у тебя таймстамп именно в локальной таймзоне
Particle
23.05.2018
14:35:04
А почему не передается time в модуль?
for time = 0, 1, 0.03 do
scr_bezier.set(Points, Coords, time)
end
nil пишет
всё, въехал
Влад
23.05.2018
16:32:44
Так расскажи
Particle
23.05.2018
16:49:16
Влад
23.05.2018
16:50:44
Да
Particle
23.05.2018
16:52:59
функция рекурсивная, я забыл аргумент прописать в ней (в месте повторного вызова) =/
алгоритм Де Бура для чайников есть в природе? Подскажите, где можно почитать, что бы максимально разжевано было (я в математике ноль).
Lucky
24.05.2018
06:27:22
https://www.intuit.ru/studies/courses/993/163/lecture/4497?page=5
Particle
24.05.2018
06:49:32
я, к сожалению, даже этого не понимаю. Что-нибудь с кодом бы, хотя бы js или на худой конец С...
Lucky
24.05.2018
07:12:12
Школьники обленились совсем. https://en.wikipedia.org/wiki/De_Boor%27s_algorithm
Matwey
24.05.2018
07:12:32
Шкальники
Google
Particle
24.05.2018
07:37:10
А как вот это на 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
24.05.2018
07:49:19
гугл транслейтом
слева выбираешь python, справа - lua
https://github.com/hawkthorne/hawkthorne-client-lua/blob/master/src/vendor/bspline.lua
https://github.com/msteinbeck/tinyspline
Particle
24.05.2018
07:56:47
Спасибо большое!
Помогите еще немного. Кароче, собрал сплайн из квадратичных кривых, соединенных в мидпоинтах. Хочу через указанные точки их пустить, но не знаю, как выровнять промежуточные.
промежуточные надо переместить относительно новых координат на то же расстояние (отразить)?
Lucky
24.05.2018
09:02:09
https://vk.com/wall-72985232_80876
Particle
24.05.2018
14:20:16
походу, можно перевернуть порядок вычисления и сделать контрольными точками зеленые, которые пересекает линия...
Ребят, скажите, в чём разница между двумя строками? По сути это одно и то же, не?
В данном случае: 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])
Проблема в том, что во втором варианте, кривая функции в космос улетает =/
Daniil
24.05.2018
20:52:43
@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
24.05.2018
22:09:43
Минутка офтопа - криптолулзы: http://www.opennet.ru/opennews/art.shtml?num=48653
Particle
24.05.2018
22:25:58
@particle_booster, если у тебя где-то идут операции с этими значениями, то в первом варианте ты передаёшь непосредственно значения, а во втором варианте - ссылку на таблицу со значениями. И во втором варианте, когда ты начнёшь проводить операции с скопированным элементом - будут изменятся и оригинальные элементы.
*Объяснения не мой конёк
В общем есть табличка t
t = {{1}, {2}}
Копируем первый элемент по ссылке
table.insert(t, 1, t[1])
Получаем табличку
t == {{1}, {1}, {2}}
Теперь делаем
t[1][1] = 3
Получаем
t == {{3}, {3}, {2}}
Думается мне что проблема в этом
Благодарю! Похоже на то.
Александр
25.05.2018
08:22:50
Привет.
Прочитал где-то, что добавление __tostring к таблице автоматически включает и возможность использовать оператор "..". На практике получаю ошибку вида "нельзя сконкатенировать myobj с чем-то". Как решить проблему?
Lua 5.3, биндинг к C++ (sol2)
Vadim
25.05.2018
08:24:55
смотря что ты называешь "добавлением __tostring"
Александр
25.05.2018
08:25:57
Ну.. я не силен в терминах, но подразумеваю добавление метода в метатаблицу.
Google
Александр
25.05.2018
08:26:16
Короче tostring(myobj) после этого работает корректно
mihacooper
25.05.2018
08:32:11
__tostring для "перегрузки" tostring(myobj)
я для перегрузки .. нужен __concat
Александр
25.05.2018
08:35:22
В статье, которую я читал, упоминалась "совместимость" __concat и __tostring, но видимо имелось в виду другое.
Тогда другой вопрос - как удобно и быстро перегрузить __concat, чтобы он использовал __tostring? Не прописывать же в каждой реализации return tostring(lhs) .. tostring(rhs)?
mihacooper
25.05.2018
08:37:55
1) Перегружаешь __tostring для преобразования объекта в строку
2) Перегружаешь __concat для того, что он использовал преобразование в строку
Насибуллин
25.05.2018
08:38:54
может быть можно пройтись по метатаблицам и каждой сделать:
.__concat = function return tostring(lhr)..(tostring(rhs)
?
mihacooper
25.05.2018
08:39:52
a = setmetatable({data="message"}, {
__tostring=function(t) return t.data end,
__concat=function(l,r) return tostring(l) .. tostring(r) end
})
Александр
25.05.2018
08:39:54
Так как это биндинг, то мне в принципе не сложно автоматизировать. Просто смутил сам факт, что это разные вещи и могут быть по-разному реализованы
mihacooper
25.05.2018
08:39:57
типа того
Vadim
25.05.2018
08:42:57
Насибуллин
25.05.2018
08:43:13
не знаю, я предположил, т.к. на луа не писал
Vadim
25.05.2018
08:43:29
проще просто сделать свой конструктор таблиц
и создавать их им, а не {} :)
тогда нужно будет задать метатаблицу только один раз (в, собственно, конструкторе)
Александр
25.05.2018
08:44:51
А какие исторические причины того, что concat - отдельный от tostring оператор?
Vadim
25.05.2018
08:45:22
по-моему, ответ очевиден
это же разные действия
Александр
25.05.2018
08:46:15
Это понятно, что разные, но ведь concat реализуется через tostring явно. Вопрос в том, когда это может быть не так?
Vadim
25.05.2018
08:46:56
другое дело, что конкатенация могла бы использовать __tostring по умолчанию, но тогда бы каждому типу пришлось бы иметь __concat даже есть из коробки он с ним не совместим, что немного нарушает концепцию Lua "as less as possible"
mihacooper
25.05.2018
08:47:15
concat - оператор и то, что он должен вызывать "tostring" как раз таки не очевидно, можно перегрузить его и сделать конкатенацию таблиц например
Google
Александр
25.05.2018
08:47:43
Окей, логично
mihacooper
25.05.2018
08:47:59
это как оператор "плюс", который необязатльно должен что-то складывать)
Александр
25.05.2018
08:48:31
Ладно, убедили. А tostring с форматной строкой дружит?
mihacooper
25.05.2018
08:48:57
не
для этого string.format
Vadim
25.05.2018
08:49:53
более того, кстати, в случае таблиц полезным может быть добавить в __concat логику на определение типа у l и в зависимости от этого либо отдавать строку с конкатенированой через __tostring таблицей, либо таблицу из двух склеенных
Александр
25.05.2018
08:49:56
Я и говорю - string.format сожрёт объект с tostring?
Vadim
25.05.2018
08:50:13
а для строки или числа, например, такая логика в __concat излишняя
чтобы меньше писать можешь просто задефайнить s=tostring и потом вызывать s(moo):format("%x")
в смысле, наоборот, ("%x"):format(s(moo))
(это просто у меня есть свой метод для string (fmt) который вот в таком порядке работает)
Александр
25.05.2018
08:52:58
Tverd
25.05.2018
09:14:11
Можно функцию написать, например format("%s", 17)
И вплоть до питоновых в фигурных скобках
Particle
25.05.2018
13:59:55
потом средние между ними :
Mid[1] = (Temp[i][1] + Temp[im1][1]) / 2
Mid[2] = (Temp[i][2] + Temp[im1][2]) / 2