国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Qt開發(fā)技術(shù):Q3D圖表開發(fā)筆記(三):Q3DSurface三維曲面圖介紹、Demo以及代碼詳解

這篇具有很好參考價值的文章主要介紹了Qt開發(fā)技術(shù):Q3D圖表開發(fā)筆記(三):Q3DSurface三維曲面圖介紹、Demo以及代碼詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

??qt提供了q3d進(jìn)行三維開發(fā),雖然這個框架沒有得到大量運(yùn)用也不是那么成功,性能上也有很大的欠缺,但是普通的點到為止的應(yīng)用展示還是可以的。
??其中就包括華麗絢爛的三維圖表,數(shù)據(jù)量不大的時候是可以使用的。
??前面介紹了基礎(chǔ)的q3d散點圖、柱狀圖,本篇介紹基礎(chǔ)的三維曲面圖。

?

Demo:Q3DSurface散點圖演示效果

??Qt開發(fā)技術(shù):Q3D圖表開發(fā)筆記(三):Q3DSurface三維曲面圖介紹、Demo以及代碼詳解
??Qt開發(fā)技術(shù):Q3D圖表開發(fā)筆記(三):Q3DSurface三維曲面圖介紹、Demo以及代碼詳解
??Qt開發(fā)技術(shù):Q3D圖表開發(fā)筆記(三):Q3DSurface三維曲面圖介紹、Demo以及代碼詳解

?

Q3D提供的三維圖表

??依賴QtDataVisualization。在安裝qt的時候要選擇安裝QtDataVisualization模塊。

Q3DScatter散點圖

??Q3D的散點圖,性能大約支撐1000個點可以不卡頓,具體依賴pc,1000個點是什么 概念,可以理解為:10x10x10的區(qū)域,每個區(qū)域一個數(shù)據(jù)點。
??Qt開發(fā)技術(shù):Q3D圖表開發(fā)筆記(三):Q3DSurface三維曲面圖介紹、Demo以及代碼詳解

Q3DBars柱狀圖

??Q3D的柱狀圖,性能跟散點圖類似。
???Qt開發(fā)技術(shù):Q3D圖表開發(fā)筆記(三):Q3DSurface三維曲面圖介紹、Demo以及代碼詳解

Q3DSurface平面凹凸圖,平面紋理圖,平面曲線圖

??Q3D的柱狀圖,性能跟散點圖類似。
??Qt開發(fā)技術(shù):Q3D圖表開發(fā)筆記(三):Q3DSurface三維曲面圖介紹、Demo以及代碼詳解

?

Q3DSurface平面曲線圖

簡介

??Q3DSurface類提供了渲染3D曲面圖的方法。該類使開發(fā)人員能夠渲染3D表面圖,并通過自由旋轉(zhuǎn)場景來查看它們??梢酝ㄟ^QSurface3DSeries控制曲面的視覺財產(chǎn),例如繪制模式和著色。
??Q3DSurface通過在用戶用鼠標(biāo)左鍵點擊的數(shù)據(jù)點上顯示高亮顯示的球(當(dāng)使用默認(rèn)輸入處理程序時)或通過QSurface3DSeries進(jìn)行選擇來支持選擇。選擇指針附帶一個標(biāo)簽,在默認(rèn)情況下,該標(biāo)簽顯示數(shù)據(jù)點的值和點的坐標(biāo)。
軸上顯示的值范圍和標(biāo)簽格式可以通過QValue3DAxis進(jìn)行控制。
??要旋轉(zhuǎn)圖形,請按住鼠標(biāo)右鍵并移動鼠標(biāo)。縮放是使用鼠標(biāo)滾輪完成的。兩者都假設(shè)默認(rèn)的輸入處理程序正在使用中。
??如果沒有將任何軸明確設(shè)置為Q3DSurface,則會創(chuàng)建不帶標(biāo)簽的臨時默認(rèn)軸。這些默認(rèn)軸可以通過軸訪問器進(jìn)行修改,但只要明確設(shè)置了方向的任何軸,該方向的默認(rèn)軸就會被破壞。

