1. 程式人生 > >3D打印技術之切片引擎(5)

3D打印技術之切片引擎(5)

命也 算法 5.5 2.3 記得 頻繁 奇數 sla 矩陣

【此系列文章基於熔融沈積( fused depostion modeling, FDM )成形工藝】
從這一篇文章開始,就開始說填充。在3D打印切片技術中,填充算法是最核心的部分。3D打印技術的經常使用的指標包含:打印速度,穩固性,柔韌性,逼真度,密度(關系著使用打印材料的多少)。都與填充算法有著直接的關系。能夠說衡量一個切片引擎的優劣主要看它的填充算法是否優越。


事實上我開始研發切片引擎的時候,因為不是全部的模型打印都須要支撐,並且針對邊界的分層技術又比較easy實現,所曾經面的算法開發時間非常短,大部分時間耗在了填充算法的研究上。也就是填充算法的不斷優化使得我的引擎的打印質量不斷的接近於skeinforge。
填充算法是一個世界難題。眼下世界上最先進的填充算法也還是問題多多。怎樣最優化的填充使得模型兼顧穩固逼真,並且密度小,打印速度快。這不是簡單的二維幾何填充所能做的到的。我大學的專業是臨床醫學。記得人體解剖學中提到過的骨小梁結構,事實上才是最合理的填充方式,可是怎樣用數學實現骨小梁。任重而道遠啊。


行,立即進入正題。在這一篇文章裏,我就先說一下填充算法中最簡單的一種——線填充。
首先。須要引用計算機圖形學二維圖形的掃描線填充算法。例如以下圖:
技術分享
簡單的描寫敘述:射線與多邊形相交,與邊界交點個數為奇數。為內點。偶數為外點或者邊界點。可是。還有幾種特殊情況須要特殊處理:每當一條掃描線經過多邊形的一個頂點時,掃描線在該頂點處與多邊形的兩條邊相交,這種情況可能導致在這條掃描線的交點列表上要添加兩個點。

當掃描線與奇數邊相交時,這時候須要把掃描線與兩側的有公共交點的線的交點算作一個交點。

例如以下圖b線:
技術分享
另外。還有邊界線與掃描線重合的情況,須要全然規避掉。
對於最簡單的線填充,掌握這個原理基本就沒有問題了。所須要註意的就是上下兩層不能同一方向的填充,避免打印的模型不穩定,能夠考慮採用依次採用x軸平行的方向和y軸平行的方向。這樣用一組等間距的平行線掃描,採用上述的算法。最簡單的線填充就完畢了。


但這種線填充會引出一個問題,回想一下在第一講中說到的——一個成功的切片引擎應該滿足的幾點,這種填充盡管看似基本滿足要求。但絕大多數情況在這幾點上做的非常不夠,尤其是某一層是個狹長的結構。每一行的掃描線就非常的短,打印機就走走停停,不斷的更換打印方向。打印速度受到極大的影響,更重要的是掃描線對邊界沖擊次數太多。肯定要影響到表面的效果,影響美觀。並且頻繁的走走停停,更換方向,對機器的壽命也是極大的消耗。
能夠考慮這種解決方式,第一步:把某一層的二維圖形切割成若幹個凸集或者近似凸集。第二步,對每個凸集進行主元分析。

第三步,利用得到的主元方向。先把x軸或者y軸變換到與主元平行的方向,這裏如果該線性變換為

M,利用上述的算法進行填充,然後再利用M?1變換回原來的位置。
主元分析是利用協方差矩陣確定邊界向量的主元向量。這裏的點是二維,可簡單表示:
μx=12ni=1n(beginPointxi+endPointxi) 當中beginPointxi為第i個邊界矢量的起始向量的x分量,endPointxi為第i個邊界矢量的結束向量的x分量;y分量以此類推。

以下就開始構造協方差矩陣CC的第j行第k列元素例如以下(1?j,k?2):
Ckj=12n

相關推薦

3D技術切片引擎5

命也 算法 5.5 2.3 記得 頻繁 奇數 sla 矩陣 【此系列文章基於熔融沈積( fused depostion modeling, FDM )成形工藝】 從這一篇文章開始,就開始說填充。在3D打印切片技術中,填充算法是最核心的

3D技術將成為登陸火星計劃的最大助力

科研 信心 發的 作用 發布 面向 及其 羅馬 身體 世界一直對外太空有著強烈的好奇心,多少年來從沒有停息過對外太空的探索。並且隨著人口的壓力、環境汙染的加劇,各方面的壓力使得我們的地球村已不堪重負,移民外太空的計劃更加迫切,而3D打印技術有望成為移民太空的最大助力.   

創客集結號詳談3D技術對創客教育的意義

機構 size 研發 部門 組織 時代 競賽 學習 images 隨著智能時代的發展,許多高新科技投身於創客教育領域,3D打印是熱門的技術之一。3D打印技術作為快速制造領域的一項新生技術,它可以快速、精確地將計設計數據轉化為模型或實物,生產周期短、精度高,現已被廣泛應用在工

3D技術閃耀哈羅北京秋遊會,強勢助力現代國際教育

