Cesium entity畫各種圖(十六)

来源:https://www.cnblogs.com/LJXXXX/archive/2023/02/19/17135716.html
-Advertisement-
Play Games

在官方示例的沙盒裡寫東西是真方便 Cesium中有兩種對象可以添加到場景中,Entity、Primitive。Entity對用戶更友好,方便使用,但是靈活性和性能差一些。Primitive,支持自定義幾何形狀和幾何對象的材質,可以實現更複雜的效果。 1.polygon(面) var square = ...


在官方示例的沙盒裡寫東西是真方便

Cesium中有兩種對象可以添加到場景中,EntityPrimitiveEntity對用戶更友好,方便使用,但是靈活性和性能差一些。Primitive,支持自定義幾何形狀和幾何對象的材質,可以實現更複雜的效果。

1.polygon(面)

      var square = this.viewer.entities.add({
        id:8,
        position:new Cesium.Cartesian3.fromDegrees(103.8621, 30.7065,495),
        polygon:{
            show: true,//是否可見
            hierarchy: Cesium.Cartesian3.fromDegreesArray([
                110.0,
                30.0,
                120.0,
                30.0,
                115.0,
                40.0,
            ]),//多邊形的點坐標
            height: 50000,//相對於橢球的高度,多邊形的高程,單位米
            //即便hierarchy設置了高程,只要perPositionHeight: false(預設),多邊形都會以height作為高程值,預設值為0
            // perPositionHeight: false,//是否使用hierarchy中的高度
            extrudedHeight: 0,//擠出高度,多邊形的外擴高程,預設值為0,當值不為0時,可形成多邊形棱柱,即polygon可用來繪製幾何體
            //這裡不知道為什麼extrudedHeight為0的時候還是有高度,只有將其註釋掉才沒高度
            material: Cesium.Color.CYAN,
            outline: true,//是否顯示輪廓線
            outlineColor: Cesium.Color.RED,//輪廓線顏色
            outlineWidth: 5.0,//輪廓寬度
            closeTop: false,//如果為false,則擠出多邊形的頂部將保持打開狀態
            closeBottom: true,//如果為false,則擠出多邊形的底部將保持打開狀態
            distanceDisplayCondition: new Cesium.DistanceDisplayCondition(100.0)//基於到攝影機的距離確定可見性,在100-2000000米的距離範圍內可見
        },
      })

 

2.polylineVolume(管道)

因為是Cartesian2,所以只能往上下兩個方向擠出,也就決定了不能生成豎直的管道,否則是沒厚度的
const redTube = viewer.entities.add({
  name: "Red tube with rounded corners",
  polylineVolume: {//管道線坐標
    positions: Cesium.Cartesian3.fromDegreesArray([
      -85.0,
      32.0,
      -85.0,
      36.0,
      -89.0,
      36.0,
    ]),
    shape: [//決定如何擠出,也就是管道的形狀
      //因為是Cartesian2,所以只能往上下兩個方向擠出,也就決定了不能生成豎直的管道,否則是沒厚度的
      new Cesium.Cartesian2(-50000, -50000),
      new Cesium.Cartesian2(50000, -50000),
      new Cesium.Cartesian2(50000, 50000),
      new Cesium.Cartesian2(-50000, 50000),
    ],
    material: Cesium.Color.RED.withAlpha(0.5),//材料顏色
    cornerType: Cesium.CornerType.BEVELED,//轉角形狀,預設是圓轉角
    fill:true,//是否中心有材料,也就是是否不是中空
    outline: true,
    outlineColor: Cesium.Color.BLACK,
  },
});

 

 3.polyline(線)

 

function computeCircle(radius) {
  const positions = [];
  for (let i = 0; i < 360; i++) {
    const radians = Cesium.Math.toRadians(i);
    positions.push(
      new Cesium.Cartesian3(
        radius * Math.cos(radians),
        0,
        radius * Math.sin(radians),
      )
    );
  }
  return positions;
}

const line = viewer.entities.add({
  name: "Red tube with rounded corners",
  polyline: {
    positions: computeCircle(10000000),
    wodth:5,
    material:new Cesium.PolylineDashMaterialProperty({//虛線
      color: Cesium.Color.YELLOW,
      dashLength: 20, //短劃線長度pixel
      gapColor:Cesium.Color.TRANSPARENT,//空隙顏色
    
  }),
  }
});
viewer.zoomTo(viewer.entities);

 

4.box(盒子)

const blueBox = viewer.entities.add({
  name: "Blue box",
  position: Cesium.Cartesian3.fromDegrees(-114.0, 40.0, 300000.0),//中心點位置
  box: {
    dimensions: new Cesium.Cartesian3(400000.0, 300000.0, 600000.0),//指定長寬高
    material: Cesium.Color.BLUE,
    outline: true,//是否顯示輪廓線
    fill: true,//是否填充
  },
});

 

 5.Corridor(走廊)