構(gòu)造最小Q3D平面曲線圖

??首先,構(gòu)造Q3D曲面。由于在本例中,我們將圖形作為頂級窗口運(yùn)行,因此需要清除Qt::FramelessWindowHint標(biāo)志,該標(biāo)志在默認(rèn)情況下設(shè)置:

Q3DSurface surface; 
surface.setFlags(surface.flags() ^ Qt::FramelessWindowHint);

??現(xiàn)在Q3DSurface已準(zhǔn)備好接收要渲染的數(shù)據(jù)。創(chuàng)建數(shù)據(jù)元素以接收值:

QSurfaceDataArray *data = new QSurfaceDataArray;
QSurfaceDataRow *dataRow1 = new QSurfaceDataRow;
QSurfaceDataRow *dataRow2 = new QSurfaceDataRow;

??首先將數(shù)據(jù)喂給行元素,然后將它們的指針添加到數(shù)據(jù)元素:

*dataRow1 << QVector3D(0.0f, 0.1f, 0.5f) << QVector3D(1.0f, 0.5f, 0.5f);
*dataRow2 << QVector3D(0.0f, 1.8f, 1.0f) << QVector3D(1.0f, 1.2f, 1.0f);
*data << dataRow1 << dataRow2;、

??創(chuàng)建新系列并為其設(shè)置數(shù)據(jù):

QSurface3DSeries *series = new QSurface3DSeries;
series->dataProxy()->resetArray(data);   
surface.addSeries(series);

??最后,設(shè)置為可見:

surface.show();

??創(chuàng)建和顯示此圖所需的完整代碼為:

#include <QtDataVisualization>
using namespace QtDataVisualization;
int main(int argc, char **argv)
{
    QGuiApplication app(argc, argv);

    Q3DSurface surface;
    surface.setFlags(surface.flags() ^ Qt::FramelessWindowHint);
    QSurfaceDataArray *data = new QSurfaceDataArray;
    QSurfaceDataRow *dataRow1 = new QSurfaceDataRow;
    QSurfaceDataRow *dataRow2 = new QSurfaceDataRow;

    *dataRow1 << QVector3D(0.0f, 0.1f, 0.5f) << QVector3D(1.0f, 0.5f, 0.5f);
    *dataRow2 << QVector3D(0.0f, 1.8f, 1.0f) << QVector3D(1.0f, 1.2f, 1.0f);
    *data << dataRow1 << dataRow2;

    QSurface3DSeries *series = new QSurface3DSeries;
    series->dataProxy()->resetArray(data);
    surface.addSeries(series);
    surface.show();

    return app.exec();
}

??運(yùn)行效果:
??Qt開發(fā)技術(shù):Q3D圖表開發(fā)筆記(三):Q3DSurface三維曲面圖介紹、Demo以及代碼詳解

??場景可以被旋轉(zhuǎn)、放大,并且可以選擇一個項目來查看其位置,但在這個最小的代碼示例中不包括其他交互。

?

Q3Ddemo構(gòu)建流程解析

步驟一:確認(rèn)安裝QtDataVisualization模塊

??如何確認(rèn),則是在幫助文件中查看是否有Q3dscatter類。一般是安裝了模塊才會有對應(yīng)的幫助文件。沒有則重新安裝qt或者單獨安裝該模塊。
??Qt開發(fā)技術(shù):Q3D圖表開發(fā)筆記(三):Q3DSurface三維曲面圖介紹、Demo以及代碼詳解

步驟二:工程配置文件中加入模塊

??Q3d是在數(shù)據(jù)可視化模塊中,需要在pro或者pri配置文件中添加。

QT += datavisualization

??Qt開發(fā)技術(shù):Q3D圖表開發(fā)筆記(三):Q3DSurface三維曲面圖介紹、Demo以及代碼詳解

步驟三:添加使用到的頭文件

??使用到Q3DBar相關(guān)類中添加頭文件,主要使用到Q3DBar、QBar3DSeries、QBarDataRow等等。

