利用Qt判斷點是否在直線上

2021-09-25 20:02:18 字數 2499 閱讀 3752

在計算機集合中乙個常用的功能就是判斷交集的關係,點是否在直線上也是常用的一種判斷關係。

定義直線:

#pragma once

#include #include //線段

class lineseg

inline void setendpoint(qpointf pt)

inline qpointf&getstartpoint()

inline qpointf&getendpoint()

inline void setlinecolor(qcolor color)

inline qcolor&getlinecolor()

inline void setlinewidth(int w)

inline int&getlinewidth()

qpointf getvector();//獲取線段的向量

double getlength();//獲取線段的長度

private:

qpointf _ptstart;//線段的起點

qpointf _ptend;//線段的終點

qcolor _color = qcolor(255, 0, 0);

int _width = 2;

};

#include "lineseg.h"

lineseg::lineseg()

lineseg::~lineseg()

qpointf lineseg::getvector()

double lineseg::getlength()

定義滑鼠事件:

#pragma once

#include #include #include #include #include "ui_qtguigeopointinline.h"

class qmouseevent;

class lineseg;

class qtguigeopointinline : public qmainwindow ;

#include#include#include#include#include "qtguigeopointinline.h"

#include "lineseg.h"

qtguigeopointinline::qtguigeopointinline(qwidget *parent)

: qmainwindow(parent)

void qtguigeopointinline::mousepressevent(qmouseevent *event)

update();

}void qtguigeopointinline::mousemoveevent(qmouseevent *event)

if (_isstartpointinline) else

} }update();

}void qtguigeopointinline::mousereleaseevent(qmouseevent *event)

update();

}void qtguigeopointinline::paintevent(qpaintevent *event)

//繪製彈簧線條

if (_lb***own)

}bool qtguigeopointinline::isinline(qpointf&pt, lineseg*line)

return false;

double len1 = sqrt((line->getstartpoint().x() - pt.x())*(line->getstartpoint().x() - pt.x()) + (line->getstartpoint().y() - pt.y())*(line->getstartpoint().y() - pt.y()));

double len2 = sqrt((line->getendpoint().x() - pt.x())*(line->getendpoint().x() - pt.x()) + (line->getendpoint().y() - pt.y())*(line->getendpoint().y() - pt.y()));

double lenline = line->getlength();

qdebug() << "line->getlength() = " << lenline << " len1 + len2 = " << len1 + len2;

if (lenline + 0.01 >= (len1+len2)&& (len1 + len2)>= lenline) else

#endif

}void qtguigeopointinline::slotactionpoint() else

}

主函式呼叫:

#include "qtguigeopointinline.h"

aaa

判斷點是否在麵內

public class point return flag 目標點是否在目標邊上邊上 param px0 目標點的經度座標 param py0 目標點的緯度座標 param px1 目標線的起點 終點 經度座標 param py1 目標線的起點 終點 緯度座標 param px2 目標線的終點 起...

Qt判斷網路是否在

我們已知的網路連線有3種 撥號 使用區域網以及 上網。無論哪一種上網方式都可以判斷網路是否暢通,藉此,我們來做乙個判斷網路是否暢通 存在 的程式,新建乙個基類為qwidget的工程,不要ui。新增新檔案 c class class name isonl base name qwidget 頭函式 i...

判斷點是否在矩形的裡面

要判斷點 是否在矩形abcd的裡面,有 如果 在ab的左邊,也在bc左邊,也在cd左邊,也在da左邊,則p在abcd的裡面 如果 在ab的右邊,也在bc右邊,也在cd右邊,也在da右邊,則p也在abcd的裡面 否則p不在abcd的裡面 簡單說,在矩形abcd四個邊的同一側,在矩形abcd的裡面,否則...