P2P constraint fix
Но по-хорошему стоит придумать, как после P2P соединить линии одной точкой
This commit is contained in:
7
Canvas.h
7
Canvas.h
@@ -24,6 +24,7 @@ enum class Mode : int
|
||||
|
||||
// Удобный тип для хранения пары параллельных линий (порядок не важен)
|
||||
using LinePair = std::pair<Line*, Line*>;
|
||||
using PointPair = std::pair<Point*, Point*>;
|
||||
|
||||
// ===================================================================
|
||||
// Основной класс холста
|
||||
@@ -49,9 +50,8 @@ private:
|
||||
// ====================== Поиск и выбор ======================
|
||||
Line* findAt(QPointF&); // ищет линию под курсором
|
||||
Point* findPointAt(QPointF, qreal tolerance = 10.0);
|
||||
|
||||
bool areCoincident(Point*, Point*, bool mode = false);
|
||||
// ====================== Параллельность ======================
|
||||
LinePair makeOrderedPair(Line* l1, Line* l2);
|
||||
bool areAlreadyParallel(Line* l1, Line* l2); // проверка на дубликат
|
||||
|
||||
// ====================== Перемещение ======================
|
||||
@@ -65,6 +65,7 @@ private:
|
||||
std::vector<double*> params; // все параметры, передаваемые в солвер
|
||||
|
||||
std::set<LinePair> parallelPairs; // уже запараллеленные пары (защита от дублей)
|
||||
std::set<PointPair> P2Ppairs;
|
||||
|
||||
Line* current_line{ nullptr };
|
||||
Point* firstPoint{ nullptr };
|
||||
@@ -72,5 +73,5 @@ private:
|
||||
bool after_constraint{ false };
|
||||
|
||||
int obj_count{ 0 }; // тег для новых объектов
|
||||
int constraints_count{ 0 }; // тег для новых ограничений
|
||||
int constraints_count{ 0 }; // тег для новых ограничений
|
||||
};
|
||||
Reference in New Issue
Block a user