#include <Q3DBars>
#include <Q3DTheme>
#include <QBar3DSeries>
#include <QVector3D>

??Qt開發(fā)技術(shù):Q3D圖表開發(fā)筆記(三):Q3DSurface三維曲面圖介紹、Demo以及代碼詳解

步驟四:添加命名空間

??這時候還是無法使用對應(yīng)的類,需要添加命名空間才行:

using namespace QtDataVisualization;

??Qt開發(fā)技術(shù):Q3D圖表開發(fā)筆記(三):Q3DSurface三維曲面圖介紹、Demo以及代碼詳解

步驟五:Q3D的圖標(biāo)基礎(chǔ)構(gòu)建框架

??下面是包含注釋的Q3DSurface基礎(chǔ)構(gòu)建流程(注意軸的顯示,查看末尾“入坑一”,注意數(shù)據(jù)的成面規(guī)則,查看“入坑二”文章來源地址http://www.zghlxwxcb.cn/news/detail-419353.html

_pQ3DSurface = new Q3DSurface();
_pContainer = QWidget::createWindowContainer(_pQ3DSurface, this);
// 設(shè)置軸文本
{
    // 注意笛卡爾坐標(biāo)
    _pQ3DSurface->axisX()->setTitle("經(jīng)度(°)");
    _pQ3DSurface->axisX()->setTitleVisible(true);
    _pQ3DSurface->axisY()->setTitle("高度(m)");
    _pQ3DSurface->axisY()->setTitleVisible(true);
    _pQ3DSurface->axisZ()->setTitle("緯度(°)");
    _pQ3DSurface->axisZ()->setTitleVisible(true);
}
// 設(shè)置軸范圍
{
    // 注意笛卡爾坐標(biāo)
    _pQ3DSurface->axisX()->setRange(0, 359);
    _pQ3DSurface->axisY()->setRange(0, 100);
    _pQ3DSurface->axisZ()->setRange(0, 359);
}

// 生成一個曲線
_pSurface3DSeries = new QSurface3DSeries(_pQ3DSurface);
// 設(shè)置渲染平滑
_pSurface3DSeries->setMeshSmooth(true);
// 設(shè)置渲染模式
//   DrawWireframe           : 繪制柵格
//   DrawSurface             : 繪制表面
//   DrawSurfaceAndWireframe : 繪制柵格和圖表面
_pSurface3DSeries->setDrawMode(QSurface3DSeries::DrawSurface);

// 視圖添加該曲線
_pQ3DSurface->addSeries(_pSurface3DSeries);
// 設(shè)置陰影質(zhì)量
_pQ3DSurface->setShadowQuality(QAbstract3DGraph::ShadowQualitySoftLow);
// 設(shè)置視角
_pQ3DSurface->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetIsometricLeft);
// 設(shè)置子網(wǎng)格
_pQ3DSurface->activeTheme()->setGridEnabled(true);

#if 1
// 添加模擬數(shù)據(jù)
QSurfaceDataArray *pSurfaceDataArray = new QSurfaceDataArray;
#if 1

