真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言徑向分布函數(shù) 徑向分布函數(shù)的表達式

∑在c語言上怎么輸入

原標(biāo)題:數(shù)控車床編程教程,圖文實例詳解!

十余年的成武網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整成武建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“成武網(wǎng)站設(shè)計”,“成武網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。

第一節(jié)數(shù)控車床編程基礎(chǔ)

一、數(shù)控車編程特點

(1) 可以采用絕對值編程(用X、Z表示)、增量值編程(用U、W表示)或者二者混合編程。

(2) 直徑方向(X方向) 系統(tǒng)默認(rèn)為直徑編程,也可以采用半徑編程,但必須更改系統(tǒng)設(shè)定。

(3) X向的脈沖當(dāng)量應(yīng)取Z向的一半。

(4)采用固定循環(huán),簡化編程。

(5) 編程時,常認(rèn)為車刀刀尖是一個點,而實際上為圓弧,因此,當(dāng)編制加工程序時,需要考慮對刀具進行半徑補償。

二、數(shù)控車的坐標(biāo)系統(tǒng)

加工坐標(biāo)系應(yīng)與機床坐標(biāo)系的坐標(biāo)方向一致,X軸對應(yīng)徑向,Z軸對應(yīng)軸向,C軸(主軸)的運動方向則以從機床尾架向主軸看,逆時針為+C向,順時針為-C向,如圖2.1.1所示:

加工坐標(biāo)系的原點選在便于測量或?qū)Φ兜幕鶞?zhǔn)位置,一般在工件的右端面或左端面上。

三、直徑編程方式

在車削加工的數(shù)控程序中,X軸的坐標(biāo)值取為零件圖樣上的直徑值,如圖2.1.2所示:圖中A點的坐標(biāo)值為(30,80),B點的坐標(biāo)值為(40,60)。采用直徑尺寸編程與零件圖樣中的尺寸標(biāo)注一致,這樣可避免尺寸換算過程中可能造成的錯誤,給編程帶來很大方便。

四、進刀和退刀方式

對于車削加工,進刀時采用快速走刀接近工件切削起點附近的某個點,再改用切削進給,以減少空走刀的時間,提高加工效率。切削起點的確定與工件毛坯余量大小有關(guān),應(yīng)以刀具快速走到該點時刀尖不與工件發(fā)生碰撞為原則。如圖2.1.3所示。

五、絕對編程與增量編程

X、Z表示絕對編程,U、W表示增量編程,允許同一程序段中二者混合使用。

如圖2.1.4所示,直線A→B ,可用:

絕對:G01 X100.0 Z50.0;

相對: G01 U60.0 W-100.0;

混用:G01 X100.0 W-100.0;

或 G01 U60.0 Z50.0;

第2節(jié)數(shù)控車床的基本編程方法

數(shù)控車削加工包括內(nèi)外圓柱面的車削加工、端面車削加工、鉆孔加工、螺紋加工、復(fù)雜外形輪廓回轉(zhuǎn)面的車削加工等,在分析了數(shù)控車床工藝裝備和數(shù)控車床編程特點的基礎(chǔ)上,下面將結(jié)合配置FANUC-0i數(shù)控系統(tǒng)的數(shù)控車床重點討論數(shù)控車床基本編程方法。

一、坐標(biāo)系設(shè)定

編程格式G50 X~ Z~

式中X、Z的值是起刀點相對于加工原點的位置。G50使用方法與G92類似。

在數(shù)控車床編程時,所有X坐標(biāo)值均使用直徑值,如圖2.1.5所示。

例:按圖2.1.5設(shè)置加工坐標(biāo)的程序段如下:

G50 X 121.8 Z 33.9

工件坐標(biāo)系的選擇指令G54~G59

例如,用G54指令設(shè)定如圖所示的工件坐標(biāo)系。

首先設(shè)置G54原點偏置寄存器:

G54 X0 Z85.0;

然后再在程序中調(diào)用:

N010 G54;

說明:

1、G54~G59是系統(tǒng)預(yù)置的六個坐標(biāo)系,可根據(jù)需要選用。

2、G54~G59建立的工件坐標(biāo)原點是相對于機床原點而言的,在程序運行前已設(shè)定好,在程序運行中是無法重置的。

3、G54~G59預(yù)置建立的工件坐標(biāo)原點在機床坐標(biāo)系中的坐標(biāo)值可用 MDI 方式輸入,系統(tǒng)自動記憶。

4、使用該組指令前,必須先回參考點。

5、G54~G59為模態(tài)指令,可相互注銷。

二、基本指令G00、G01、G02、G03、G04、G28

1.快速點位移動G00

格式:G00X(U)_Z(W)_;

其中,X(U)_、Z(W)_為目標(biāo)點坐標(biāo)值。

2.直線插補G01

格式:G01 X(U)_Z(W)_ F_;

其中,X(U)、Z(W)為目標(biāo)點坐標(biāo),F(xiàn)為進給速度。

機床執(zhí)行G01指令時,如果之前的程序段中無F指令,在該程序段中必須含有F指令。G01和F都是模態(tài)指令。

