Логические операции на прямоугольных полигонах

Согласно AirBnb react style guide , которому следуют правила eslint, порядок или метод в React.Component должны быть

  1. необязательными статическими методами
  2. [ 113] конструктор
  3. getChildContext
  4. componentWillMount
  5. componentDidMount
  6. componentWillReceiveProps
  7. shouldComponentUpdate
  8. componentWillUpdate
  9. [1110 ] componentDidUpdate
  10. componentWillUnmount
  11. clickHandlers или eventHandlers, такие как onClickSubmit () или onChangeDescription ()
  12. методы getter для рендеринга, такие как getSelectReason () или getFooterContent ()
  13. [14] дополнительные методы рендеринга, такие как renderNavigation () или renderProfilePicture ()
  14. render
blockquote>

6
задан Community 8 February 2017 в 14:09
поделиться

4 ответа

Это - особый случай общего 2D отсечения полигона. Хорошее место для запуска является алгоритмом Weiler-Атертона. Википедия имеет сводку и ссылки на исходную бумагу. Алгоритм, кажется, соответствует структуре данных, которую Вы описали вполне прилично.

Обратите внимание, что довольно возможно, что Вы закончите с прямоугольником с дырой в нем (если красный будет полностью в черном) или даже два прямоугольника (например, если красный является более высоким и более тощим, чем черный цвет). Если Вы уверены, что существует только один угол красного прямоугольника в черном затем, решение должно быть намного более простым.

5
ответ дан 10 December 2019 в 02:55
поделиться
2
ответ дан 10 December 2019 в 02:55
поделиться

Насколько точный координаты? Если прямоугольники являются довольно маленькими, самый легкий подход мог бы быть, чтобы просто нарисовать их на холсте, черный прямоугольник сначала, сопровождаемый красным. Остающиеся черные пиксели на холсте являются полигоном, который это оставляют.

Другой подход должен разделить координатную сетку на набор прямоугольников на основе всех сторон прямоугольников (не считающий неограниченные прямоугольники, у Вас есть до 9 прямоугольников, сгенерированных, если у Вас есть два исходных прямоугольника). Затем просто протестируйте представительную точку от каждого из этих прямоугольников для членства в конкретных полигонах для определения, в котором находятся прямоугольники и которые отсутствуют.

2
ответ дан 10 December 2019 в 02:55
поделиться

Я нашел некоторый материал здесь, я мог бы использовать:

http://www.cgal.org/Manual/3.3/doc_html/cgal_manual/Boolean_set_operations_2/Chapter_main.html

Я на самом деле загрузил источник CGAL, прежде чем я даже отправил этот вопрос, но я думаю, что ближе изучу его.

0
ответ дан 10 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: