成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

vb.net三維畫布 vb繪制三維圖

VB.net怎么進行實時的3D曲面繪圖

這份文件列出了參數(shù)在PowerMILL提供。 表1 列出一般PowerMILL參數(shù), 表2 列出了有效的PowerMILL安裝額外的參數(shù)表。 表1。 PowerMILL參數(shù)。 標(biāo)識符說明 (AdditionalStock)最大厚度的股票估計要去除刀具路徑。這是用來作為一種輔助手

創(chuàng)新互聯(lián)建站專注于大荔企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城開發(fā)。大荔網(wǎng)站建設(shè)公司,為大荔等地區(qū)提供建站服務(wù)。全流程按需定制,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

VB.net可以開發(fā)小型3D圖形顯示軟件嗎?

可以借助DirectX來編程。免費3D引擎可不好找,一般來說速度比不上硬件加速后的DX,尤其令人頭疼的是一般都沒有針對VB的文檔,LZ有這方面理想的話,自己寫一個吧……

我不得不承認(rèn)在VB上寫DirectX的教程相當(dāng)難找!如果LZ想深入研究三維圖形問題,C++一定要學(xué),就算不能用C++編程,起碼要能把C++程序翻譯成VB程序。

我自己學(xué)會DX編程花了兩三個月(很淺)。編這樣一個程序難度是有點大的。

工具:DirectX9和其針對VB的庫(項目-添加引用。.NET庫里DX庫一般都有),VB不知道現(xiàn)在支不支持DX10以上的版本,不過9絕對夠用了。

思路:一切3D圖形都是由三角形拼成的。矩形挖掉一個圓孔可不是一個方便畫的圖形,我估計至少得有24個三角形。你需要記錄這些點的坐標(biāo),或者干脆把它們寫在文件里,到時讀出來。

這是我的一個老DX程序的不完全的代碼(顯示一個黑乎乎的平面),不一定能編譯,可以參考一下。

Imports Microsoft.DirectX '一定要~

Public Class FormMain

'Direct3D Startup

Dim d3dpp As New Direct3D.PresentParameters 'DX基本參數(shù),例如全屏還是窗口等

Public MyDevice As Direct3D.Device ‘DX基本設(shè)備,畫圖就靠它。

'Matrices

Dim matWorld, matView, matProj As Matrix '世界位置矩陣,攝像機位置矩陣和透視矩陣,數(shù)學(xué)要學(xué)好啊。

'mesh

Public MyPlane as Direct3D.Mesh ’我們的物體

Public VBPlane(3) As Direct3D.CustomVertex.PositionNormalTextured '存放頂點位置的數(shù)組

#Region "DX Core"

Public Sub InitDeviceObjects()

With d3dpp ‘以下請照抄。

.Windowed = True ‘不全屏。

.SwapEffect = Direct3D.SwapEffect.Discard ’雙緩沖交換效果。請百度“雙緩沖”

.BackBufferFormat = Direct3D.Format.Unknown

.EnableAutoDepthStencil = True ’讓DX自動管理深度緩沖

.AutoDepthStencilFormat = Direct3D.DepthFormat.D16

End With

MyDevice = New Direct3D.Device(0, Direct3D.DeviceType.Hardware, Me.Handle, Direct3D.CreateFlags.HardwareVertexProcessing, d3dpp) '創(chuàng)建DX設(shè)備啦!以下兩句請照抄。

MyDevice.SetRenderState(Direct3D.RenderStates.ZEnable, True) ‘Z緩沖

MyDevice.SetRenderState(Direct3D.RenderStates.NormalizeNormals, True)'法線歸一化,請看相關(guān)數(shù)學(xué)書籍。

End Sub

Public Sub RestoreDeviceObjects()

Dim PlaneIB() As Short = {0, 1, 3, 0, 2, 3} ’頂點索引信息。

Dim AttrTable(1) As Direct3D.AttributeRange ‘頂點分組屬性表

AttrTable(0).AttributeId = 0