3.圓弧插補G02、G03

順時針圓弧插補用G02指令,逆時針圓弧插補用G03指令。

1) 用圓弧半徑R和終點坐標(biāo)進行圓弧插補

格式:G18 G02(G03)X(U)_Z(W)_ R _ F_;

其中:X(U)和Z(W)為圓弧的終點坐標(biāo)值,

絕對值編程方式下用X和Z,增量值編程方式下用U和W。規(guī)定圓弧對應(yīng)的圓心角小于等于180°時,用“+R”表示;反之,用“-R”表示。

F為加工圓弧時的進給量。

2) 用分矢量和終點坐標(biāo)進行圓弧插補

格式:G18 G02(G03)X(U)_Z(W)_I _K _F_;

其中:

X(U)和Z(W)為圓弧的終點坐標(biāo)值,絕對值編程方式下用X和Z,增量值編程方式下用U和W。

I、K分別為圓弧的方向矢量在X軸和Z軸上的投影(I為半徑值)。當(dāng)分矢量的方向與坐標(biāo)軸的方向不一致時取負(fù)號。如圖2.1.7所示,圖中所示I和K均為負(fù)值。

4.暫停指令G04

格式:G04 X(P)_;

其中,X(P)為暫停時間。

X后用小數(shù)表示,單位為秒;

P后用整數(shù)表示,單位為毫秒。

如 :

G04 X2.0表示暫停2秒;

G04 P1000表示暫停1000毫秒。

5.返回參考點指令G28

G28指令可以使刀具從任何位置以快速點定位方式經(jīng)過中間點返回參考點。

格式:G28 X _Z _;

其中,X、Z是中間點的坐標(biāo)值。

三、有關(guān)單位設(shè)定

1、尺寸單位選擇:

格式:G 20 英制輸入制式 英寸輸入

G 21 公制輸入制式 毫米輸入 (默認(rèn))

2、進給速度單位的設(shè)定

每轉(zhuǎn)進給量 編程格式 G95 F~

F后面的數(shù)字表示的是主軸每轉(zhuǎn)進給量,單位為mm/r。

例:G95 F0.2 表示進給量為0.2 mm/r。

每分鐘進給量 編程格式G94 F~

F后面的數(shù)字表示的是每分鐘進給量,單位為 mm/min。

例:G94 F100 表示進給量為100mm/min。

matlab模糊推理代碼問題

分為兩類:功能型工具箱和領(lǐng)域型工具箱。

功能型工具箱主要用來擴充MATLAB的符號計算功能、圖形建模仿真功能、文字處理功能以及與硬件實時交互功能,能用于多種學(xué)科。

領(lǐng)域型工具箱是專業(yè)性很強的。如圖像處理工具箱(Image Processing Toolbox)、控制工具箱(Control Toolbox)、信號處理工具箱(Signal Processing Toolbox)等。下面,將MATLAB工具箱內(nèi)所包含的主要內(nèi)容做簡要介紹:

1) 圖像處理工具箱(Image Processing Toolbox)。

* 二維濾波器設(shè)計和濾波

* 圖像恢復(fù)增強

* 色彩、集合及形態(tài)操作

* 二維變換

* 圖像分析和統(tǒng)計

可由結(jié)構(gòu)圖直接生成可應(yīng)用的C語言源代碼。

2)控制系統(tǒng)工具箱(Control System Toolbox)。

魯連續(xù)系統(tǒng)設(shè)計和離散系統(tǒng)設(shè)計

* 狀態(tài)空間和傳遞函數(shù)

* 模型轉(zhuǎn)換

* 頻域響應(yīng):Bode圖、Nyquist圖、Nichols圖

* 時域響應(yīng):沖擊響應(yīng)、階躍響應(yīng)、斜波響應(yīng)等

* 根軌跡、極點配置、LQG

3)財政金融工具箱(FinancialTooLbox)。

* 成本、利潤分析,市場靈敏度分析

* 業(yè)務(wù)量分析及優(yōu)化

* 偏差分析

* 資金流量估算

* 財務(wù)報表

4)頻率域系統(tǒng)辨識工具箱(Frequency Domain System ldentification Toolbox

* 辨識具有未知延遲的連續(xù)和離散系統(tǒng)

* 計算幅值/相位、零點/極點的置信區(qū)間

* 設(shè)計周期激勵信號、最小峰值、最優(yōu)能量諾等

5)模糊邏輯工具箱(Fuzzy Logic Toolbox)。

* 友好的交互設(shè)計界面

* 自適應(yīng)神經(jīng)—模糊學(xué)習(xí)、聚類以及Sugeno推理

* 支持SIMULINK動態(tài)仿真

* 可生成C語言源代碼用于實時應(yīng)用