#if 1
// 這是 z 緯度
for(int n = 0; n < 360; n++)
{
    QSurfaceDataRow *pSurfaceDataRow  = new QSurfaceDataRow;
    // 這是 x 經(jīng)度
    for(int m = 0; m < 360; m++)
    {
       // 注意與笛卡爾坐標(biāo)進(jìn)行映射
       *pSurfaceDataRow << QVector3D(m, n / 7 + m / 7

到了這里,關(guān)于Qt開發(fā)技術(shù):Q3D圖表開發(fā)筆記(三):Q3DSurface三維曲面圖介紹、Demo以及代碼詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Three.js--》前端開發(fā)者掌握3d技術(shù)不再是夢,初識threejs

    Three.js--》前端開發(fā)者掌握3d技術(shù)不再是夢,初識threejs

    ????????這十年來 web 得到了快速的發(fā)展,隨著 webgl 的普及,網(wǎng)頁的表現(xiàn)能力越來越強(qiáng)大,網(wǎng)頁上已經(jīng)開始可以做出很多復(fù)雜的動畫和精美的效果,還可以通過 webgl 在網(wǎng)頁中繪制高性能的3d圖形,別的不說,凡是入門程序員都離不開github這個網(wǎng)站,細(xì)心的人都會發(fā)現(xiàn),gi

    2024年02月01日
    瀏覽(98)
  • 短視頻矩陣營銷系統(tǒng)技術(shù)開發(fā)者開發(fā)筆記分享

    短視頻矩陣營銷系統(tǒng)技術(shù)開發(fā)者開發(fā)筆記分享

    1. 確定系統(tǒng)需求:根據(jù)客戶的需求,確定系統(tǒng)的功能和特點,例如用戶注冊登錄、視頻上傳、視頻瀏覽、評論點贊等。 2. 設(shè)計系統(tǒng)架構(gòu):根據(jù)系統(tǒng)需求,設(shè)計系統(tǒng)的整體架構(gòu),包括前端、后端、數(shù)據(jù)庫等組件的功能和交互方式。 3. 選擇技術(shù)棧:根據(jù)系統(tǒng)的特點和需求,選擇

    2024年02月14日
    瀏覽(25)
  • 【云開發(fā)筆記NO.25】緩存和技術(shù)中臺

    在云開發(fā)領(lǐng)域中,緩存技術(shù)是一項至關(guān)重要的技術(shù),它具有多個特征和廣泛的應(yīng)用。緩存技術(shù)的核心原理是將經(jīng)常訪問或需要快速響應(yīng)的數(shù)據(jù)存儲在更接近用戶或請求源的地方,以便能夠更快地提供這些數(shù)據(jù),減少對原始數(shù)據(jù)源(如數(shù)據(jù)庫或遠(yuǎn)程服務(wù)器)的頻繁訪問。 緩存技

    2024年04月14日
    瀏覽(20)
  • 【云開發(fā)筆記NO.22】運(yùn)用云原生產(chǎn)品打造技術(shù)中臺

    云原生產(chǎn)品以其容器化、微服務(wù)化、自動化等特性,為技術(shù)中臺的建設(shè)提供了強(qiáng)大的技術(shù)支持。容器化技術(shù)使得應(yīng)用可以更容易地進(jìn)行部署和管理,提高了應(yīng)用的可移植性和彈性。微服務(wù)架構(gòu)則讓應(yīng)用更加模塊化,便于獨立擴(kuò)展和維護(hù)。自動化工具則能夠大大提升開發(fā)和運(yùn)維

    2024年04月08日
    瀏覽(22)
  • 國民技術(shù)N32G430C8開發(fā)筆記二-UART驅(qū)動開發(fā)

    國民技術(shù)N32G430C8開發(fā)筆記二-UART驅(qū)動開發(fā)

    參考demo E:tfsdatasmartsafeN32G430Nations.N32G430_Library.1.0.0projectsn32g430_EVALexamplesUSARTInterrupt開發(fā)uart1和uart3驅(qū)動。Uart1用于通信,uart3用于調(diào)試。 參考用戶手冊5.2.5復(fù)用功能。Uart1_tx引腳使用PA9,重映射使用AF5,Uart1_rx引腳使用PA10,重映射使用AF5,Uart3_tx引腳使用PB10,重映射使用

    2024年01月25日
    瀏覽(22)
  • 國民技術(shù)N32G430開發(fā)筆記(9)- IAP升級 Bootloader的制作

    國民技術(shù)N32G430開發(fā)筆記(9)- IAP升級 Bootloader的制作

    1、上節(jié)提到Flash的分區(qū),0x8000000-0x8004000為Boot分區(qū),我們的bootloader就燒錄到此分區(qū)。 Bootloader很簡單,新建一個普通的工程, 也不用初始化外部設(shè)備,開機(jī)后,直接跳轉(zhuǎn)到 App分區(qū)所在的地址即可, 當(dāng)然App的分區(qū)程序也要提前燒錄進(jìn)去, 否則也是跳不過去的。 代碼 開機(jī)延時

    2024年02月02日
    瀏覽(51)
  • 國民技術(shù)N32G430開發(fā)筆記(12)- IAP升級 Settings區(qū)域數(shù)據(jù)初始化

    國民技術(shù)N32G430開發(fā)筆記(12)- IAP升級 Settings區(qū)域數(shù)據(jù)初始化

    1、假如,有兩個產(chǎn)品,A產(chǎn)品跟B產(chǎn)品,硬件都一樣,要求一個軟件里的board_name為N32G430C8L7_STB_A,另一個軟件里的board_name為N32G430C8L7_STB_B。 那我們?nèi)绾卧诓桓腷oot程序跟App程序的基礎(chǔ)上,快速的使兩個軟件看上去不同呢? 這里我們將setting區(qū)域的數(shù)據(jù)提前初始化,通過c語言的文

    2024年02月01日
    瀏覽(27)
  • 國民技術(shù)N32G430開發(fā)筆記(18)- I2C1 從機(jī)收發(fā)數(shù)據(jù)

    國民技術(shù)N32G430開發(fā)筆記(18)- I2C1 從機(jī)收發(fā)數(shù)據(jù)

    1、將PB6 PB7設(shè)置為i2c從機(jī),跟android板卡通訊。 2、Android發(fā)送 寫命令: 0x05 0x02 0x00 0x00 checksum n32將收到的命令打印出來 讀版本命令: 0x01 0x02 0x00 0x00 checksum n32將app_version返回電視端 3、i2c從機(jī)配置,采用中斷方式收發(fā)數(shù)據(jù)。 主要代碼: 從機(jī)配置代碼: 中斷處理函數(shù): 接收到數(shù)

    2024年02月03日
    瀏覽(27)
  • JavaWeb小項目——【源碼】使用Vue+axios+Servlet+Lombok+JDBC+MySQL技術(shù)棧實現(xiàn)云筆記管理系統(tǒng)案例的開發(fā)

    JavaWeb小項目——【源碼】使用Vue+axios+Servlet+Lombok+JDBC+MySQL技術(shù)棧實現(xiàn)云筆記管理系統(tǒng)案例的開發(fā)

    使用Vue+axios+Servlet+Lombok+JDBC+MySQL技術(shù)棧實現(xiàn)云筆記管理系統(tǒng)案例的開發(fā) (一)題目要求 使用Vue+axios+Servlet+Lombok+JDBC+MySQL技術(shù)棧實現(xiàn)云筆記管理系統(tǒng)案例的開發(fā) (二)數(shù)據(jù)庫設(shè)計(10分) 創(chuàng)建數(shù)據(jù)庫woniu_note (1)用戶表:t_user,必要字段包含:用戶名(username)、密碼(passwd)

    2024年02月09日
    瀏覽(23)
  • 嵌入式培訓(xùn)機(jī)構(gòu)四個月實訓(xùn)課程筆記(完整版)-Linux ARM驅(qū)動編程第三天-ARM Linux ADC和觸摸屏開發(fā) (物聯(lián)技術(shù)666)

    嵌入式培訓(xùn)機(jī)構(gòu)四個月實訓(xùn)課程筆記(完整版)-Linux ARM驅(qū)動編程第三天-ARM Linux ADC和觸摸屏開發(fā) (物聯(lián)技術(shù)666)

    鏈接:https://pan.baidu.com/s/1V0E9IHSoLbpiWJsncmFgdA?pwd=1688 提取碼:1688 ? 教學(xué)內(nèi)容: 1 、 ADC S3C2440 的 A/D 轉(zhuǎn)換器包含一個 8 通道的模擬輸入轉(zhuǎn)換器,可以將模擬輸入信號轉(zhuǎn)換成 10 位數(shù)字編碼。 在 A/D 轉(zhuǎn)換時鐘頻率為 2.5MHz 時,其最大轉(zhuǎn)換率為 500KSPS ( 5 個時鐘周期完成一次轉(zhuǎn)換) 輸

    2024年02月20日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包