AttrTable(0).FaceStart = 0

AttrTable(0).FaceCount = 2 ’有兩個三角形

AttrTable(0).VertexStart = 0

AttrTable(0).VertexCount = 4 ‘四個點

‘頂點坐標(biāo)信息。

VBPlane(0) = New Direct3D.CustomVertex.PositionNormalTextured(-500, -500, 0, 0, 0, 1, 0, 0)

VBPlane(1) = New Direct3D.CustomVertex.PositionNormalTextured(500, -500, 0, 0, 0, 1, 1, 0)

VBPlane(2) = New Direct3D.CustomVertex.PositionNormalTextured(-500, 500, 0, 0, 0, 1, 0, 1)

VBPlane(3) = New Direct3D.CustomVertex.PositionNormalTextured(500, 500, 0, 0, 0, 1, 1, 1)

MyPlane = New Direct3D.Mesh(2, 4, Direct3D.MeshFlags.Managed, Direct3D.VertexFormats.Position + Direct3D.VertexFormats.Normal + Direct3D.VertexFormats.Texture1, MyDevice) ’創(chuàng)建物體

MyPlane.SetVertexBufferData(VBPlane, Direct3D.LockFlags.None) ‘輸入頂點坐標(biāo)數(shù)據(jù)

MyPlane.SetIndexBufferData(PlaneIB, Direct3D.LockFlags.None) ‘輸入索引數(shù)據(jù)

MyPlane.SetAttributeTable(AttrTable) ‘輸入頂點分組屬性表

End Sub

Public Sub Render() ‘調(diào)用它畫圖

Dim vlook As New Vector3(1, 0, 0)

Dim vPos As New Vector3(0,0,0)

Dim vUp As New Vector3(0, 0, 1)

MatView = Matrix.LookAtLH(vPos, vlook, vUp) ‘計算攝像機位置矩陣

Device.SetTransform(Direct3D.TransformType.View, MatView) ‘設(shè)置當(dāng)前攝像機位置矩陣為MatView。

Dim fAspect As Single = Me.Width / Me.Height ’窗口長寬比

matProj = Matrix.PerspectiveFovLH(Math.PI / 4, fAspect, 1.0F, 10001) ‘計算透視矩陣MatProj。

MyDevice.SetTransform(Direct3D.TransformType.Projection, matProj) ‘設(shè)置當(dāng)前透視矩陣為MatProj。

MyDevice.Clear(Direct3D.ClearFlags.Target + Direct3D.ClearFlags.ZBuffer, Color.Blue, 1.0F, 0) ’先刷藍屏

MyDevice.BeginScene() ‘開始畫

MatWorld = Matrix.Identity ’物體位于原點,不旋轉(zhuǎn)

Device.SetTransform(Direct3D.TransformType.World, MatWorld) ’設(shè)置物體位置

Me.Mesh.DrawSubset(0) ‘畫物體

MyDevice.EndScene() ’結(jié)束

MyDevice.Present() ‘顯示在屏幕上

End Sub

Public Sub DeleteDeviceObjects() ’結(jié)束程序時放掉資源

MyPlane.Dispose()

MyDevice.Dispose()

End Sub

#End Region

Private Sub FormMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing

DeleteDeviceObjects()

Windows.Forms.Cursor.Show()

End Sub

Private Sub FormMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

InitDeviceObjects()

RestoreDeviceObjects()

Windows.Forms.Cursor.Hide()

Render()

End Sub

End Class

誠心求助朋友教我用VB繪畫 三維立體圖形

vb里繪制線框的立體圖形很簡單,用到投影算法即可。

所謂投影算法就是把三維空間里的xyz映射成xy的一種方法,網(wǎng)上查一下“投影算法”關(guān)鍵字就能找到公式。

比如場景里有八個點,它們都各自有xyz坐標(biāo),在投影成xy以后,再按照一定順序用Line連接線即可。再結(jié)合上Sin和Cos還能讓圖形旋轉(zhuǎn)。但一般來說我們習(xí)慣的三維圖像還涉及光、顏色、紋理填充,這就比較麻煩了。還得有消隱算法……

