05 July 2020 @ 06:35 pm
занимательная жизнь насекомых  
очень длинный топик на флибусте. если у вас нет guilty pleasure наблюдать за тем, как мудаки не могут пропустить ни одного шанса продемонстрировать, какие они мудаки (или вы всё ещё по каким-то странным причинам думаете, что «комсостав» на флибусте — хотя бы немного нормальные люди) — не ходите. там длинно и скучно. а если любите — можете получить удовольствие, там прелестно.
 
 
04 July 2020 @ 09:20 am
скажите, мне кажется, или...  
подумал: вроде как у каждых 10-20 лет есть более-менее узнаваемый вид. ну, типа, смотришь на картинку: «о, это девчонка из 80-х. о, а это 60-е.» а после 90-х — я просто не заметил, или оно пропало, никакого стиля не появилось, только подражание прошлым?
 
 
27 June 2020 @ 05:31 pm
k8vavoom, новобилд  
свежатинка. в основном всякие внутренние изменения в компилере вавумцэ, но и немного других фиксов тоже есть.
Tags:
 
 
27 June 2020 @ 12:37 pm
медитативная игра  
Quantum Gardening. забавная, глупая и медитативная.
 
 
21 June 2020 @ 12:20 pm
как я и говорил  
сайберупанцу всё переносят и переносят. потому что хуй оно нормально работает. когда студия заявляет, что вообще-то у них всё давно готово, просто надо ещё чуть-чуть отладить, то это значит что все дедлайны давно проёбаны, а как нихуя не работало нормально — так и не работает.
 
 
21 June 2020 @ 10:44 am
про фанфики  
Мор написала текст про фанфики. и, в общем-то, со многими цитатами там можно согласиться… если бы не одно «но». фильм «игра престолов», например — это фанфик. но мартин как-то не шибко протестовал. почему? потому что ему дали денег. но сказать честно, что он против фанфиков исключительно потому что авторы ему не платят — кишка тонка. поэтому в ход пошло мощное оружие морализаторства (и «онижеживые»).

вот когда этим морализаторам-фанфиконенавистникам предложат продать права на экранизацию за охулиард охулиардов денег, а ответом будет: «идите нахуй, онижеживые, а вы всё сделаете не так» (а сделают не так, никогда исключений не было) — вот тогда можно уже предметно обсуждать. до тех же пор — лживые пиздоболы просто недовольны тем, что им «недоплачивают», но ссут в этом честно признаться. не то чтобы я ожидал от большинства популярных писателей какой-то честности и чести, конечно, но помечтать ведь можно…

p.s.: на всякий случай. там большинство текста — цитаты или пересказ слов других авторов, и именно на них я ругаюсь.
 
 
20 June 2020 @ 11:09 pm
...  
судя по репортам s.m.a.r.t., мой рабочий винт рассматривает турагентства для путешествия в небо. естественно, никакие «бэкапы» мне делать некуда (иначе, натурально, я бы просто свапнул рабочий и бэкапный), так что остаётся тупо сидеть и наблюдать за процессом. всё-таки не зря я так не люблю окрестности своего дня рождения — опять какое-то трололо.
 
 
18 June 2020 @ 09:51 pm
это чудесно!  
уебаны с world of spectrum кучу лет обвиняли Эйнара в том, что он, де, спиздил базу оригинального wos (это ложь, но они продолжали), и в итоге… кто подумал: «они в обнове спиздили эйнаровский ZXDB без кредитсов»? ДА!
 
 
16 June 2020 @ 06:45 pm
и про спектрум  
не идеал, но лучше, чем то дерьмо, которым стал вос: spectrum computing.
 
 
16 June 2020 @ 01:13 am
спасибо, пидорасы  
worldofspectrum отлично работал 21 год. последнее изменение движка было шесть лет назад, и он тоже работал. поэтому вчера кто-то решил, что всё надо срочно обновить. а то как-то несолидно: даже жабоскриптов не требует. совсем несовременно. теперь без жабоскрипта не работает вообще никак. идите нахуй, сраные хипсторы — хуле вы вообще туда лезете, дегенераты? убили ещё один сайт. ну, хуй с ним: архив игр у меня где-то скачан. в блоклист, нахуй. R.I.P. WoS, 1999-2020.
 
 
11 June 2020 @ 08:20 pm
кстати, да  
раз у нас такая страшная ковидла, то я так понимаю, все «протестующие» негры уже от этой ковидлы умерли. просто им забыли сказать, а негры тупые, не в курсе, что мёртвые.
 
 
09 June 2020 @ 09:11 am
да здравствует прямое действие!  
то есть, запилил в libart нативную читалку svg. внезапно оказалось, что мы в состоянии без проблем отрендерить даже такое:

