資源簡介
使用Qt實現(xiàn)的delaunay三角分割的可視化,直接下載解壓點擊.pro文件打開就可以直接運行。Qt版本:5.11.2,Qt creator版本:4.7.1

代碼片段和文件信息
#include?“coordinatesystem.h“
#include?
#include?
#include?
#include?
#include?
#include?
CoordinateSystem::CoordinateSystem(QWidget?*parent)?:?QWidget(parent)
{
????init();
}
void?CoordinateSystem::init()
{
????pixmap?=?QPixmap(600?600);
????pixmap.fill();
????uav?=?0;
????ban?=?0;
????points.clear();
????get?=?false;
????had?=?0;
????exec?=?false;
}
void?CoordinateSystem::mouseMoveEvent(QMouseEvent?*event)
{
????QPoint?cur(event->pos());
????//qDebug()?<“CoordinateSystem::mouseMoveEvent(QMouseEvent?*):?“?<????emit?sendMousePoint(cur);
}
void?CoordinateSystem::mousePressEvent(QMouseEvent?*event)
{
????//qDebug()?<0;
????if(event->button()?==?Qt::LeftButton)
????{
????????//qDebug()?<1;
????????QPoint?cur(event->pos());
????????//qDebug()?<“CoordinateSystem::mousePressEvent(QMouseEvent?*event):?“?<????????if(!get?||?had?==?uav?+?ban)
????????????return;
????????//qDebug()?<2;
????????auto?iter?=?find_if(points.begin()?points.end()?[cur](const?QPoint?&p){return?p?==?cur;});
????????if(iter?!=?points.end())
????????????return;
????????//qDebug()?<3;
????????had?+=?1;
????????points.push_back(cur);
????????//update();
????????//for(auto?p?:?points)
????????//qDebug()?<“CoordinateSystem::mousePressEvent(QMouseEvent?*event):?“?<“vector?“?<????????update();
????}
}
void?CoordinateSystem::receiveGetFromParent(std::pair?ub)
{
????init();
????uav?=?ub.first;
????ban?=?ub.second;
????get?=?true;
}
void?CoordinateSystem::paintEvent(QPaintEvent?*event)
{
????Q_UNUSED(event);
????//qDebug()?<0;
????if(had?==?0)
????????return;
????//qDebug()?<1;
????QPainter?painter;
????//畫點
????if(had?<=?uav?+?ban)
????{
????????//qDebug()?<2;
????????QPen?pen(Qt::green?12?Qt::SolidLine?Qt::SquareCap?Qt::BevelJoin);
????????if(had?>?uav)
????????????pen.setBrush(Qt::red);
????????QPoint?cur?=?points.back();
????????painter.begin(&pixmap);
????????painter.setPen(pen);
????????painter.drawPoint(cur);
????????//painter.drawPO
????????painter.end();
????}
????//三角分割
????if(exec?&&?had?==?uav?+?ban)
????{
????????std::sort(points.begin()?points.end()?[](const?QPoint?&p1?const?QPoint?&p2){return?p1.x()?????????QPen?pen(Qt::black?5?Qt::SolidLine?Qt::SquareCap?Qt::BevelJoin);
????????del.setPoints(points);
????????auto?tris?=?del.run();
????????painter.begin(&pixmap);
????????painter.setPen(pen);
????????for(auto?tri?:?tris)
????????{
????????????QPoint?v1?=?points[tri.v1]?v2?=?points[tri.v2]?v3?=?points[tri.v3];
????????????painter.drawLine(v1?v2);
????????????painter.drawLine(v2?v3);
????????????painter.drawLine(v3?v1);
????????}
????????painter.end();
????}
????painter.begin(this);
????painter.drawPixmap(0?0?600?600?pixmap?0?0?600?600);
????painter.end();
}
void?CoordinateSystem::receiveExcuteFromParent()
{
????if(had?????????return;
????if(exec)
????????return;
????exec?=?true;
????//qDebug()?<0;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-12-13?22:27??triangulate\
?????文件????????2644??2018-12-13?14:59??triangulate\widget.cpp
?????文件?????????634??2018-12-13?10:51??triangulate\widget.h
?????文件????????1604??2018-12-12?22:37??triangulate\widget.ui
?????文件?????????536??2018-12-13?19:11??triangulate\delaunary.h
?????文件???????24400??2018-12-13?21:28??triangulate\triangulate.pro.user
?????文件????????5452??2018-12-13?19:25??triangulate\delaunary.cpp
?????文件????????1286??2018-12-13?15:33??triangulate\triangulate.pro
?????目錄???????????0??2018-12-13?22:32??__MACOSX\
?????目錄???????????0??2018-12-13?22:32??__MACOSX\triangulate\
?????文件?????????176??2018-12-13?15:33??__MACOSX\triangulate\._triangulate.pro
?????文件?????????870??2018-12-13?14:49??triangulate\coordinatesystem.h
?????目錄???????????0??2018-12-13?22:31??triangulate\.git\
?????文件?????????316??2018-12-13?22:31??triangulate\.git\config
?????目錄???????????0??2018-12-13?22:30??triangulate\.git\ob
?????目錄???????????0??2018-12-13?22:30??triangulate\.git\ob
?????文件?????????330??2018-12-13?22:30??triangulate\.git\ob
?????目錄???????????0??2018-12-13?22:27??triangulate\.git\ob
?????目錄???????????0??2018-12-13?22:27??triangulate\.git\ob
?????文件?????????354??2018-12-13?22:27??triangulate\.git\ob
?????目錄???????????0??2018-12-13?22:27??triangulate\.git\ob
?????目錄???????????0??2018-12-13?22:27??triangulate\.git\ob
?????文件????????1891??2018-12-13?22:27??triangulate\.git\ob
?????目錄???????????0??2018-12-13?22:27??triangulate\.git\ob
?????文件?????????136??2018-12-13?22:27??triangulate\.git\ob
?????目錄???????????0??2018-12-13?22:27??triangulate\.git\ob
?????文件?????????504??2018-12-13?22:27??triangulate\.git\ob
?????目錄???????????0??2018-12-13?22:27??triangulate\.git\ob
?????文件?????????949??2018-12-13?22:27??triangulate\.git\ob
?????目錄???????????0??2018-12-13?22:30??triangulate\.git\ob
?????文件?????????144??2018-12-13?22:30??triangulate\.git\ob
............此處省略45個文件信息
評論
共有 條評論