總之如果打算自己弄得化很復(fù)雜,想提高運算效率建議學(xué)習(xí)一下 DirectX SDK,有VB版的。

3D投影2D計算公式是這樣的

P( f ):(x, y, z)==( f*x / z + XOrigin, f*y / z + YOrigin )

其中f是“焦點距離”,它表示從觀察者到屏幕的距離,一般在80到200之間。XOrigin和YOrigin是屏幕中心的坐標(biāo)。

再給你些對與3D旋轉(zhuǎn)和縮放的矩陣,矩陣轉(zhuǎn)化成公式即可。

二維坐標(biāo)系公式。

二維笛卡兒坐標(biāo)系的平移等式。

t( tx, ty ): ( x, y ) == ( x + tx, y + ty )

二維笛卡兒坐標(biāo)系的縮放等式。

s( k ): ( x, y ) == ( kx, ky )

旋轉(zhuǎn)等式:

r( q ): ( x, y ) == ( x cos(q) - y sin(q), x sin(q) + y cos(q) )

三維坐標(biāo)系公式。

平移公式:

t( tx, ty, tz ): ( x, y, z ) == ( x + tx, y + ty, z + tz )

平移(tx, ty, tz)的矩陣

| 1 0 0 0 |

| 0 1 0 0 |

| 0 0 1 0 |

| tx ty tz 1 |

縮放公式:

s( k ): ( x, y, z ) == ( kx, ky, kz )

縮放(sx, sy, sz)的矩陣

| sx 0 0 0 |

| 0 sy 0 0 |

| 0 0 sz 0 |

| 0 0 0 1 |

旋轉(zhuǎn)公式(圍繞Z軸):

r( q ): ( x, y, z ) == ( x cos(q) - y sin(q), x sin(q) + y cos(q), z )

繞X軸旋轉(zhuǎn)角q的矩陣

| 1 0 0 0 |

| 0 cos(q) sin(q) 0 |

| 0 -sin(q) cos(q) 0 |

| 0 0 0 1 |

繞Y軸旋轉(zhuǎn)角q的矩陣:

| cos(q) 0 -sin(q) 0 |

| 0 1 0 0 |

| sin(q) 0 cos(q) 0 |

| 0 0 0 1 |

繞Z軸旋轉(zhuǎn)角q的矩陣:

| cos(q) sin(q) 0 0 |

|-sin(q) cos(q) 0 0 |

| 0 0 1 0 |

| 0 0 0 1 |

怎么利用VB.NET實現(xiàn)三維繪圖

數(shù)學(xué)上不是有斜二測畫法,算好坐標(biāo)即可畫出

或者用AnyCAD的.Net圖形控件

也可以調(diào)用matlab 實現(xiàn)

vb.net 畫布最大能有多大

板芯一般設(shè)置960到980,畫布一般是設(shè)為1900,最大的設(shè)置取決于用來編寫代碼的軟件界面。

網(wǎng)站欄目:vb.net三維畫布 vb繪制三維圖
文章路徑:http://jinyejixie.com/article6/dosdgog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、靜態(tài)網(wǎng)站、搜索引擎優(yōu)化、網(wǎng)站排名營銷型網(wǎng)站建設(shè)、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
芷江| 江口县| 蚌埠市| 桃源县| 兰溪市| 武山县| 石阡县| 焉耆| 瓮安县| 武隆县| 曲周县| 禹城市| 伽师县| 尚志市| 习水县| 宁国市| 辉南县| 吉安县| 靖江市| 黄骅市| 礼泉县| 郁南县| 汝城县| 阜平县| 周至县| 新余市| 东丽区| 蕲春县| 石家庄市| 三都| 济源市| 平泉县| 怀化市| 旬邑县| 山东| 彩票| 鄂尔多斯市| 米林县| 临夏县| 涞水县| 长海县|