на чём раньше наглухо висли (потому что конвертер свг где-то косячил, видимо).

сам парзер прошёл длинный путь: сначала в AGG (и на крестах, кажется), потом в NanoSVG (на си), потом в NanoVega (на D), и теперь в libart (опять на си). естественно, традиции следует чтить, поэтому никаких внешних зависимостей ему не надо. а полная одинаковость результатов гарантируется тем, что я затащил в libart как Ryu для печати даблов, так и `strtod()` из plan9 для парзинга (потому что когда я брал рю в k8vavoom, там ещё не было парзера).

единственное, обо что сломал весь череп — это градиенты. во-первых, я нихуя не понимаю, как они работают в свг, а во-вторых, ещё больше не понимаю, как в libart. помимо того, что в либарт ещё и баг с полупрозрачными градиентами: они помечены как premultiplied alpha, а на деле — обычный separate. судя по тому что до сих пор никто этот баг не нашёл — я не один не понявший как использовать градиенты.
 
 
06 June 2020 @ 07:50 am
я искал тебя два дня...  
два дня искал баг в растеризаторе libart, из-за которого вот так протекает (попробуйте догадаться сами, результат чего это, оно сложно только для меня):


нашёл:


естественно, не в libart, а в моём экпортёре свг. который я писал для библиотеки, где заполненые контуры автоматически закрываются, и поэтому финальный lineto делать не обязательно. libart же полностью доверяет входным данным — и, конечно, сходит с ума на отсутствующем сегменте.

в общем, тупо научил libart автоматически всё закрывать в заполнялке — потому что никакой причины этого не делать нет.

по дороге перевёл множество апей с копипасты реаллока на общий апи динамических массивов, убрал отдельный тип «путь с безьерками» (теперь один тип пути на всё), сделал итератор по командам, который автоматически тесселизирует кривые (и использовал где возможно), сменил тесселизатор на улучшеный из моей NanoVega, с защитой от дурной рекурсии на плоских частях.

по дороге продолжаю наслаждаться отсутствием документации. когда я только начинал, обнаружил, что некоторые пути не заливаются. в принципе, понятно: порядок обхода. и winding rule. в библиотеке есть два API для исправления этого: длинно документированое и очень глючное старое, и вообще ни строчкой не документированое хорошо работающее новое. угадать не читая исходников — невозможно.

как работают градиенты — тоже совершенно неясно, опять придётся исходник читать. вот есть linear gradient, с многозначительными параметрами `double a, b, c;`. отлично. я понял, да. это, кажется, уравнение прямой — но хоть строчку об этом можно написать, не?

при этом к куче апей документация таки написана (и вместо .h зачем-то была засунута в .c — потому что Особенности). но написана обычно совершенно на отъебись: две очевидных фразы, и почти ничего про контракты.

само собой, я эту традицию продолжу и ничего исправлять не буду.
 
 
04 June 2020 @ 11:44 am
libart шмагло  
картинко )
 
 
04 June 2020 @ 04:41 am
поздравляю сюда  
авось ты тут аноном ещё читаешь. нутыпонел. ;-)
 
 
03 June 2020 @ 11:24 am
ещё про libart  
у автора libart есть ещё интересный концепт видуального манипулирования шириной кривых: spiro.

в принципе, это просто более общая версия алгоритма dashing, в котором кроме размера штриха можно ещё менять его ширину. а обычный прерывистый dash — просто частный случай, в котором каждый второй штрих шириной ноль. но получилось очень удобно, по-моему. всё ещё не метафонт, но уже нормальный способ визуально работать с шириной.

