Hacker News Digest

Тег: #graphics

Постов: 5

A Friendly Introduction to Racket (geometridae.bearblog.dev)

Язык программирования Racket — это современный потомок Lisp, родившийся в 1995 году как эволюция PLT Scheme. Он сочетает минималистичный синтаксис с мощной системой создания новых языков, что делает его идеальным для обучения и экспериментов. В отличие от «классического» Lisp, Racket предлагает гибкую архитектуру, где язык можно адаптировать под конкретную задачу — будь то анализ данных, генерация кода или визуализация.

Главная идея Racket — homoiconicity: код представлен как данные, что позволяет писать макросы и динамически модифицировать язык. Например, через (define-syntax-rule (while condition body ...) ...) можно добавить цикл while, которого нет в базовом синтаксисе. Это не просто текстовая замена, а полноценная языковая конструкция, генерируемая во время компиляции. Такие возможности делают Racket уникальным: вы не просто пишете программы, вы создаёте инструменты для их написания. Для понимания достаточно открыть DrRacket, ввести простой пример вроде (factorial 5) и увидеть результат — 120. Экспериментируйте с графикой через #lang racket и библиотекой 2htdp/image, чтобы увидеть, как код превращается в визуальные образы.

by signa11 • 22 августа 2026 г. в 14:08 • 206 points

ОригиналHN

#2htdp-image#drscheme#graphics#homoiconicity#lisp#macros#programming-language#racket#scheme

Комментарии (107)

Racket поддерживает создание нативных исполняемых файлов, включая кросс-компиляцию GUI-приложений (например, с macOS на Windows); официальное руководство содержит инструкции по сборке, подтверждая встроенные средства деплоя. Существуют реальные приложения — camp от Joël Dueck и remember от defn.io — что опровергает утверждение об отсутствии практического применения. Сообщество предоставляет ресурсы: Awesome Racket, Beautiful Racket, Racket Stories, собирающие библиотеки, учебные материалы и примеры проектов. Споры возникают вокруг вводной части статьи: одни считают её «не дружелюбной» из-за предположений о знании λ и синтаксиса, другие — что она достаточна для мотивированного читателя. Исторически Lisp утратил лидерство в ИИ из-за падения финансирования и появления Prolog, что объясняет его нишевый статус. Многие пользователи Emacs не осознают, что используют Emacs Lisp как язык программирования. Рекомендации: обратить внимание на дополнительные литералы (хеш-таблицы, регулярные выражения), не упомянутые в вводной статье; для оценки производительности макросов сравнивать с SBCL, где функции компилируются в нативный код, а макросы исполняются до компиляции. Изучение проектов camp и remember, а также ресурсов beautifulracket.com и racket-stories.com, помогает глубже освоить язык. Личный опыт показывает, что знание Racket может открыть профессиональные возможности — например, контракт в сфере CAD. Некоторые ценят в Racket горячую перезагрузку кода, другие — гомоиконичность как ключевое преимущество.

Os8088: A powerful Mac-like OS for the IBM XT, 286, 386 (os8088.com)

Основная идея — полностью эмулированная графическая среда, работающая на реальном IBM PC XT с процессором 8088, где каждый запущенный элемент (окно, панель, мини‑приложение) представляет отдельный процесс, имеет собственный док‑тик и независимый буфер памяти. При этом ядро управляет прерывками, планированием и выделением сегментов так, что даже простые программы, как MINES (1,5 КБ) или HELLO, загружаются в собственные 2 КБ и 512‑байтные области без модификации кода.

Особенности, которые запоминаются: одновременная работа до пяти программ, включая «живой» About‑box, отображающий состояние планировщика, и плавный XOR‑трекинг курсора при перемещении окна; минимизация не останавливает фоновые задачи, а лишь скрывает их визуализацию; иконки файлов берутся непосредственно из первого сектора диска, а графические редакторы (Paint, Fractal) используют буферы и кольцевые истории, позволяющие выполнять фоновые операции, пока запущены ресурсоёмкие приложения. Всё это демонстрирует, как ограниченные ресурсы IBM PC XT могут поддерживать современный‑по‑удобству пользовательский интерфейс.

by jggonz • 08 августа 2026 г. в 23:37 • 217 points

ОригиналHN

#286#386#8088#emulation#graphics#ibm#memory-segmentation#multitasking#os8088#x86

Комментарии (143)

Тред обсуждает реализацию графической ОС Os8088 для IBM XT, 286, 386: участники анализируют код, производительность и опыт использования подобных систем, а также роль ИИ в разработке. Проект признаётся интересным примером графической ОС на старом железе, но некоторые скептически относятся к применению ИИ. Обсуждается уязвимость к перезаписи обработчиков прерываний и таймера — одни считают это значимой проблемой, другие — нет. Предлагаются улучшения: поддержка сети, улучшение интерфейса, портирование приложений вроде WordStar и VisiCalc. Отмечается потенциал ИИ в создании сложных систем, но подчёркивается необходимость человеческого участия в разработке и документировании.

Show HN: A CSS-Only Terrain Generator (terra.layoutit.com) 🔥 Горячее

Layoutit Terra - это интерактивный генератор рельефа на CSS, позволяющий создавать разнообразные ландшафты с настраиваемыми параметрами. Инструмент предлагает выбор между типами рельефа (пампы, холмы, горы) и биомами (умеренный, арктический, пустынный), а также контроль над размером мира и покрытием суши. Пользователи могут детально настраивать камеру через параметры вращения, наклона и увеличения, добавляя анимацию к созданным ландшафтам.