(6)高階譜分析工具箱(Higher—Order SpectralAnalysis Toolbox

* 高階譜估計

* 信號中非線性特征的檢測和刻畫

* 延時估計

* 幅值和相位重構(gòu)

* 陣列信號處理

* 諧波重構(gòu)

(7) 通訊工具箱(Communication Toolbox)。

令提供100多個函數(shù)和150多個SIMULINK模塊用于通訊系統(tǒng)的仿真和分析

——信號編碼

——調(diào)制解調(diào)

——濾波器和均衡器設(shè)計

——通道模型

——同步

(8)線性矩陣不等式控制工具箱(LMI Control Toolbox)。

* LMI的基本用途

* 基于GUI的LMI編輯器

* LMI問題的有效解法

* LMI問題解決方案

(9)模型預(yù)測控制工具箱(ModelPredictive Control Toolbox

* 建模、辨識及驗證

* 支持MISO模型和MIMO模型

* 階躍響應(yīng)和狀態(tài)空間模型

(10)u分析與綜合工具箱(u-Analysis and Synthesis Toolbox)

* u分析與綜合

* H2和H無窮大最優(yōu)綜合

* 模型降階

* 連續(xù)和離散系統(tǒng)

* u分析與綜合理論

(11)神經(jīng)網(wǎng)絡(luò)工具箱(Neursl Network Toolbox)。

* BP,Hopfield,Kohonen、自組織、徑向基函數(shù)等網(wǎng)絡(luò)

* 競爭、線性、Sigmoidal等傳遞函數(shù)

* 前饋、遞歸等網(wǎng)絡(luò)結(jié)構(gòu)

* 性能分析及應(yīng)用

(12)優(yōu)化工具箱(Optimization Toolbox)。

* 線性規(guī)劃和二次規(guī)劃

* 求函數(shù)的最大值和最小位

* 多目標(biāo)優(yōu)化

* 約束條件下的優(yōu)化

* 非線性方程求解

(13)偏微分方程工具箱(Partial DifferentialEquation Toolbox)。

* 二維偏微分方程的圖形處理

* 幾何表示

* 自適應(yīng)曲面繪制,

* 有限元方法

(14)魯棒控制工具箱(Robust Control Toolbox)。

* LQG/LTR最優(yōu)綜合

* H2和H無窮大最優(yōu)綜合

* 奇異值模型降階

* 譜分解和建模

(15)信號處理工具箱(signal Processing Toolbox)

* 數(shù)字和模擬濾波器設(shè)計、應(yīng)用及仿真

* 譜分析和估計

* FFT,DCT等變換

* 參數(shù)化模型

(16)樣條工具箱(SPline Toolbox)。

* 分段多項式和B樣條

* 樣條的構(gòu)造

* 曲線擬合及平滑

* 函數(shù)微分、積分

(17)統(tǒng)計工具箱(Statistics Toolbox)。

* 概率分布和隨機數(shù)生成

* 多變量分析

* 回歸分析

* 主元分析

* 假設(shè)檢驗

(18)符號數(shù)學(xué)工具箱(Symbolic Math Toolbox)。

* 符號表達式和符號矩陣的創(chuàng)建

* 符號微積分、線性代數(shù)、方程求解

* 因式分解、展開和簡化

* 符號函數(shù)的二維圖形

* 圖形化函數(shù)計算器

(19)系統(tǒng)辨識工具箱(SystEm Identification Toolbox)

* 狀態(tài)空間和傳遞函數(shù)模型

* 模型驗證

* MA,AR,ARMA等

* 基于模型的信號處理

* 譜分析

(20)小波工具箱(Wavelet Toolbox)。

* 基于小波的分析和綜合

* 圖形界面和命令行接口

* 連續(xù)和離散小波變換及小波包

* 一維、二維小波

* 自適應(yīng)去噪和壓縮

常用的十大python圖像處理工具

原文標(biāo)題:10 Python image manipulation tools.

作者 | Parul Pandey

翻譯 | 安其羅喬爾、JimmyHua

今天,在我們的世界里充滿了數(shù)據(jù),圖像成為構(gòu)成這些數(shù)據(jù)的重要組成部分。但無論是用于何種用途,這些圖像都需要進行處理。圖像處理就是分析和處理數(shù)字圖像的過程,主要旨在提高其質(zhì)量或從中提取一些信息,然后可以將其用于某種用途。

圖像處理中的常見任務(wù)包括顯示圖像,基本操作如裁剪、翻轉(zhuǎn)、旋轉(zhuǎn)等,圖像分割,分類和特征提取,圖像恢復(fù)和圖像識別。Python成為這種圖像處理任務(wù)是一個恰當(dāng)選擇,這是因為它作為一種科學(xué)編程語言正在日益普及,并且在其生態(tài)系統(tǒng)中免費提供許多最先進的圖像處理工具供大家使用。

讓我們看一下可以用于圖像處理任務(wù)中的常用 Python 庫有哪些吧。

1.scikit-image

scikit-image是一個開源的Python包,適用于numpy數(shù)組。它實現(xiàn)了用于研究,教育和工業(yè)應(yīng)用的算法和實用工具。即使是那些剛接觸Python生態(tài)系統(tǒng)的人,它也是一個相當(dāng)簡單直接的庫。此代碼是由活躍的志愿者社區(qū)編寫的,具有高質(zhì)量和同行評審的性質(zhì)。

資源

文檔里記錄了豐富的例子和實際用例,閱讀下面的文檔:

用法

該包作為skimage導(dǎo)入,大多數(shù)功能都在子模塊中找的到。下面列舉一些skimage的例子:

圖像過濾

使用match_template函數(shù)進行模板匹配

你可以通過此處查看圖庫找到更多示例。

2. Numpy

Numpy是Python編程的核心庫之一,并為數(shù)組提供支持。圖像本質(zhì)上是包含數(shù)據(jù)點像素的標(biāo)準(zhǔn)Numpy數(shù)組。因此,我們可以通過使用基本的NumPy操作,例如切片、掩膜和花式索引,來修改圖像的像素值??梢允褂胹kimage加載圖像并使用matplotlib顯示圖像。

資源

Numpy的官方文檔頁面提供了完整的資源和文檔列表:

用法

使用Numpy來掩膜圖像.

3.Scipy

scipy是Python的另一個類似Numpy的核心科學(xué)模塊,可用于基本的圖像操作和處理任務(wù)。特別是子模塊scipy.ndimage,提供了在n維NumPy數(shù)組上操作的函數(shù)。該包目前包括線性和非線性濾波,二值形態(tài)學(xué),B樣條插值和對象測量等功能函數(shù)。

資源

有關(guān)scipy.ndimage包提供的完整功能列表,請參閱下面的鏈接:

用法

使用SciPy通過高斯濾波器進行模糊:

4. PIL/ Pillow

PIL( Python圖像庫 )是Python編程語言的一個免費庫,它支持打開、操作和保存許多不同的文件格式的圖像。然而, 隨著2009年的最后一次發(fā)布,它的開發(fā)停滯不前。但幸運的是還有有Pillow,一個PIL積極開發(fā)的且更容易安裝的分支,它能運行在所有主要的操作系統(tǒng),并支持Python3。這個庫包含了基本的圖像處理功能,包括點運算、使用一組內(nèi)置卷積核的濾波和色彩空間的轉(zhuǎn)換。

資源

文檔中有安裝說明,以及涵蓋庫的每個模塊的示例:

用法

在 Pillow 中使用 ImageFilter 增強圖像:

5. OpenCV-Python

OpenCV( 開源計算機視覺庫 )是計算機視覺應(yīng)用中應(yīng)用最廣泛的庫之一 。OpenCV-Python 是OpenCV的python版API。OpenCV-Python的優(yōu)點不只有高效,這源于它的內(nèi)部組成是用C/C++編寫的,而且它還容易編寫和部署(因為前端是用Python包裝的)。這使得它成為執(zhí)行計算密集型計算機視覺程序的一個很好的選擇。

資源

OpenCV-Python-Guide指南可以讓你使用OpenCV-Python更容易:

用法

下面是一個例子,展示了OpenCV-Python使用金字塔方法創(chuàng)建一個名為“Orapple”的新水果圖像融合的功能。

6. SimpleCV

SimpleCV 也是一個用于構(gòu)建計算機視覺應(yīng)用程序的開源框架。有了它,你就可以訪問幾個高性能的計算機視覺庫,如OpenCV,而且不需要先學(xué)習(xí)了解位深度、文件格式、顏色空間等。

它的學(xué)習(xí)曲線大大小于OpenCV,正如它們的口號所說“計算機視覺變得簡單”。一些支持SimpleCV的觀點有:

即使是初學(xué)者也可以編寫簡單的機器視覺測試攝像機、視頻文件、圖像和視頻流都是可互操作的資源

官方文檔非常容易理解,而且有大量的例子和使用案例去學(xué)習(xí):

用法

7. Mahotas

Mahotas 是另一個計算機視覺和圖像處理的Python庫。它包括了傳統(tǒng)的圖像處理功能例如濾波和形態(tài)學(xué)操作以及更現(xiàn)代的計算機視覺功能用于特征計算,包括興趣點檢測和局部描述符。該接口是Python語言,適合于快速開發(fā),但是算法是用C語言實現(xiàn)的,并根據(jù)速度進行了調(diào)優(yōu)。Mahotas庫速度快,代碼簡潔,甚至具有最小的依賴性。通過原文閱讀它們的官方論文以獲得更多的了解。

資源

文檔包括安裝指導(dǎo),例子,以及一些教程,可以更好的幫助你開始使用mahotas。

用法

Mahotas庫依賴于使用簡單的代碼來完成任務(wù)。關(guān)于‘Finding Wally’的問題,Mahotas做的很好并且代碼量很少。下面是源碼:

8. SimpleITK

ITK 或者 Insight Segmentation and Registration Toolkit是一個開源的跨平臺系統(tǒng),為開發(fā)人員提供了一套廣泛的圖像分析軟件工具 。其中, SimpleITK是建立在ITK之上的簡化層,旨在促進其在快速原型設(shè)計、教育、解釋語言中的應(yīng)用。SimpleITK 是一個圖像分析工具包,包含大量支持一般過濾操作、圖像分割和匹配的組件。SimpleITK本身是用C++寫的,但是對于包括Python以內(nèi)的大部分編程語言都是可用的。

資源

大量的Jupyter Notebooks 表明了SimpleITK在教育和研究領(lǐng)域已經(jīng)被使用。Notebook展示了用Python和R編程語言使用SimpleITK來進行交互式圖像分析。

用法

下面的動畫是用SimpleITK和Python創(chuàng)建的剛性CT/MR匹配過程的可視化 。點擊此處可查看源碼!

9. pgmagick

pgmagick是GraphicsMagick庫的一個基于python的包裝。 GraphicsMagick圖像處理系統(tǒng)有時被稱為圖像處理的瑞士軍刀。它提供了一個具有強大且高效的工具和庫集合,支持以88種主要格式(包括重要格式,如DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF)讀取、寫入和操作圖像。

資源

有一個專門用于PgMagick的Github庫 ,其中包含安裝和需求說明。還有關(guān)于這個的一個詳細(xì)的用戶指導(dǎo):

用法

使用pgmagick可以進行的圖像處理活動很少,比如:

圖像縮放

邊緣提取

10. Pycairo

Pycairo是圖像處理庫cairo的一組Python捆綁。Cairo是一個用于繪制矢量圖形的2D圖形庫。矢量圖形很有趣,因為它們在調(diào)整大小或轉(zhuǎn)換時不會失去清晰度 。Pycairo是cairo的一組綁定,可用于從Python調(diào)用cairo命令。

資源

Pycairo的GitHub庫是一個很好的資源,有關(guān)于安裝和使用的詳細(xì)說明。還有一個入門指南,其中有一個關(guān)于Pycairo的簡短教程。

庫:指南:用法

使用Pycairo繪制線條、基本形狀和徑向梯度:

總結(jié)

有一些有用且免費的Python圖像處理庫可以使用,有的是眾所周知的,有的可能對你來說是新的,試著多去了解它們。

求一個C語言圖形變換程序,先進行圖形繪制,后能進行圖形復(fù)制、移動、縮放、旋轉(zhuǎn),跪求啦。。。

從這一部分開始,進入了圖形編程的比較煩瑣的部分,要真正對圖形編程有所了解,這一部分的內(nèi)容是必須要掌握的。

在計算機繪圖過程中,經(jīng)常需要進行繪圖變換,主要包括二維圖形變換和三維圖形變換。這一部分討論二維圖形變換,其內(nèi)容有用戶坐標(biāo)到屏幕坐標(biāo)的變換、圖形的比例變換、對稱變換、錯切變換、旋轉(zhuǎn)變換、平移變換和復(fù)合變換等。后面講到了二維剪裁,即線段裁剪與多邊形裁剪。

第一節(jié) 用戶坐標(biāo)到屏幕坐標(biāo)變換

假設(shè)紙上有一個圖形,要用計算機把它在屏幕上畫出來。那么首先遇到的問題是,紙上的圖形采用的坐標(biāo)是實數(shù)域域中的直角坐標(biāo)系或是極坐標(biāo)系,統(tǒng)稱為用戶坐標(biāo)系。而屏幕上采用的坐標(biāo)系是整數(shù)域中直角坐標(biāo)系,這類坐標(biāo)系統(tǒng)稱為設(shè)備坐標(biāo)系。因此用戶坐標(biāo)系中圖形需要經(jīng)過變換才能繪制在屏幕上,顯然這個變換的內(nèi)容包括: 1)將用戶坐標(biāo)系中任意范圍區(qū)域轉(zhuǎn)換到屏幕某個范圍區(qū)域,從而用戶坐標(biāo)系此范圍區(qū)域內(nèi)的圖形也轉(zhuǎn)換到屏幕上該范圍區(qū)域內(nèi)。 2)用戶坐標(biāo)系此區(qū)域內(nèi)圖形上的坐標(biāo)值轉(zhuǎn)換到屏幕上該范圍區(qū)域內(nèi)后不一定是整數(shù),取整后才成為該范圍區(qū)域內(nèi)的屏幕坐標(biāo)值。 3)用戶坐標(biāo)右手系到屏幕坐標(biāo)左手系的坐標(biāo)軸方向變換。 4)當(dāng)屏幕坐標(biāo)系水平方向與垂直方向刻度不等(即像素間距不等)時,為保持圖形不走樣,還要進行比例變換。下面介紹這些內(nèi)容的具體計算問題。

