# CSS Matrix3D — Калькулятор перспективы [English version](README.md) Браузерный инструмент для генерации CSS-трансформаций `matrix3d()` с перспективной проекцией. Укажите 4 угла на поле и размер виджета — получите готовый CSS-код. **Ключевые слова:** CSS matrix3d, перспективная трансформация, 3D CSS, гомография, отображение четырёхугольника, генератор CSS-трансформаций, перспективная проекция, CSS 3D-эффекты, фоновое изображение, перспективный макет, инструмент перспективы CSS ## Использование [Открыть в браузере](https://ku6epxboctuk.is-a.dev/css-matrix-calc/) — не требует сборки. - **Редактирование** — перетаскивайте углы на SVG-поле, настраивайте размеры поля и виджета - **Предпросмотр** — результат трансформации matrix3d() обновляется в реальном времени Скопируйте CSS из раздела «CSS Output» и вставьте в свой проект. ## Пошаговый пример Размещение виджета на экране в фоновом изображении с помощью перспективной трансформации. ### 1. Загрузите фоновое изображение Загрузите фотографию фона на поле. Она послужит визуальным ориентиром для позиционирования углов. ### 2. Загрузите изображение виджета Загрузите виджет (например, панель интерфейса или скриншот), который хотите разместить на экране. ### 3. Сопоставьте углы с целевой областью Перетащите 4 угла на SVG-поле так, чтобы они совпали с краями экрана (или любой другой четырёхугольной поверхности) на фоновом изображении. Предпросмотр обновляется в реальном времени. ### 4. Получите результат Виджет отрисовывается с правильной перспективой, соответствующей углу наклона экрана на фоне. Скопируйте сгенерированный CSS с `matrix3d()` и вставьте в свой проект. ## Возможности - Чистая математика — расчёт matrix3d() на основе гомографии - Предпросмотр в реальном времени - Перетаскивание углов мышью - Редактируемые размеры поля с блокировкой пропорций - Масштабирование координат при изменении размера поля - **Загрузка фонового изображения** — загрузка изображения на поле для визуальной ориентации - **Загрузка изображения виджета** — загрузка изображения в виджет с автоматическим подбором размера - Три способа загрузки: выбор файла, вставка через Ctrl+V, drag & drop - **Настройка object-fit** — contain, cover, fill, none, scale-down - Нулевые зависимости, работает в любом современном браузере ## Фоновое изображение Загрузите фоновое изображение на поле, чтобы использовать его как ориентир при позиционировании углов. Полезно для точного совпадения перспективы существующих скриншотов или фотографий. **Как загрузить:** - Нажмите «Загрузить изображение» и выберите файл - Нажмите Ctrl+V, чтобы вставить из буфера обмена - Перетащите файл изображения на левую колонку или панель «Фон» **Настройка отображения:** - Используйте выпадающий список object-fit для управления масштабированием изображения: contain, cover, fill, none или scale-down ## Изображение виджета Загрузите изображение непосредственно в виджет. При загрузке изображения размеры виджета (Ш/В) автоматически подстраиваются под размер изображения и блокируются. **Как загрузить:** - Нажмите «Загрузить изображение» на панели виджета - Нажмите на поле вставки и нажмите Ctrl+V - Перетащите файл изображения на панель виджета **Удаление:** - Нажмите «Удалить», чтобы очистить изображение виджета и разблокировать размеры ## Применение - **Презентации и лендинги** — отрисовка виджета или скриншота на мониторе под любым углом - **Карусели и галереи** — демонстрация карточек товаров с перспективной деформацией - **Интерактивные инфографики** — наложение данных на карты или диаграммы с перспективой - **Превью приложений** — размещение мобильного интерфейса на фоне устройства - **Эффекты при скролле** — анимация matrix3d для 3D-эффектов без WebGL - **Макеты и прототипы** — визуальное размещение интерфейсов в контексте (на стене, ноутбуке, баннере) - **Совпадение перспективы** — загрузите фото экрана, совместите углы, получите точную CSS-трансформацию ## Структура проекта ```text ├── index.html ├── style.css └── js/ ├── main.js — точка входа ├── state.js — управление состоянием ├── homography.js — математика гомографии ├── svg-renderer.js — SVG-рендеринг ├── drag.js — обработка перетаскивания ├── inputs.js — поля ввода ├── preview.js — предпросмотр └── ui.js — кнопки, режимы, загрузка изображений ``` ## Как это работает Инструмент использует [гомографию]() для вычисления 3D-перспективной трансформации по 4 соответствующим точкам. Результирующее CSS-свойство `matrix3d()` отображает прямоугольный виджет на произвольный четырёхугольник, заданный пользователем. ## Лицензия MIT