Гугл говорит о том, что можно узнать пересекаются они вообще или нет, а вот как получить именно координату пересечения не понятно.
Я говорю не о простой математике, а уже готовой функции.
Алгоритм такой.
Согласно Assistant конструктор QGraphicsLineItem такой.
QGraphicsLineItem ( const QLineF & line, QGraphicsItem * parent = 0 )
Значит туда передаётся некто QLineF.
По Assistant смотрим описание QLineF. Попутно вспоминаем как по англицки "пересекаться". Гугл подсказывает - intersect.
Ищем это слово на странице описания QLineF. И находим такую штуку
IntersectType QLineF::intersect ( const QLineF & line, QPointF * intersectionPoint ) const
Вот этот метод тебе и нужен.
Нафиг я всё так расписал, а не тупо ответил?
Просто потому, что стоит привыкнуть работать с документацией.
Да, не знал об этом, спасибо.
Но я не могу с этим разобраться.
QLineF* line1 = new QLineF(0, 0, 30, 30);
QLineF line2(0, 30, 30, 0);
QPointF* intersectionPoint = new QPointF(50, 50);
qDebug()<<line1->intersect(line2, intersectionPoint);
возвращает 1примерно так
QLineF l1(QPointF(0, 0), QPointF(10,0));
QLineF l2(QPointF(0, 0), QPointF(0,10));
QPointF pntIntersect;
int res = l1.intersect(l2, &pntIntersect); // сюда - pntIntersect будет записана точка пересечения, как ты понимаешь - эт (0,0)
QLineF* line1 = new QLineF(0, 0, 30, 30);
QLineF line2(0, 30, 30, 0);
QPointF* intersectionPoint = new QPointF(50, 50);
qDebug()<<line1->intersect(line2, intersectionPoint);
qDebug()<<intersectionPoint->x();
qDebug()<<<<intersectionPoint->y();
Все работает!
QLineF* line1 = new QLineF(0, 0, 30, 30);
QLineF line2(0, 30, 30, 0);
QPointF intersectionPoint;
line1->intersect(line2, &intersectionPoint);
qDebug()<<intersectionPoint.x()<<intersectionPoint.y();
vankleef, тоже работает ваш вариант, но new QPointF(50, 50); не на что не влияет. Почему то.
Ааа!
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)