1.窗口到視口的變換

更確切地說,是實際圖形到屏幕圖形的轉(zhuǎn)換。有時也稱為數(shù)據(jù)規(guī)格化。

在用戶坐標(biāo)系中,指定一矩形域以確定要顯示(或繪制)的圖形部分,這個矩形區(qū)域稱為窗口。在屏幕上可任選一矩形域以顯示(或繪制)窗口內(nèi)的圖形,該域稱為視口。如圖2-1所示。

一般視窗口的四條邊界分別為:

左邊界 x=x1、右邊界 x=x2.下邊界 y=y1,上邊界y=y2。

視口的四條邊界分別為:

左邊界sx=sx1,右邊界sx=sx2,上邊界sy=sy1,下邊界sy=sy2。

經(jīng)變換后應(yīng)有,窗口的上邊界線段(或下邊界線段)長x2-x1變換成視口上邊界線段(或下邊界線段)長sx2-sx1。設(shè)其比例變換因子為k1,則可得

k1*(x2-x1)=sx2-sx1

k1=(sx2-sx1)/(x2-x1)

對窗口內(nèi)任一x坐標(biāo)(x1=x=x2)變換后為視口內(nèi)水平方向sx坐標(biāo)(sx1=sx=sx2)。由上述有:

k1*(x-x1)=sx-sx1

