Я разрабатываю простой инструмент для построения диаграмм с фигурами на плане, используя flex.
Сначала я использовал простую сетку 20 * 20.
Но по-настоящему круто то, что это магнитный эффект авто-топора, так я его называю, по крайней мере, чтобы понять, почему я имею в виду то, что я снял небольшое видео с balsamiq.
http://screenr.com/clB
http://www.balsamiq.com/
Как вы можете видеть, он выравнивается по вертикальной горизонтальной границе и центральной оси.
- Границы: серые топоры
- Горизонтальное выравнивание (высота / 2) Центр: синий топор
- Без вертикального выравнивания (ширина / 2) топор
- Некоторые промежуточные отступы 25px: зеленые оси
Как вы думаете, как работают такие алгоритмы:
Сейчас я буду делать без вращения.
Дана форма S1 , выбранная в верхнем левом положении x, y ширины w и высоты h .
Посмотрите на все фигуры, пересекающие две зоны:
из xmin = x, xmax = x + w для y> 0.
от yming = y, ymax = y + h для x> 0.
Как только у меня есть список соответствующих фигур, я проверяю, соответствуют ли какие-либо условия:
Когда я использую '=', его приближение + или - 2 пикселя даст желаемый эффект "магнита"
- S1 x = S'x => Серая линия в x
- S1 x + w = S'x => Серая линия в x + w
- S1 y = S'y => Серая линия у y
- S1 y + h = S'y => Серая линия при y + h
- S1 x = S'x и S1 x + w = S'x + w => Синяя линия при x + w / 2
А учитывая набивочный магнит 20 px
- S1 x = S'x + PADD => зеленая линия в S1 x
- S1 x = S'x - PADD => зеленая линия при S1 x
- S1 y = S'y + PADD => зеленая линия на S1 y
- S1 y = S'y - PADD => зеленая линия на S1 y
Что вы думаете об этом?