в обсуждении метафонта был анончик, который что-то подобное искал, вроде бы. вот, тебе должно если и не подойти, то жизнь облегчить.
 
 
03 June 2020 @ 05:24 am
публично быть расистом снова модно  
очевидно, что все, пишущие «блацк ливез матер» — обычные расисты. потому что никак иначе, чем: «чёрные, конечно, не люди, но их тоже немного жаль» — данная фраза не читается. то есть, сейчас считается, что людей априори убивать нехорошо. «и вот негров тоже нехорошо», — добавляют пишущие. исключая тем самым негров из множества людей.

большинство негров (в америке), кстати, с этим исключением согласно. потому что быть человеком — это сплошные неприятные обязанности. а если из людей выписаться в каких-нибудь угнетённых, то обязанностей сразу нет, и все люди вдруг тебе должны.

я, конечно, не против того, чтобы каждый свободно выбирал, быть ли ему человеком. но совершенно не понимаю, почему отказавшиеся быть требуют себе какие-то человеческие права и отношение как к людям. когда животные бунтуют — их нейтрализуют. никаких тебе «hen lives matter».

или ты человек, можешь пояснить свои цели и то, как твои действия эти цели приближают (как техасцы недавно), или ты тупо безмозглое животное, которому нравится разрушать то, что создали люди, не имея никакой конструктивной программы — и тогда тебя надо пристрелить. каждый сам выбирает, кем ему быть. и цвет кожи тут неважен.
 
 
02 June 2020 @ 08:32 am
нам надо больше форков!  
форкнул libart. если кто не в курсе — это библиотека, которая использовалась для рендера когда сairo ещё не было. умеет в антиалиас-рендер всяких векторных и безьерных путей, со стандартным набором фич (толстые линии, разные типы line joins/caps, dashing, gradients).

зачем? ну, во-первых, потому что могу. во-вторых, это интересно. и ещё мне нужна была небольшая библиотечка для рендера всяких векторов в битмапы, которую можно тупо кинуть в проект и использовать. libart как раз такая: конфигур ей нафиг не нужен, нужен только c99, «stdint.h» и «math.h» в котором есть `sincos()` (но это настраиваемо, можно задефайнить свою реализацию).

пока что как-то усердно её допиливать я не планирую, только добавлю несколько нужных мне фич.

да, учтите, что она на даблах, а не на флоатах. в алгоритмы не вникал, поэтому не знаю, можно ли без багов даунгрейднуть. в принципе, мне пофигу, меня даблы пока устраивают.

ещё там — как и полагается — беда с документацией. я засунул в репу древние доки из интернетов, но они реально древние, и очень неполные (собственно, на самом интересном месте обрываются: там, где надо бы написать, как запускать рендеринг). я добавил простой пример для xlib, где чуть-чуть процесс прокомментировал. и ещё потом добавлю.

как обычно уже с моей стороны — стабильность API не гарантируется. без нужды я ломать не буду, но и сильно переживать по поводу совместимости тоже.

p.s.: из уже добавленого — я сделал возможность сменить менеджер памяти, и установить колбэк для вывода всяких сообщений. планирую докинуть ещё разных растеризаторов безьерок, и всякие утилиты для рисования окружностей, дуг, элипсов, прямоугольников со скруглёнными углами, etc.
Tags:
 
 
31 May 2020 @ 08:36 am
к прошлому  
ага, вот чем MPR плохой: он не умеет посчитать минимальное расстояние между двумя фигурками (насколько я понял). соответственно, для CCD неприменим (равно как и для систем, где очень большие скорости).

хотя если вытянуть одну из фигурок в направлении движения (это несложно, они же выпуклые), то как минимум факт удара определить можно. для выталкивания, правда, не подойдёт — придётся прикидывать расстояние и потом уточнять. с другой стороны — MPR, похоже, чуть быстрее GJK, поэтому можно делать MPR для вытянутых, и потом GJK для минимального расстояния, если ударилось.

однако надо будет потом перепроверить: может я чего недопонял.
 
 
30 May 2020 @ 01:36 pm
слоупоке рапортует  
фигасе. окромя GJK, о котором я писал, есть ещё MPR. тоже на саппортах и минковском, но автор говорит, что во-первых, проще, во-вторых, более стабильный, и в-третьих, не нужен дополнительный алгоритм (EPA) для вычисления «направления выталкивания».

странным образом никто особо о нём не упоминает, в основном везде говорят про GJK. я пока просто полистал «в режиме pgdn» — по-моему, круто. надо будет повертеть подробней.