sx=sx1+k1*(x-x1)

=sx1+(x-x1)*(sx2-sx1)/(x2-x1)

同樣,經(jīng)變換后窗口的左邊界線段(或右邊界線段)長y2-y1變換成視口左邊界線段(或右邊界線段)長sy2-sy1。設(shè)其比例變換因子為k2,則可得

k2*(y2-y1)=sy2-sy1

k2=(sy2-sy1)/(y2-y1)

對窗口內(nèi)任一y坐標(biāo)(y1=y=y2)變換后為視口內(nèi)垂直sy坐標(biāo)(sy1=sy=sy2),應(yīng)有

k2*(y-y1)=sy-sy1

sy=sy1+k2*(y-y1)

=sy1+(y-y1)*(sy2-sy1)/(y2-y1)

于是對窗口內(nèi)圖形上任一點坐標(biāo)(x,y)變換到屏幕上視口內(nèi)成為(sx,sy),則

sx=sx1+(x-x1)*(sx2-sx1)/(x2-x1)

sy=sy1+(y-y1)*(sy2-sy1)/(y2-y1)

寫成簡式

sx=k1*x+a

sy=k2*y+b

這里

a=sx1-k1*x1

b-sy1-k2*y1

k1=(sx2-sx1)/(x2-x1)

k2=(sy2-sy1)/(y2-y1)

