Предварительное вычисление пересечения линии и квадрата

У меня есть код, который проверяет пересечение линий и ячеек и возвращает общее количество пересеченных линий. Этот код определен в mouseMoveEvent и получает местоположение мыши для проверки пересечения во время выполнения, что работает очень медленно. Мне сказали предварительно вычислить расположение сетки и проверить позже, но я не знаю, как это сделать точно. Буду признателен, если вы предложите способ решения проблемы. Спасибо!

        for(int i =0;i< (int)m_axes.size(); ++i){ // number of axes may change
      //checking nof polylines in grid cells
     if(i<(int)m_axes.size()-1)
       for(int ibox = 0; ibox < 30 ; ++ibox){// ibox = horizontal bigger boxes/cells
        // get cells and test them one by one to see 
        // if the mouse pointer is in there.
        auto box = get_box(i,ibox); 
        // check if we are in the cell
        if(inAxisAlignedRectangle(box, relative_pos)){ // if mouse in a cell
            for(int ibetbox = 0; ibetbox < 5; ++ibetbox){//ibetboxes = each grid cell in big boxes
                auto smallbox= get_smallbox (box, ibetbox);
                // check if we are in the grid cell
                if(inAxisAlignedRectangle(smallbox, relative_pos)){
                    m_highlight_ibox = ibox;
                    m_highlight_ibetbox = ibetbox;
                    m_axis_box_highlight = i;
                    auto count = countNumber(i, smallbox);
                    qDebug()<<"Polyline Count: " <<count;
                    
                }
            }
        }
    }
 }

0 ответов

Другие вопросы по тегам