@ProLua

Страница 302 из 307
Насибуллин
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
Это даже с учётом того что print - охреннено медленный. P.S. Конспирологам на заметку: я только что спалил свой часовой пояс ))
чет я не понимаю. Ты же даешь просто таймстамп сейчас , а его таймзона определяется там , где он интерпретируется (превращается в читаему дату, например)

а, я забыл про 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

Александр
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
типа того

Насибуллин
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 излишняя

Я и говорю - string.format сожрёт объект с tostring?
лучше, всё же, явно преобразовывать

чтобы меньше писать можешь просто задефайнить s=tostring и потом вызывать s(moo):format("%x")

в смысле, наоборот, ("%x"):format(s(moo))

(это просто у меня есть свой метод для string (fmt) который вот в таком порядке работает)

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

Страница 302 из 307