2. 實型值到整型值的變換

上面對窗口內(nèi)圖形上任一點坐標(biāo)(x,y)變換到屏幕上視口內(nèi)成為(sx,sy),

sx=k1*x+a

sy=k2*y+b k1,k2,a,b同上

這樣計算出來的sx,sy一般是實型值,而屏幕上視口內(nèi)屏幕坐標(biāo)是整型值,因此要將sx,sy實型值轉(zhuǎn)換成屏幕坐標(biāo)系的整型值。這可以通過四舍五入的方法將實型值的絕對值圓整化。由于C語言中已經(jīng)替我們想到了這點,它提供的函數(shù)可以自動取整,因此用戶在調(diào)用標(biāo)準(zhǔn)函數(shù)在屏幕上繪圖時一般不需要考慮這個問題。當(dāng)然也可以用賦值的類型轉(zhuǎn)換規(guī)則來實現(xiàn)實型值到整型值的變換。

3. y坐標(biāo)值方向變換

一般屏幕坐標(biāo)系是直角左手系,y軸方向向下為正,原點在屏幕的左上角,如圖2-2所示。

窗口內(nèi)圖形上任一點(x,y)變換到視口內(nèi)成為(sx,xy),而(x,y)是相對用戶坐標(biāo)系(直角右手系)的。(sx,sy)是相對屏幕坐標(biāo)系(直角左手系)的,因此y軸方向相反。為使窗口內(nèi)圖形變換到視口上圖形其形狀一致,需將視口上圖形y軸方向變換成窗口內(nèi)圖形y軸方向。這只要將求得的視口內(nèi)各點的sy整型坐標(biāo)均用sy2去減,即sy2-sy(整型)代替sy(整型)即可,經(jīng)這樣的坐標(biāo)軸方向變換后得到的視口內(nèi)圖形與窗口內(nèi)圖形一致。

4.長寬比例變換

屏幕坐標(biāo)系x方向與y方向上的刻度可能不一樣,這取決于水平方向像素間距與垂直方向偈素間距大小是否一致。如果兩個方向的刻度不相等,那么用戶坐標(biāo)系下一個正方形將顯示(或繪制)成為一個長方形有,一個圓將成為一個橢圓。

為保持原圖形的長寬比。使圖形顯示(或繪制)后不走樣,需求出屏幕上兩侍標(biāo)軸刻度的比值(即縱橫比)??梢杂煤瘮?shù)getaspectratio()(見前文所述)返回x方向和y方向的比例數(shù),從而求得這個比值。再瘵原圖形y方向坐標(biāo)乘以該比值,這樣顯示(或繪制)出來的圖形應(yīng)不走樣。若不考慮圖形的走樣,就不必作這個變換。

第二節(jié) 二維幾何變換