不同的 吸引 每年 學生 學校 工作 便是 中國 加速 10月13日,以“中國風”為主題的2018哈羅北京秋遊會盛大舉辦,吸引了3000多名北京哈羅英國學校等多家國際學校的學生與家長,另有百余家知名品牌商家參與其中。業內知名的弘瑞3D打印機([www.hori3d.com(

3D技術普及的裏程碑

log 世界 軟件 公司 應用 技術 西安 發出 mark 3D打印是一種快速成型的技術,利用數字建模軟件,通過打印噴嘴把原材料逐層堆積成型,從而實現三維藍圖文件到3D實物的神奇轉變。2D印刷技術和3D打印技術原理基本相同,只是打印材料有所區別,普通打印機使用的材料是墨水和

SSM框架中日誌的和單例模式

targe ssi ffffff append SSM框架 核心 AS per 輸出 一、SSM框架中日誌輸出 1、src根目錄下配置log4j.properties文件 #設置輸出級別和輸出目的地# log4j.rootLogger=info, stdout,logfi

SparkML推薦引擎—— 推薦模型評估

本文內容和程式碼是接著上篇文章來寫的,推薦先看一下哈~ 我們上一篇文章是寫了電影推薦的實現,但是推薦內容是否合理呢,這就需要我們對模型進行評估 針對推薦模型,這裡根據 均方差 和 K值平均準確率 來對模型進行評估,MLlib也對這幾種評估方法都有提供內建的函式 在真

SparkML推薦引擎—— 電影推薦

本文將使用 SparkML 來構建推薦引擎。 推薦引擎演算法大致分為 基於內容的過濾、協同過濾、矩陣分解,本文將使用基於屬於矩陣分解的 最小二乘法 演算法來構建推薦引擎。 對於推薦引擎模組這裡將分為兩篇文章,第一篇文章主要是以實現推薦功能為主,第二篇文章主要是對模型進行評估

docker容器技術儲存卷

上一篇文章連結:docker容器技術之虛擬化網路概述(四) 目錄   一、Docker底層儲存機制介紹 二、儲存卷介紹 2.1、容器內的檔案系統存在的問題 2.2、volume的好處 2.3、volume的種類 三、Docker容器使用volume

docker容器技術私有registry

 上一篇文章:docker容器技術之Dockerfile詳解(六)  目錄 方法一:docker distribution 方法二:Harbor 方法一:docker distribution docker為了能夠

小飛魚通達二開 OA工作流次數統計控制程序圖文

vpd RoCE 使用 多少 -o ado images 行記錄 ima 每個工作流工作打印了多少次了,在OA裏不知道,如何能夠控制呢,今天小飛魚帶給大家的就是這個工作量打印次數統計控制程序,使用起來是不是會方便很多。 可以查詢打印日誌明細。 打印頁面上多了一個打印按鈕和

C#日誌的小技巧

區別 -a lin 累加 length 出了 static lse for https://www.cnblogs.com/jqg-aliang/p/5234206.html 打印日誌的函數 開發中輸出日誌必不可少,在C#中輸出多個不同類型參數的時候,需要連接符累加輸出,很

程序猿的量化交易17--CointraderTemporal實體5

eas 建表 times create bject cloud temp 存儲 時間 轉載須要註明:http://blog.csdn.net/minimicall,http://cloudtrader.top/ 這一小節說明一個時間實體Temporal實體,它的代碼非常

構建法學習5

成員 nbsp 9.png 多少 影響 .cn ges png img 本周學習的是構建之法第五章 團隊和流程 團隊有共同的特點:1. 團隊有一致的集體目標,團隊要一起完成這目標。一個團隊的成員不一定要同時工作,例如接力賽跑。(王屋村搬磚的“非團隊”成員則不然,每個人想搬多

前端與移動開發vue-day45

computed計算屬性的使用 預設只有getter的計算屬性: <div id="app"> <input type="text" v-model="firstName"> + <input type="text" v-model="lastNam

前端與移動開發vue-day25

使用過渡類名HTML結構: <div id="app"> <input type="button" value="動起來" @click="myAnimate"> <!-- 使用 transition 將需要過渡的元素包裹起來 -->

前端與移動開發vue-day15

自定義指令 自定義全域性和區域性的 自定義指令: // 自定義全域性指令 v-focus,為繫結的元素自動獲取焦點: Vue.directive('focus', { inserted: function (el) { // inserted 表示被繫結元素插入父節點時呼叫

Java核心技術--第三章5

控制流程 條件語句+迴圈結構 控制流程 條件語句 迴圈語句 switch語句(判斷多個值) 塊 用 { }括起來的若干條Java語句 塊可巢狀在另一個塊中 public static void main(String[] args)

前端與移動開發vue-day35

watch屬性的使用 考慮一個問題:想要實現 名 和 姓 兩個文字框的內容改變,則全名的文字框中的值也跟著改變;(用以前的知識如何實現???) 監聽data中屬性的改變: <div id="app"> <input type="text" v-mo

高效能網站架構設計快取篇5- Redis 叢集

叢集技術是構建高效能網站架構的重要手段,試想在網站承受高併發訪問壓力的同時,還需要從海量資料中查詢出滿足條件的資料,並快速響應,我們必然想到的是將資料進行切片,把資料根據某種規則放入多個不同的伺服器節點,來降低單節點伺服器的壓力。 上一篇我們講到了 Redis 的主從複製技術,當實現了多節點的 master