Генератор поддерживает экспорт результатов в多种 форматы, включая CSS, высотные карты, VOX, TXT и PNG, что обеспечивает гибкость использования. Функции импорта, отмены/повтора действий, а возможность копировать код для встраивания или открывать его в Codepen упрощают интеграцию в другие проекты. Несмотря на раннюю версию (v0.0.1), Layoutit Terra уже предоставляет мощные возможности для создания детализированных CSS-ландшафтов с минимальными усилиями.

by rofko • 04 ноября 2025 г. в 13:58 • 317 points

ОригиналHN

#animation#css#graphics#javascript#terrain-generation#web-development#webgl

Комментарии (80)

  • Пользователи отмечают, что «CSS-only»-демо всё же использует JS для интерактивности, хотя рендеринг ландшафта действительно на 100 % CSS.
  • Визуально демо напоминает RCT, SimCity 2000, Populous и другие изометрические «тайкун»-игры, вызывая ностальгию.
  • Несколько человек сообщили о проблемах с производительностью: при включённом JS в Firefox 144 и Chrome 131 на Windows 10/11 рендеринг занимает 100-200 мс на обновление кадра, что приводит к просадкам фпс.
  • Автор ответил, что в будущих версиях планируется добавить реки и водопады, а также улучшить производительность.

Making Minecraft Spherical (bowerbyte.com) 🔥 Горячее

Blocky Planet — демо на Unity, превращающее кубические воксели Minecraft в полностью разрушаемую сферическую планету из 20+ блоков.

Частые вопросы

  • Где играть? Бесплатно на itch.io (Windows + web).
  • Зачем? Вдохновился старым демо Jordan Peck и хотел добавить текстуры и масштабное разрушение.
  • Будет ли игра? Вряд ли: мало времени, а путь от демо до релиза огромен.
  • Сколько времени? ~1 месяц по 15 ч/нед. Пост занял вдвое дольше.
  • Стек: Unity 6, C#, Job System + Burst, но без DOTS.
  • Код? Пока закрыт — стыдно.
  • Текстуры? Нарисованы вручную или скриптами; многие блоки ≈ шум + тонировка.
  • Идеи/вопросы? Пишите в реддит-пост.

Делаем сферу

Простой способ — отфильтровать блоки внутри заданного радиуса, но тогда гравитация не совпадает с «верхом» блоков. Нужно:

  1. Наложить 2D-квадратную сетку на 3D-сферу.
  2. Сохранять ширину блоков при удалении от центра.

Карта без искажений — миф

Гаусс доказал: без искажений не обойтись. Попытки втиснуть глобус в прямоугольник дают чудовищные искажения у полюсов.

by iamwil • 28 августа 2025 г. в 18:12 • 826 points

ОригиналHN

#3d#csharp#graphics#itch.io#minecraft#physics#unity#voxel

Комментарии (115)

  • Автор продемонстрировал работающий «кубический» voxel-мир на сфере, где основной проблемой остаётся вертикальное искажение.
  • Комментаторы сравнили проект с Space Engineers, Seed of Andromeda, PlanetSmith, Minetest и другими попытками создать «Minecraft на планете».
  • Предложены альтернативы: геодезические сферы, торо-сфера (Eco), шестигранные воксели, HEALPix, S2, а также уменьшение игрока при приближении к ядру.
  • Пользователи отметили удовольствие от орбитальной механики и мечтают о гибриде Minecraft + Kerbal Space Program.

An interactive guide to SVG paths (joshwcomeau.com) 🔥 Горячее

SVG <path>: краткий путеводитель

<path> — единственный способ рисовать сложные фигуры и кривые в SVG. Синтаксис пугает, но разобравшись, становится удобным.

Основы

  • Атрибут d — последовательность команд, как «рецепт» для пера.
  • Каждая команда начинается с буквы и получает координаты как аргументы.
  • Предыдущая точка автоматически становится началом следующей команды.
  • Используйте пробелы и запятые — читаемость важнее байтов.

Команды

  • M x,y — поднять перо и переместиться в точку.
  • L x,y — прямая линия до точки.
  • C x1 y1, x2 y2, x y — кубическая Безье.
  • Q x1 y1, x y — квадратичная Безье.
  • A rx ry x-axis-rotation large-arc-flag sweep-flag x y — дуга эллипса.
  • Z — замкнуть путь к начальной точке.

Относительные координаты

Буквы в нижнем регистре (m, l, c…) двигают перо относительно текущей позиции, а не от начала координат.

Цепочки кривых

Повторяйте команды, чтобы строить сложные формы без лишних M.

Анимации

Изменяя d через CSS или JS, можно плавно морфить фигуры.

Советы

  • Начинайте путь всегда с M.
  • Для читаемости группируйте команды построчно.
  • Проверяйте результат в интерактивном редакторе.

by joshwcomeau • 18 августа 2025 г. в 15:19 • 427 points

ОригиналHN

#bezier-curves#css#graphics#javascript#path#postscript#svg

Комментарии (43)

  • Участники обсуждают интуитивные способы задавать эллиптические дуги без булевых флагов, предлагая параметры вроде углов или контрольной точки.
  • Хвалят интерактивный гайд по SVG-путям, его наглядность и звуковые эффекты.
  • Делятся практическим опытом: динамическая генерация карт в играх, разметка сканов, чтение путей «с нуля».
  • Рекомендуют инструменты для редактирования и генерации SVG: GodSVG, Boxy SVG, онлайн-редактор yqnn.
  • Отмечают связь SVG с PostScript, Logo и даже коническими сечениями; обсуждают GPU-ускорение для кривых Безье и рендеринг шрифтов.