編程橫越
Ⅰ java3d的詳細介紹
引言
Java3DAPI是用來開發三維圖形和開發基於Web的3D應用程序(applet)的編程介面.用於開發三維圖形軟體的3DAPI(OpenGL、Direct3D)都是基於攝像機模型的思想,即通過調整攝像機的參數來控制場景中的顯示對象,而Java3D則提出了一種新的基於視平台的視模型和輸入設備模型的技術實現方案,即通過改變視平台的位置、方向來瀏覽整個虛擬場景.它不僅提供了建造和操作三維幾何物體的高層構造函數,而且利用這些構造函數還可以建造復雜程度各異的虛擬場景,這些虛擬場景大到宇宙天體,小到微觀粒子.
Java3D是JavaMediaAPIs中的一部分,可廣泛地應用於各種平台,而且用Java3DAPI開發的應用程序和基於Web的3D小應用程序(applet),還可以訪問整個Java類,且可以與Internet很好地集成,即如果在瀏覽器中安裝了Java3D的瀏覽插件,在網上也可瀏覽Java3D所創建的虛擬場景.Java3DAPI還汲取了已有圖形APIs的優點,即Java3D的底層圖形構造函數不僅綜合了底層APIs(Direcrt3D、OpenGL)最好的繪制思想,而且它的高層圖形繪制還綜合了基於場景圖的思想,同時,它又引入了一些通用的圖形環境所未考慮的新概念(如3D立體聲),這樣將有助於提高用戶在虛擬場景的沉浸感.本文將著重介紹Java3D針對VR應用所提出的基於視模型和輸入設備模型的新思想,在此基礎上又討論了如何利用Java3D來開發VR應用程序及其實現方法,並設計實現了一個應用實例.
1.適於VR應用開發的Java3DAPI眾所周知,開發VR應用程序是一件很繁瑣的工作,其開發人員必須編寫應用程序可能遇到的各種輸入和顯示設備的介面程序,或者依賴專為VR應用開發而設計的應用程序編程介面(API),且典型的VR應用必須跟蹤用戶的頭部位置和方向,以生成與頭部位置方向相一致的虛擬場景圖.
另外,還需要先跟蹤身體的其它部位(手、臂或腿部),然後通過身體各部位在虛擬場景中的虛擬視點與場景中的對象進行交互,而應用程序也必須具有能夠利用跟蹤輸入設備在視點內放置物體,並標明其在生成的三維圖象中的位置和方向的功能.同時,面向VR的應用程序開發介面(API)必須能支持3D圖形生成、處理跟蹤器的輸入,並能將跟蹤信息反饋到圖形繪制中.
Java3DAPI可自動將頭部跟蹤器的輸入集成到圖形生成中,並具有通過訪問其它跟蹤器信息來控制其它特徵的功能,但它是通過一種新的視模型(viewmodel)技術來實現的.該視模型是將用戶真實的物質環境與計算機生成的虛擬環境相互獨立,並建立它們之間的通信橋梁.該API也明確定義了用來探測Java3D物體六自由度(6DOF)感測器的返回值,並將其應用於顯示場景圖中.總之,這種新的視模型和輸入設備模型可以很方便地將互動式的3D圖形應用程序轉化為VR應用程序.
Java3D視模型
2.1新的視模型概念(viewmodel)基於攝像機的視模型是模仿虛擬環境中的攝像機,而不是虛擬環境中人的「替身」,而且它是通過控制攝像機與視點的相關參數來控制所顯示的場景,但這種方法,在用戶物質環境確定某些視參數的系統中是不合理的,例如在頭盔顯示器(HMD)系統中,HMD的光學性能就直接確定了應用程序所顯示的視域.由於不同的HMD有不同的光學特性,因此如果允許終端用戶隨意改變光學參數顯然是不合理的.這里視參數的值將隨終端用戶物質環境的不同而不同,而影響視參數的主要因素有顯示器大小、顯示器的位置(戴在頭上,還是放在桌子上)、三維空間中用戶的頭部位置、頭盔顯示器的實際顯示視域、每英寸的顯示象素等.由於Java3D的視模型直接提供了頭部跟蹤的功能,因而使用戶產生了真實存在於虛擬環境中的錯覺.
Java3D不僅提出了新的基於視平台的視模型概念,同時將其推廣到包括顯示設備和6DOF外圍輸入設備(如頭部跟蹤器等)的介面支持中,而且新的視模型繼承了Java的「writeonce,vieweverywhere」本質.這意味著由Java3D視模型開發的應用程序或applet可廣泛地應用於各種顯示環境.這種顯示環境可以是標準的計算機顯示屏、多元顯示空間,也可以是頭盔顯示器.Java3D視模型是通過將虛擬環境和物質環境完全獨立的方式來實現上述功能的,且該視模型可將虛擬環境中視平台的位置、方向和大小,與Java3D繪制的與視平台位置、方向相一致的虛擬場景相區分.一般應用程序控制視平台的位置和方向,而繪制著色系統則依據終端用戶的物質環境以及用戶在物質環境中的位置和方向來確定顯示場景.
2.2視模型的組成
Java3D視模型由虛擬環境和物質環境兩部分組成,其中,虛擬環境由ViewPlatform對象來表示,它是虛擬對象存在的空間;而物質環境則由View對象以及和它相關的對象來表示.這里,View對象和它的相關對象就描述了用戶所處的顯示和操縱輸入設備環境.雖然視模型將虛擬環境和物質環境相互獨立,但可通過一一對應關系來建立兩種世界之間相互通信的橋梁,這樣將使得終端用戶的行為會影響虛擬環境中的對象,同時虛擬環境中的對象行為也會影響終端用戶的視點.
Java3D可通過幾個對象來定義視模型參數.這些對象包括View對象及其相關對象、PhysicalBody對象、Canvas3D對象、PhysicalEnvironment對象、Screen3D對象.視模型相關的對象(如圖1所示)其作用如下:ViewPlatform用來標志場景圖中視點位置的節點.其父節點則指明了視平台在虛擬環境中的位置、方向和大小.View用於指定需要處理場景圖的信息.Canvas3D定義了Java3D繪制圖象的窗口,它提供了Canvas3D在Screen3D對象中的大小、形狀和位置信息.Screen3D用於描述顯示屏幕的物理屬性.PhysicalBody用於封裝那些與物質體相關的參視模型的組成及其相互關系數(如左、右眼的位置等).PhysicalEnvironment用於封裝那些與物質體環境相關的參數(如,用於頭狀物體或頭盔式跟蹤器的校驗信息).
2.3虛擬環境中的視平台(ViewPlatform)
鑒於視平台定義了一坐標系統,於是虛擬環境中的原始點和參考點就有了一參考坐標系.這里視平台代表與視對象相關的一個點,並充當確定繪制圖象的基礎.圖2顯示了包括視平台節點場景圖的一部分.由圖2可見,視平台的父節點確定了視平台在虛擬環境中的位置和方向.若通過修改與TransformGroup節點相關的Transform3D對象,就可以在虛擬場景中隨意移動視平台.雖然虛擬環境中可以有許多不同的視平台,但特定的視對象只能與一個視平台相關聯,於是在Canvas3D對象中所繪制的場景均來自於一個視平台的視點.這樣應用程序就可通過修改視平台的TransformGroup節點,在虛擬環境中漫遊.圖2包括視平台的局部場景圖3Java3D的輸入設備模型Java3D除了支持通用的鍵盤、滑鼠輸入外,還能給各種不間斷的輸入設備,如6DOF跟蹤設備和操縱桿提供支持.由於不同的跟蹤輸入設備其工作原理不同,因而計算機與其交互的方式也不同.為了給不同的6DOF輸入設備提供支持,Java3D還提供了一個輸入設備介面,而且該輸入設備介面還定義了一個抽象的輸入設備,雖然用其可以實現對一特定設備的驅動,但輸入設備介面的實現必須實現介面所定義的所有方法(如設備開、關、讀取操作、狀態設置及查詢等).Java3D的輸入設備列表就用這些方法同特定的設備進行交互.
一般Java3D環境中,可能包括許多輸入設備,而且這些輸入設備不一定是實際的物理設備,也可能是虛擬設備,例如通過軟體的方法將滑鼠的運動參數轉化為6DOF虛擬跟蹤球的參數,來模擬虛擬跟蹤球的輸入.由於所有的輸入設備都由許多感測器對象組成,因此每一種輸入設備都與一定數量的感測器對象相關,且每一種感測器都與其感測器設備6DOF數據的一個數據源相關.當輸入設備驅動的數據改變時,感測器對象的數據也會相應改變,而且感測器對象由讀取感測器對象組成.由於緩沖區中記錄了各感測器N個讀取感測器對象的值,因此可以對感測器數據進行平均,以及對感測器輸入值的趨勢進行預測等處理,但應用程序的開發並不直接使用輸入設備.Java3D是通過一個感測器數組將輸入設備抽象化,感測器對象數組是物質環境對象的一個子類,該數組是由與輸入設備相關的對象指針組成.Java程序可以直接從感測器數組中獲取感測器的值,並將其用到場景圖中,或按任意方式對其進行處理。
2.4用Java3D開發VR應用程序利用
Java3D開發的VR應用程序或者applets程序,可建造一個虛擬場景,並能將一個或多個場景圖插入到虛擬場景中,虛擬場景由超結構對象集組成,對象集則包括一個世界對象(Universeobject)、一個或多個場所對象(Localeobjects)和按樹狀結構排列的由節點物體組成的一個或多個場景圖(Scenegraphs).該場景圖又稱為分枝圖(Branchgraph),它包括繪制對象節點、光照節點、行為節點和聲音節點等,其中,包含內容節點的分枝圖稱為內容分枝,包含視平台對象的分枝圖稱為視分枝,視平台對象用來確定用戶的位置和方向.圖3表示了具有多分枝圖的Java3D場景.圖3應用程序場景圖由於這種分枝圖只描述了場景所要繪制的對象,並不確定對象的繪制次序,因此圖中節點的次序和位置與對象的繪制次序無關,而圖中的父節點和子節點的直線路徑就唯一確定了子節點的圖形范圍.由於繪制次序的不確定性,因而使得Java3D能橫越場景圖的任何次序,且它能從左到右,從頂部到底部穿過場景圖;或者從右到左,甚至並行遍歷整個場景圖.Java3D的分支圖為樹狀結構,且圖中的每一個節點只有一個父節點.這樣通過輔助的場景圖機制就可以實現通用場景圖的共享,而且具有連接屬性的葉節點可以連接到共享子圖.分枝圖中的節點分為群節點(groupnode)和葉節點(leafnode)兩類,其中,群節點按照粘貼的原理來組織場景圖單元。
群節點的層次結構圖一般群節點包括:BranchGroup、TransformGroup、Switch、OrderGroup、DecalGroup和ShareGroup節點,其中,BranchGroup是分枝圖的根節點;而TransformGroup用來指明所有子節點的位置和方向;Switch則用於實現一個或多個子圖的轉換;OrderGroup用於使它的子節點按照特定的次序繪制;DecalGroup是OrderGroup的一個子集;ShareGroup跟BranchGroup一樣,是一個場景圖的根節點.雖然共享圖作為Java3D場景圖的一部分從不直接出現,但是連接節點可以引用.另外群節點還可以包含各種子節點以及所包含對象的群節點或葉節點.這些子節點用一個關聯索引屬性來允許對特定的子節點進行操作.如果沒有指明特定的順序群節點,Java3D還可以按照任意指定的順序來繪制群節點的子節點.雖然葉節點是場景圖的抽象類,它沒有子節點,但葉節點包括了Java3D的各種信息.葉節點由Shape3D、ViewPlatform、Sound、Light以及用戶定義的行為節點等組成,Shape3D和ViewPlatform節點在Java3D的視模型和輸入模型中扮演著重要的角色,因為它描述了圖形系統的兩個重要方面,其中,Shape3D描述了場景中對象的幾何形狀,而ViewPlatform則標定了用戶或其視點在虛擬環境中的方向或位置.
另外,應用程序還可像操縱分枝圖中的任意對象一樣,來操縱ViewPlatform,而且應用程序還可平移、旋轉和縮放ViewPlatform,即通過改變ViewPlatform的位置和方向,ViewPlatform將隨同用戶的視點一起移動,來瀏覽整個虛擬環境.雖然ViewPlatform是按照事先規定的路線瀏覽場景,但不會限制用戶視點的移動和向不同方向瀏覽場景.
Ⅱ ug編程進給率設置的是3000出的程序為什麼是800
我的ug8.0,我看了一下,我們的後處理出來的程序;
查找F值,搜索出來有幾個不同的進給,包括,進刀、退刀、移動(即橫越),切削,一共四個F值;所以你類似搜索一下看看;
Ⅲ 翻譯3~~~~
1.4幾何類型(是編程語言中的數據類型嗎?)
一個幾何圖就是一系列用直線段或圓弧相互連接的頂點。幾何圖由一些類型(元素)構成。空間資料庫支持幾種簡單的類型和幾何元素(由這些類型組成的集合)。包括二維的:
點和點集
線集
多邊形
弧線束(所有的弧線都可以由圓弧形成)
多邊弧形
復合多邊形
復合線集
圓形
矩形
二維的點(包括X,Y兩個坐標)一般對應於經度和緯度。線集由一對或多對用於定義線段的點組成。多邊形由一些相互連接的線集組成的閉環,也包含了多邊形的內部。
1.5數據模型
空間數據模型是一種分層結構,由元素、幾何體、層,這與空間數據的描述方法相對應。層由幾何體構成,而幾何體又由元素構成。例如,一個點可能代表一個建築的位置,一條線代表一條路或一條飛機航線,一個多邊形代表一個國家、城市、市區或街區。
1.5.1元素
一個元素就是幾何圖的一塊積木。空間元素支持的類型有:點、線集和多邊形。例如,元素可以表示星群(點集),道路(線集),國界(多邊形)。每一個元素的坐標用一對X、Y表示。一個多邊形外部的環線和內部有孔的環線都被視為截然不同的元素,他們共同組成一個復合多邊形。
一個點的數據由一個坐標組成。線數據由兩個代表線段元素的坐標組成。多邊形由多個代表多邊形的線段的定點的坐標對組成。這些坐標沿著多邊形被依次定義(外部多邊環形逆時針,內部環形順時針)。
Ⅳ 所有做URAL的編程者OR(自認為)奧數很厲害的人!請!
首先,有一個循環也就是 0到9 循環十次 接受十個數並將十個數相乘的積S 然後 到到下一個循環 這個循環的條件是(N)1到S 在這個循環里邊有個IF 語句 判斷 S取整 N 如果成立 (I初始值為0)I加1 否則N+1 繼續循環 最後輸出 I 舊可以了啊 !
Ⅳ ug4.0電腦編程為什麼圓弧角老是過切
橫越要填不能空著,空的nc代碼就是Go了而不是g01了,還有後處理不好,圓孤下力時,有的機床就不認,要在後處理改為線性,還有精加工時,編程公差要小點,還有4.0就不要用了,在win7下你會發現非常的卡
Ⅵ CNC 編程 程序過切
一般來講,數控編程過程的主要內容包括:分析零件圖樣、工藝處理、數值計算、編寫加工程序單、製作控制介質、程序校驗和首件試加工。 數控編程的具體步驟與要求如下: 1.分析零件圖 首先要分析零件的材料、形狀、尺寸、精度、批量、毛坯形狀和熱處理要求等,以便確定該零件是否適合在數控機床上加工,或適合在哪種數控機床上加工。同時要明確加工的內容和要求。 2.工藝處理 在分析零件圖的基礎上,進行工藝分析,確定零件的加工方法(如採用的工夾具、裝夾定位方法等)、加工路線(如對刀點、換刀點、進給路線)及切削用量(如主軸轉速、進給速度和背吃刀量等)等工藝參數。數控加工工藝分析與處理是數控編程的前提和依據,而數控編程就是將數控加工工藝內容程序化。制定數控加工工藝時,要合理地選擇加工方案,確定加工順序、加工路線、裝夾方式、刀具及切削參數等;同時還要考慮所用數控機床的指令功能,充分發揮機床的效能;盡量縮短加工路線,正確地選擇對刀點、換刀點,減少換刀次數,並使數值計算方便;合理選取起刀點、切入點和切入方式,保證切入過程平穩;避免刀具與非加工面的干涉,保證加工過程安全可靠等。有關數控加工工藝方面的內容,我們將在第2章2.3節及2.4節中作詳細介紹。 3.數值計算 根據零件圖的幾何尺寸、確定的工藝路線及設定的坐標系,計算零件粗、精加工運動的軌跡,得到刀位數據。對於形狀比較簡單的零件(如由直線和圓弧組成的零件)的輪廓加工,要計算出幾何元素的起點、終點、圓弧的圓心、兩幾何元素的交點或切點的坐標值,如果數控裝置無刀具補償功能,還要計算刀具中心的運動軌跡坐標值。對於形狀比較復雜的零件(如由非圓曲線、曲面組成的零件),需要用直線段或圓弧段逼近,根據加工精度的要求計算出節點坐標值,這種數值計算一般要用計算機來完成。有關數值計算的內容,我們將在第3章中詳細介紹。 4.編寫加工程序單 根據加工路線、切削用量、刀具號碼、刀具補償量、機床輔助動作及刀具運動軌跡,按照數控系統使用的指令代碼和程序段的格式編寫零件加工的程序單,並校核上述兩個步驟的內容,糾正其中的錯誤。 5.製作控制介質 把編制好的程序單上的內容記錄在控制介質上,作為數控裝置的輸入信息。通過程序的手工輸入或通信傳輸送入數控系統。 6.程序校驗與首件試切 編寫的程序單和制備好的控制介質,必須經過校驗和試切才能正式使用。校驗的方法是直接將控制介質上的內容輸入到數控系統中,讓機床空運轉,以檢查機床的運動軌跡是否正確。在有CRT圖形顯示的數控機床上,用模擬刀具與工件切削過程的方法進行檢驗更為方便,但這些方法只能檢驗運動是否正確,不能檢驗被加工零件的加工精度。因此,要進行零件的首件試切。當發現有加工誤差時,分析誤差產生的原因,找出問題所在,加以修正,直至達到零件圖紙的要求。 二數控編程的方法 數控編程一般分為手工編程和自動編程兩種。 1.手工編程 手工編程就是從分析零件圖樣、確定加工工藝過程、數值計算、編寫零件加工程序單、製作控制介質到程序校驗都是人工完成。它要求編程人員不僅要熟悉數控指令及編程規則,而且還要具備數控加工工藝知識和數值計算能力。對於加工形狀簡單、計算量小、程序段數不多的零件,採用手工編程較容易,而且經濟、及時。因此,在點位加工或直線與圓弧組成的輪廓加工中,手工編程仍廣泛應用。對於形狀復雜的零件,特別是具有非圓曲線、列表曲線及曲面組成的零件,用手工編程就有一定困難,出錯的概率增大,有時甚至無法編出程序,必須用自動編程的方法編製程序。 2.自動編程 自動編程是利用計算機專用軟體來編制數控加工程序。編程人員只需根據零件圖樣的要求,使用數控語言,由計算機自動地進行數值計算及後置處理,編寫出零件加工程序單,加工程序通過直接通信的方式送入數控機床,指揮機床工作。自動編程使得一些計算繁瑣、手工編程困難或無法編出的程序能夠順利地完成。 小結: 本章主要講述了數控設備的產生和發展、數控機床的加工原理、數控加工特點及應用以及數控編程的基礎知識。要求讀者了解數控設備產生及發展的過程,數控機床的組成以及各部分的基本功能,數控機床的加工特點。掌握數控編程的主要內容及步驟,並能根據零件形狀及生產周期選擇合適的加工方法。參考資料: http://www.c-cnc.com/news/news.asp?id=6715
Ⅶ matlab 編程要在執行程序時輸入一個行向量,怎麼編寫
在程序中間加入input函數。
MATLAB是美國MathWorks公司出品的商業數學軟體,用於演算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和互動式環境,主要包括MATLAB和Simulink兩大部分。
input請求使用者輸入。
【語法】
user_entry=input('prompt')
user_entry=input('prompt','s')
【函數描述 】
對於input命令的響應可 以是任何MATLAB表 達式,它使用當前工作空間中的變數進行計算。user_entry=input('prompt')將命令提示顯示為屏幕上的提示符 ,等待鍵盤 的輸 入 ,並 且返 回輸入值 到user_entry中 。user_entry=input('prompt','s')返回輸入的字元串為一個文本變數 ,而不是一個變數名或者數值。
【解 析 】
如果用戶沒有輸入任何字元而按下Return鍵 ,輸入返回個空矩陣。prompt的文本字元串可能包含一個或者更多的'\n'字 符。字元'\n'意味著跳過下一行 ,它允許 prompt字元串橫越幾行。為了僅顯示一個反斜杠,應使用'\\'。