圖形的幾何變換一般是指對圖形的幾何信息經(jīng)過變換后產(chǎn)生新的圖形,圖形幾何變換既可以看作是坐標(biāo)系不動而圖形變動,變動后的圖形在坐標(biāo)系中的坐標(biāo)值發(fā)生變化;出可以看作圖形不動而坐標(biāo)系變動,變動后的圖形在新坐標(biāo)系下具有新的坐標(biāo)值。這兩種情況本質(zhì)上都是一樣的,都是圖形由新的坐標(biāo)值表示,因此是新產(chǎn)生的圖形。圖形幾何變換包括比例變換、對稱變換、錯切變換、旋轉(zhuǎn)變換、平移變換及其復(fù)合變換。圖形上所有的點在幾何變換前后的坐標(biāo)關(guān)系一般用解析幾何方法可以求得,但這些幾何關(guān)系用矩陣方法表示,運算更為方便。

一、基本變換

圖形基本幾何變換是指比例變換、對稱變換、錯切變換、旋轉(zhuǎn)變換和平移變換等。除平移變換外,這里其它四種幾何變換都可以用組成圖形的點向量(或稱1×2階矩陣)和2×2階變換矩陣相乘表示,而平移變換需引入新方法來實現(xiàn)。

1、比例變換

設(shè)圖形上一點P(x,y),經(jīng)比例變換后成為新的菜上一點P'(x',y'),即有

x'=a*x

y'=d*y

式中a,d為比例因子

將此比例變換式寫成矩陣式得

a 0

[x' y']=[x y] = [x y] * T

0 d

a 0

這里 T= 叫做比例變換矩陣。若a=d,則x,y坐標(biāo)按同一比例變換。

0 d

當(dāng)a=d1時,圖形放大;當(dāng)0a=d1時,圖形縮小。

若a≠d,則x,y坐標(biāo)按各自不同比例變換。

3 0

例 1: 設(shè)有比例變換矩陣 T= , 三角形abc經(jīng)過比例變換成為三角形a'b'c'。

0 1

如圖2-3所示。

3 0

a [1 2] = [3 2] a'

0 1

3 0

b [2 2] = [6 2] b'

0 1

3 0

c [2 3] = [6 3] c'

0 1

2. 對稱變換

圖形上一點P(x,y)經(jīng)關(guān)于原點對稱變換后成為新圖形上一點P'(x',y'),則

x' = -x

y' = -y

寫成矩陣形式成為

-1 0

[x' y'] = [x y] = [x y] * T

0 -1

-1 0

這里 T = 為關(guān)于原點對稱變換矩陣。

0 -1

若關(guān)于x軸對稱,則對稱變換的矩陣表示為

1 0

[x' y'] = [x y] = [x y] * T

0 -1

1 0

于是關(guān)于x軸對稱變換矩陣 T =

0 -1

若關(guān)于y軸對稱,則對稱變換的矩陣表示為

-1 0

[x' y'] = [x y] = [x y] * T

0 1

-1 0

于是關(guān)于y軸對稱變換矩陣 T =

0 1

若關(guān)于直線y = -x對稱,則對稱變換矩陣表示為

0 -1

[x' y'] = [x y] = [x y] * T

-1 0

0 1

于是關(guān)于直線 y = x對稱變換矩陣 T =

1 0

各種對稱變換的圖形均可由實例程序繪出,參見實例程序圖形。

3. 錯切變換

對圖形的任一點P(x,y),作線性變換如下

x' = x + by

y' = y + dx

式中b,d為不全為零的常 數(shù),點P'(x',y')為新圖形上相應(yīng)的點,這個變換稱為圖形的錯切變換。

錯切變換的矩陣表示為

1 d

[x' y'] = [x y] = [x y] * T

b 1

1 d

T = 叫做錯切變換矩陣(b,d不全為零)。

b 1

① 當(dāng)d=0時,x'=x+by,y'=y,這時圖形的y坐標(biāo)不變,x坐標(biāo)值隨(x,y)及系數(shù)b作線性變化。若b0時,圖形沿x軸作錯切位移;若b0,圖形沿x軸負(fù)向作錯切位移。

② 當(dāng)b=0時,x'=x,y'=dx+y,此時圖形的x坐標(biāo)不變y坐標(biāo)隨(x,y)及系數(shù)d作線性變化。如d0,圖形沿y軸正向作錯切位移;如d0,圖形沿y軸負(fù)向作錯切位移。

③ 當(dāng)b≠0且d≠0時,x'=x+by,y'=y+dx,圖形沿x,y兩個方向作錯切位移。

1 2

例 2: 設(shè)有錯切變換 矩陣 T = ,正方形abcd經(jīng)此錯切變換成為四邊形a'b'c'd',

0 1

如圖2-4所示。

1 2

a [0 0] = [0 0] a'

0 1

1 2

b [1 0] = [1 2] b'

0 1

1 2

c [1 1] = [1 3] c'

0 1

1 2

d [0 1] = [0 1] d'

0 1

4. 旋轉(zhuǎn)變換

設(shè)圖形上一點P(x,y)繞原點逆時針旋轉(zhuǎn)θ角后成為新的圖形上一點P'(x',y'),則由解析幾何方法可得

