Зачатаки для Circle
This commit is contained in:
54
Canvas.cpp
54
Canvas.cpp
@@ -92,6 +92,14 @@ void Canvas::zoomReset()
|
||||
|
||||
Line* Canvas::findAt(QPointF& pos, qreal tolerance)
|
||||
{
|
||||
//for (Curve* curve : curves) {
|
||||
// if (Line* line = dynamic_cast<Line*>(curve)) {
|
||||
// if (line->contains(pos, tolerance)) {
|
||||
// return line;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
for (Line* line : lines) {
|
||||
if (line->contains(pos, tolerance)) {
|
||||
return line;
|
||||
@@ -103,6 +111,19 @@ Line* Canvas::findAt(QPointF& pos, qreal tolerance)
|
||||
Point* Canvas::findPointAt(QPointF pos, qreal tolerance)
|
||||
{
|
||||
Point* temp = nullptr;
|
||||
|
||||
//for (Curve* curve : curves) {
|
||||
// if (Line* line = dynamic_cast<Line*>(curve)) {
|
||||
// QPointF p1(*line->p1.x, *line->p1.y);
|
||||
// QPointF p2(*line->p2.x, *line->p2.y);
|
||||
|
||||
// if (dist_P2P(p1, pos) <= tolerance)
|
||||
// temp = line->start_ref;
|
||||
// if (dist_P2P(p2, pos) <= tolerance)
|
||||
// temp = line->end_ref;
|
||||
// }
|
||||
//}
|
||||
|
||||
for (Line* line : lines) {
|
||||
QPointF p1(*line->p1.x, *line->p1.y);
|
||||
QPointF p2(*line->p2.x, *line->p2.y);
|
||||
@@ -350,6 +371,7 @@ void Canvas::mousePressEvent(QMouseEvent* event)
|
||||
current_line->set_tag(obj_count++);
|
||||
// Завершаем создание линии
|
||||
lines.append(current_line);
|
||||
curves.append(current_line);
|
||||
current_line = nullptr;
|
||||
mode = Mode::None;
|
||||
after_constraint = true;
|
||||
@@ -437,6 +459,16 @@ void Canvas::mousePressEvent(QMouseEvent* event)
|
||||
// Находим линии, к которым принадлежат точки
|
||||
Line* l1 = nullptr;
|
||||
Line* l2 = nullptr;
|
||||
|
||||
//for (Curve* curve : curves) {
|
||||
// if (Line* l = dynamic_cast<Line*>(curve)) {
|
||||
// if (l->start_ref == firstPoint || l->end_ref == firstPoint)
|
||||
// l1 = l;
|
||||
// if (l->start_ref == clickedPoint || l->end_ref == clickedPoint)
|
||||
// l2 = l;
|
||||
// }
|
||||
//}
|
||||
|
||||
for (Line* l : lines) {
|
||||
if (l->start_ref == firstPoint || l->end_ref == firstPoint)
|
||||
l1 = l;
|
||||
@@ -610,6 +642,12 @@ void Canvas::paintEvent(QPaintEvent* event)
|
||||
p.drawLine(0, -5, 0, 5);
|
||||
|
||||
// ====================== Отрисовка линий ======================
|
||||
|
||||
// for (Curve* curve : curve){
|
||||
// if (Line* line = dynamic_cast<Line*>(curve)) {
|
||||
// ...
|
||||
// }
|
||||
// }
|
||||
for (Line* line : lines) {
|
||||
bool isSelected = (mode == Mode::Parallel && line == current_line);
|
||||
|
||||
@@ -803,6 +841,11 @@ void Canvas::solve_for_canvas()
|
||||
}
|
||||
else {
|
||||
sys.applySolution();
|
||||
// for (Curve* curve : curve){
|
||||
// if (Line* line = dynamic_cast<Line*>(curve)) {
|
||||
// ...
|
||||
// }
|
||||
// }
|
||||
for (Line* line : lines) {
|
||||
if (abs(*line->p1.x - *line->p2.x) < EPS && abs(*line->p1.y - *line->p2.y) < EPS && after_constraint) {
|
||||
sys.undoSolution();
|
||||
@@ -811,13 +854,15 @@ void Canvas::solve_for_canvas()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (flag) {
|
||||
if (flag && after_constraint) {
|
||||
QMessageBox::warning(this, QString("Error!"), QString("Last constraint is unavailable!"));
|
||||
remove_constraint(constraints_count - 1);
|
||||
C_Info.erase(constraints_count - 1);
|
||||
constraints_count--;
|
||||
}
|
||||
else if (flag) {
|
||||
sys.undoSolution();
|
||||
}
|
||||
after_constraint = false;
|
||||
update();
|
||||
}
|
||||
@@ -840,6 +885,10 @@ void Canvas::clearCanvas()
|
||||
delete pt;
|
||||
}
|
||||
|
||||
// for (Curve* curve : curve){
|
||||
// delete curve;
|
||||
// }
|
||||
|
||||
for (Line* line : lines) {
|
||||
delete line;
|
||||
}
|
||||
@@ -848,6 +897,7 @@ void Canvas::clearCanvas()
|
||||
params.clear();
|
||||
points.clear();
|
||||
lines.clear();
|
||||
// curves.clear();
|
||||
|
||||
// Очистка контейнеров ограничений
|
||||
parallelPairs.clear();
|
||||
|
||||
Reference in New Issue
Block a user