const redCorridor = viewer.entities.add({
  name: "Red corridor on surface with rounded corners",
  corridor: {
    //fromDegreesArrayHeights的高度無效,只能用height屬性
    positions: Cesium.Cartesian3.fromDegreesArray([
      -100.0,
      40.0,
      -105.0,
      40.0,
      -105.0,
      35.0,
    ]),
    height:100000,//高度
    width: 200000.0,//寬度
    extrudedHeight:10000,//擠出高度,也就是通道的高度
    cornerType: Cesium.CornerType.ROUNDED,//轉角樣式
    material: Cesium.Color.RED.withAlpha(0.5),
    heightReference:Cesium.HeightReference.NONE//貼地或是其他
  },
});

 

 

6.cylinder(圓柱,圓錐)

 描述由長度、頂部半徑和底部半徑定義的圓柱體、截頭圓錐體或圓錐體。中心位置和方向由包含實體確定。

const redCorridor = viewer.entities.add({
  name: "Red corridor on surface with rounded corners",
  position: new Cesium.Cartesian3.fromDegrees(119.999, 30, 200),
  cylinder: {
    topRadius:80000,//頂部半徑
    bottomRadius:80000,//底部半徑
    length:100000,//高度
    slices:10,//圓柱體周長周圍的邊數
    numberOfVerticalLines:5,//指定沿輪廓周長繪製的垂直線的數量
    material: Cesium.Color.RED.withAlpha(0.5),
    heightReference:Cesium.HeightReference.RELATIVE_TO_GROUND,//貼地或是其他
    outline:true,//是否顯示輪廓
    outlineColor:Cesium.Color.BLUE,
    outlineWidth:100,
  },
});

 

 

 

 

持續更新中

 
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 其他章節請看: react 高效高質量搭建後臺系統 系列 尾篇 本篇主要介紹表單查詢、表單驗證、通知(WebSocket)、自動構建。最後附上 myspug 項目源碼。 項目最終效果: 表單查詢 需求:給角色管理頁面增加表格查詢功能,通過輸入角色名稱,點擊查詢,從後端檢索出相應的數據。 效果如下: ...
  • 前言 以往零零散散使用過一些Vue的語法,最近才剛剛系統接觸Vue,現在是剛剛入門的狀態,故在這裡做一個記錄和梳理,歡迎大家一起學習交流,有錯誤的地方也歡迎大家指正。 正篇 夢開始的地方 在寫之前我想先在這裡貼出Vue的一個官方的(應該是)學習教學https://cn.vuejs.org/guide ...
  • 好家伙,我回來了, 本篇為《JS高級程式設計》第十四章“DOM編程”學習筆記 1.DOM編程 我們知道DOM是HTML文檔的編程介面, 我們可以通過HTML代碼實現DOM操作, 也同樣能夠通過JavaScript實現DOM操作。 2.JS操作DOM 我們來簡單的舉個例子: 隨便開一個空白的html頁 ...
  • 問題:後端返回的失敗 blob 數據流, 前端如何捕獲展示 業務需求,需要後端控制文件下載頻率,用戶在短時間內不可以重覆下載文件,並返回消息提示 (剩餘 XX 秒)。前端需要把返回數據msg消息展示彈出 數據在瀏覽器的響應里可以看到 但是在列印的 res 中卻找不到對應的msg,也就沒有辦法將對應內 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 HTML頁面載入過程會發生什麼?因為瀏覽器網路拉取資源是多線程的,但是dom樹的操作都是在一個線程中的,所以網頁資源的解析、js載入、dom樹渲染都是一個線程執行,所以就會線程任務就會相互搶占,先來先執行。而當瀏覽器載入html文件時,會 ...
  • JavaScript數組方法大全 趁著有時間,總結了下數組所有的屬性和方法,記錄博客,便於後續使用 at() at方法,用於獲取數組中,對應索引位置的值,不能修改。 語法:array.at(count); 參數:count,數組的索引值 返回值:返回該索引在數組中對應的值,如果count大於等於數組 ...
  • RegExp() 在es5中,RegExp的構造函數參數有兩種情況 1、字元串 2、正則表達式 // 第一種情況 let regex = new RegExp('abc', 'i') // 第二種情況 let regex2 = /abc/i 這兩種情況是等價的 let s = 'abc' regex ...
  • 在 HTML 中引入 JavaScript 文件時,可以使用 defer 屬性,該屬性可以推遲(defer)腳本的執行,即等到整個 HTML 文檔解析完畢後才執行腳本。 使用 defer 屬性可以避免在解析 HTML 文檔的過程中阻塞頁面的渲染,提高頁面載入的速度。 同時,defer 屬性還可以確保 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...