x' = xcosθ + ysinθ

y' = -xsinθ + ycosθ

用矩陣表示為

cosθ -sinθ

[x' y'] = [x y] = [x y] * T

sinθ cosθ

cosθ -sinθ

這里 T = 為繞原點逆時針變換矩陣。若順時針旋轉(zhuǎn)時,θ角為負(fù)值。

sinθ cosθ

5. 平移變換

若圖形上一點P(x,y)沿x軸平移 l距離,沿y軸平移m距離后成為新的圖形上一點P'(x',y'),則有

x' = x + l

y' = y + m

式中l(wèi),m不全為零,這稱為平移變換。但此變換無法用組成圖形的點向量和2×2階變換矩陣相乘來實現(xiàn)。

用二維點向量和2×2階矩陣相乘不能表示圖形的平移變換,那么自然會想到用三維點向量和3×3階矩陣相乘來實現(xiàn)圖形的平移變換。因此對圖形上二個坐標(biāo)的點向量需要添加一個坐標(biāo),使之成為三維點向量以便與三階矩陣相乘,進而實現(xiàn)用矩陣表示平移變換。實際上就是對上面的二個坐標(biāo)變換式添加第三個坐標(biāo)變換式,即成為

x' = x + l

y' = y + m

k = k

這第三個坐標(biāo)變換式(即k=k)必須是恒等式,因為不需作變換,本質(zhì)上是為了進行矩陣運算而引入的。

將此三個變換式(仍然是圖形的平移變換,不妨將k = k取成1=1)寫成矩陣得

1 0 0

[x' y' l] = [x y l] 0 1 0 = [x y 1] * T

l m 1

1 0 0

顯然 T = 0 1 0 為圖形的平移變換矩陣。

l m 1

這里通過對原圖形上二維點向量引進第三個坐標(biāo)成為三維點向量,從而使原圖形的平移變換 能用矩陣表示。同樣其它基本變換也可以如此用矩陣表示。因此圖形的基本變換都可以在這樣的三維點向量下統(tǒng)一、整齊用矩陣表示。這樣的三維點向量稱為齊次點向量,也叫三維齊次坐標(biāo)點,簡稱三維齊次坐標(biāo)。只有在三維齊次坐標(biāo)下,二維幾何變換才都可以用矩陣表示。下面再進一步討論一下齊次坐標(biāo)的優(yōu)點。

引用齊次坐標(biāo)后,可將上面各種基本變換矩陣統(tǒng)一在一個三階矩陣中。即

a b 0

T = c d 0

l m 1

式中左上角二階矩陣實現(xiàn)比例、對稱、錯切、旋轉(zhuǎn)等變換,左下角1×2階矩陣實現(xiàn)平移變換,其中a,b,c,d,l,m只要賦以相應(yīng)的值,并建立圖形上點的齊次坐標(biāo)(即在圖形上點的坐標(biāo)后引入第三個坐標(biāo)1),這樣就可以用圖形上點的三維齊次坐標(biāo)與此三階矩陣相乘來表示三維圖形的基本幾何變換了。而變換后,不用考慮第三個坐標(biāo)1,前面兩個坐標(biāo)就反映了圖形的整個變換情況。

用齊次坐標(biāo)表示一個圖形上的點,可以有多種表示,如(6,8,1)、(12,16,2)、(30,40,5)等均表示圖形上同一個點(6,8)。這樣,齊次坐標(biāo)可以表示計算機無法容納的數(shù)。例如當(dāng)計算機的字長為16位時,它能表示的最大整數(shù)為216-1=32767。若點坐標(biāo)為(80 000,40 000),則計算機無法表示。但用齊次坐標(biāo)可表示為(20 000,10 000,1/4),經(jīng)過處理后再用第三個坐標(biāo)支除前面兩個坐標(biāo),從而得到原來通常的坐標(biāo)。

齊次坐標(biāo)優(yōu)點很多,在計算機繪圖中都采用這種表示來處理圖形。下面介紹的圖形復(fù)合幾何變換就是如此。

二、復(fù)合變換

圖形的復(fù)合幾何變換是指圖形作一次以上的基本幾何變換,變換結(jié)果是每次基本變換矩陣的乘積。圖殂的復(fù)合幾何變換簡稱復(fù)合變換。

1. 復(fù)合平移

若對圖形首先作平移變換 T1,然后再作平移變換T2,相應(yīng)的平移變換矩陣分別為

1 0 0

T1 = 0 1 0

l1 m1 1

1 0 0

T2 = 0 1 0

l2 m2 1

則變換結(jié)果為復(fù)合平移變換T,其復(fù)合平移變換矩陣為

T = T1 * T2

1 0 0 1 0 0

= 0 1 0 * 0 1 0

l1 m1 1 l2 m2 1

1 0 0

= 0 1 0

l1+l2 m1|m2 1


分享名稱:c語言徑向分布函數(shù) 徑向分布函數(shù)的表達式
網(wǎng)頁鏈接:http://weahome.cn/article/hijiio.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部