Я работаю со списком прямоугольников и должен проверить, находится ли каждый из них в правильном положении, основанном на фиксированной шаблоне и наборе геометрических ограничений. Пространственная позиция, повторяя каждые 4 элемента в списке. Несмотря на то, что сама роль определяется исключительно по индексу, фактическая позиция прямоугольника, как ожидается, визуально соответствует этой роли < /p>
Последняя группа может содержать менее 4 прямоугольников, если длина списка не делится на 4. Это не считается ошибкой - как оставшиеся прямоугольники в этой последней группе по -прежнему следуют ожидаемой ролевой и пространственной правилам. Это исключение применимо только к окончательной группе, основанной на длине списка ввода. размещение там, где должен быть правый прямоугольник). < /p>
Допустимый диапазон движения каждого прямоугольника определяется не только путем предотвращения прямого перекрытия с его соседями, но также и дополнительным правилом:
прямоугольники не должны пересекать линии удлиненной оси (x-axis). До тех пор, пока он не пересекает вертикальные граничные линии своих горизонтальных соседей: < /p>
слева: она не должна пересекать вертикальную линию, простирающуюся от правого края левого соседа. < /p>
Право: не должна пересекать вертикальную линию, простирающуюся от левого края правого соседа. (Ось Y):
прямоугольник может двигаться вертикально только до тех пор, пока он не пересекает горизонтальные граничные линии своей вертикальной пары (верхняя /нижняя пара): < /p>
Движение вниз: она не должна пересекать горизонтальную линию, расширяющуюся от верхней части нижней пары. его верхняя пара. < /p>
Другими словами, прямоугольник никогда не должен пересекать воображаемые границы, выравниваемые осью, даже если сами прямоугольники не касаются физически. Ограничение: не может пересечь горизонтальную ось, простирающуюся от края пары.
прямоугольники могут варьироваться по размеру, они не обязаны быть равномерными. Это учитывается в логике: все валидация положения основана на краях и ограничениях, выравниваемых осью (не фиксированными измерениями). Прямоугольник считается недействительным, только если он пересекает расширенные граничные линии соседа, независимо от его размера. < /P>
Я пишу приведенный ниже код. В настоящее время моя функция идентифицирует, когда два прямоугольника нарушают ограничение оси (например, один перекрывает другой вдоль x или y). Но в таких случаях он помечает оба прямоугольника - тот, который остался в правильном положении, и тот, который фактически перемещался в пространство другого. < /P>
Однако это поведение не идеально. Я хотел бы просто пометить прямоугольник, который вторгся в зону оси другого. Индекс того, который фактически нарушил правило, пересекая запрещенное пространство.
Подробнее здесь: https://stackoverflow.com/questions/796 ... axis-based
Как проверить положения прямоугольника в повторяющейся 4-ролльной компоновке с пространственными ограничениями на основе ⇐ C++
Программы на C++. Форум разработчиков
1749916122
Anonymous
Я работаю со списком прямоугольников и должен проверить, находится ли каждый из них в правильном положении, основанном на фиксированной шаблоне и наборе геометрических ограничений. Пространственная позиция, повторяя каждые 4 элемента в списке. Несмотря на то, что сама роль определяется исключительно по индексу, фактическая позиция прямоугольника, как ожидается, визуально соответствует этой роли < /p>
Последняя группа может содержать менее 4 прямоугольников, если длина списка не делится на 4. Это не считается ошибкой - как оставшиеся прямоугольники в этой последней группе по -прежнему следуют ожидаемой ролевой и пространственной правилам. Это исключение применимо только к окончательной группе, основанной на длине списка ввода. размещение там, где должен быть правый прямоугольник). < /p>
Допустимый диапазон движения каждого прямоугольника определяется не только путем предотвращения прямого перекрытия с его соседями, но также и дополнительным правилом:
прямоугольники не должны пересекать линии удлиненной оси (x-axis). До тех пор, пока он не пересекает вертикальные граничные линии своих горизонтальных соседей: < /p>
слева: она не должна пересекать вертикальную линию, простирающуюся от правого края левого соседа. < /p>
Право: не должна пересекать вертикальную линию, простирающуюся от левого края правого соседа. (Ось Y):
прямоугольник может двигаться вертикально только до тех пор, пока он не пересекает горизонтальные граничные линии своей вертикальной пары (верхняя /нижняя пара): < /p>
Движение вниз: она не должна пересекать горизонтальную линию, расширяющуюся от верхней части нижней пары. его верхняя пара. < /p>
Другими словами, прямоугольник никогда не должен пересекать воображаемые границы, выравниваемые осью, даже если сами прямоугольники не касаются физически. Ограничение: не может пересечь горизонтальную ось, простирающуюся от края пары.
прямоугольники могут варьироваться по размеру, они не обязаны быть равномерными. Это учитывается в логике: все валидация положения основана на краях и ограничениях, выравниваемых осью (не фиксированными измерениями). Прямоугольник считается недействительным, только если он пересекает расширенные граничные линии соседа, независимо от его размера. < /P>
Я пишу приведенный ниже код. В настоящее время моя функция идентифицирует, когда два прямоугольника нарушают ограничение оси (например, один перекрывает другой вдоль x или y). Но в таких случаях он помечает оба прямоугольника - тот, который остался в правильном положении, и тот, который фактически перемещался в пространство другого. < /P>
Однако это поведение не идеально. Я хотел бы просто пометить прямоугольник, который вторгся в зону оси другого. Индекс того, который фактически нарушил правило, пересекая запрещенное пространство.
Подробнее здесь: [url]https://stackoverflow.com/questions/79655259/how-to-validate-rectangle-positions-in-a-repeated-4-role-layout-with-axis-based[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия