Ⅰ 幾何畫板製作圖形平移和旋轉教程
網上的這方面的東西很多,可以參考
幾何畫板教程
第一章 用工具作圖
第一節 幾何畫板的啟動和繪圖工具的介紹
1、啟動幾何畫板:單擊桌面左下角的【開始】按鈕,選擇【所有程序】|【GSP4.05】應用程序後,啟動幾何畫板。
如圖1所示,是打開一個幾何畫板文件的截圖。
圖1
幾何畫板的窗口是不是和其他Windows應用程序窗口十分類似?有控制菜單、最大/最小化以及標題欄,畫板窗口的左側是畫板工具欄,畫板的右邊和下邊可以有滾動條可以使小畫板處理更大的圖形。
畫板的左側是畫板工具箱,把游標移動到工具的上面,一會兒就會顯示工具的名稱,看看它們分別是什麼?它們分別是【選擇箭頭工具】、【點工具】、【圓規工具】、【直尺工具】、【文本工具】、【自定義畫圖工具】。
和一般的繪圖軟體相比,你會不會感覺它的工具是不是少了點?幾何畫板的主要用途之一是用來繪制幾何圖形。而幾何圖形的繪制,我們通常是用直尺和圓規,它們的配合幾乎可以畫出所有的歐氏幾何圖形。因為任何歐氏幾何圖形最後都可歸結為「點」、「線」、「圓」。這種公里化作圖思想因為「三大作圖難題」曾經吸引無數數學愛好者的極大興趣從而在數學歷史上影響重大,源遠流長。從某種意義上講幾何畫板繪圖是歐氏幾何「尺規作圖」的一種現代延伸。因為這種把所有繪圖建立在基本元素上的做法和數學作圖思維中公里化思想是一脈相承的。
按住工具框的邊緣,可隨意拖動到畫板窗口的任何位置,不同位置形狀不同。試一試,能否拖到某一個地方,工具框變成圖2所示的形狀?
圖2
顧名思義,猜測一下它們都有何功能?
:選擇對象 這是它的主要功能,當然還有其他
:畫點 可以在畫板繪圖區任何空白的地方或「線」上畫點。「線」可以是線段、射線、圓、軌跡、函數圖像
:畫圓 只能畫正圓不能畫橢圓,是不是有點遺憾?(幾何畫板也能畫橢圓,請看第二章)
:畫線 直尺工具當然用於畫線段,還不僅僅如此!
:加標注(即說明性的文字)或給對象標標簽
:自定義工具 如果你覺得上述工具不夠(如:不能直接畫正方形),你可以定義新的工具
選擇某項繪圖工具時,用滑鼠單擊一下該工具即可。
試一試 能否畫出如圖3所示的圖形
圖3
畫點:單擊【點工具】,然後將滑鼠移動到畫板窗口中單擊一下,就會出現一個點。
畫線:單擊【直尺工具】,然後拖動滑鼠,將游標移動到畫板窗口中單擊一下,再拖動滑鼠到另一位置松開滑鼠,就會出現一條線段。
畫圓:單擊【圓規工具】,然後拖動滑鼠,將游標移動到畫板窗口中單擊一下(確定圓心),並按住滑鼠拖動到另一位置(起點和終點間的距離就是半徑)松開滑鼠,就回出現一個圓。
畫交點:單擊【選擇箭頭工具】,然後拖動滑鼠將游標移動到線段和圓相交處(游標由變成橫向 ,狀態欄顯示的是「點擊構造交點」)單擊一下,就會出現交點。如圖4所示:
圖4
交點只能由線段(包括直線、射線)間、圓間、線段((包括直線、射線))與圓之間點擊構造。
繪圖工具的使用是不是比操作直尺和圓規更容易?
如果你細心的話,你會發現【選擇箭頭工具】,和【直尺工具】的右下角都有一個小三角,用滑鼠按住它約一秒,看看會發生什麼?
【選擇箭頭工具】展開如圖5所示,有三個工具,分別是:「移動」,「旋轉」,「縮放」,其用途鍵下一節。
圖5
【直尺工具】展開,也有三個工具,如圖6所示,分別是:「線段」「射線」「和直線」。線段的畫法,我們知道了,如何用它來畫射線直線呢?
圖6
畫射線:移動游標到【直尺工具】上,按住滑鼠不放,待【直尺工具】展開後,不要松開滑鼠,繼續移動游標到射線工具上,松開滑鼠,直尺工具變為。然後在畫板繪圖區單擊滑鼠並按住滑鼠拖動,到適當位置松開,就畫出一條射線,如圖7所示
圖7
(在幾何畫板里是看不見射線上的箭頭,它向一端是無限延伸的)
畫直線:依樣畫葫蘆,請你畫如圖8所示的一條直線。
圖8
(在幾何畫板里同樣也是看不見直線上的箭頭,它向兩端是無限延伸的)
你還會發現,用幾何畫板畫出的線段、直線、射線和畫圓,分別多了兩點。一方面構造它們只要兩點就夠了,另一方面,它們可以被拖動。如,單擊【選擇箭頭工具】按鈕,移動游標到線段的端點處(注意游標會變水平)拖動滑鼠,線段的長短和方向就會改變;正因為多出了「點」,才使它們有被改變的可能。
移動游標到線段的端點之間任何地方(游標成水平狀)拖動滑鼠,就可以移動線段。分別拖動一下直線、射線的點和線,嘗試改變它們一下。
試一試 畫一個圓,看能否改變圓的大小和位置。
(提示:圓是由兩個點來決定的,滑鼠按下去的點即為圓心,松開滑鼠的點即為圓上的一點。改變這兩個點中的任意一點都可以改變圓。分別拖動圓心和圓周上的點,可改變圓的大小,拖動圓周,可移動圓。)
所以說,你不覺得幾何畫板所畫圖形是動態的圖形?
幾何畫板繪制的圖形也非常容易加上標簽。(你不妨和word的繪圖比較一下)
單擊文本工具,游標由前頭變為手形然後分別移動滑鼠,當游標移到對象處,變為單擊滑鼠,對象顯示出標簽。
請將圖3中的所有對象添上標簽。去掉標簽也容易,只需對上圖的每一個對象,單擊,標簽就沒有了。在幾何畫板中的每個幾何對象都對應一個「標簽」。當您在畫板中構造幾何對象時,系統會自動給您畫的對象配標簽。文本工具就是一個標簽的開關,可以讓幾何畫板中每個幾何對象的標簽顯示和隱藏。
用繪圖工具繪制簡單的組合圖形
下面我們用繪圖工具來畫一些組合圖形,希望通過一下範例的學習,你能夠熟悉繪圖工具的使用,和一些相關技巧。
三角形(一)
一、製作結果 如圖所示,拖動三角形的頂點,可改變三角形的形狀、大小
這個三角形是動態的三角形,它可以被拖成下列三角形之一,如圖9所示。
圖9
二、要點思路 熟悉「直尺工具」的使用,拖動圖中的點改變其形狀。
三、操作步驟 觀察圖10,你能明白三角形就是用【直尺工具】畫三條首尾相接的線段所組成的圖形。
圖10
打開幾何畫板,建立新繪圖
單擊【直尺工具】,將游標移到在繪圖區,單擊並按住滑鼠拖動,畫一條線段,松開滑鼠。
在原處單擊滑鼠並按住拖動,畫出另一條線段,松開滑鼠。(注意游標移動的方向)
在原處單擊滑鼠並按住拖動,畫出第三條線段,游標移到起點處松開滑鼠。(注意起點會變色)
5、將該文件保存為「三角形.gsp」
拓展:你也可以將游標移到在繪圖區,單擊並松開滑鼠拖動,畫一條線段,單擊滑鼠。在原處再單擊滑鼠並松開拖動,畫出另一條線段,單擊滑鼠。在原處單擊滑鼠並松開拖動,畫出第三條線段,游標移到起點處單擊滑鼠。
例2三角形(二)
一、製作結果 三角形三邊所在的線分別是直線、射線和線段,拖動三角形的頂點可以改變三角形的大小和形狀,如圖11所示。在講解三角形的外角時,就可構造此圖形。
圖11
二、知識要點 學會使用【線段工具】、【直線工具】、【射線工具】以及它們相互之間的切換。
三、操作步驟
打開幾何畫板,建立新繪圖。
選擇畫直線工具 將游標移動到【直尺工具】上按住滑鼠鍵不放,移動游標到【直線工具】上,松開滑鼠,如圖12所示。
圖12
畫直線 將滑鼠移動到畫板中,按下滑鼠鍵,向右拖曳滑鼠後松滑鼠鍵。
選擇畫射線工具 用滑鼠對准【直線工具】,按下滑鼠鍵並拖曳到【射線工具】處松滑鼠,如圖13所示。
圖13
畫射線 將滑鼠對準定義直線的左邊一點(在按下滑鼠左鍵之前請注意窗口左下角的提示),按下滑鼠鍵,向右上拖曳滑鼠後松滑鼠鍵。
選擇畫線段工具 用滑鼠對准畫線工具,按下滑鼠鍵並拖曳到線段工具處松滑鼠。如圖14所示。
圖14
畫線段 將滑鼠對準定義射線的右上一點C(注意窗口左下角的提示信息),按下滑鼠鍵,向定義直線的右邊一點B拖動(注意提示),匹配上這一點後松滑鼠。
將該文件保存為「三線三角形.gsp」
例3、圓內接三角形
一、製作結果 如圖15所示所示,拖動三角形的任一個頂點,三角形的形狀會發生改變,但始終與圓內接。
圖15
二、要點思路 學會使用畫線工具在幾何對象上畫線段
三、操作步驟 如圖16所示
圖16
打開幾何畫板,建立新繪圖。
畫圓 單擊【圓規工具】按鈕,然後拖動滑鼠,將游標移動到畫板窗口中單擊一下按住並拖動滑鼠到另一位置,松開滑鼠,就會出現一個圓。
畫三角形 單擊【直尺工具】按鈕,移動游標到圓周上(圓會變淡藍色)單擊並按住滑鼠向右移到圓周上松開滑鼠;在原處單擊並按住滑鼠向左上方移動到圓周上松開滑鼠;在原處單擊並按住滑鼠向左下方移動到圓周上線段起點處松開滑鼠。
將該文件保存為「圓內接三角形.gsp」
注意:畫線段時,起點不要與圓周上的點重合;游標移動到圓上時,圓會變淡藍色,注意狀態欄的提示。
試一試:畫一個過同一點的三個圓,並保存文件為「共點的三圓.gsp」(希望你能試一試,後面要用到)
例4、等腰三角形(畫法一)
製作結果 拖動三角形的頂點,三角形形狀和大小會發生改變,但始終是等腰三角形,如圖17所示,這就是幾何的不變規律。
圖17
要點思路 利用「同圓半徑相等」來構造等腰,如圖18所示。
圖18
三、操作步驟
1、打開幾何畫板,建立新繪圖。
2、畫圓
3、畫三角形 單擊【直尺工具】按鈕,移動游標到圓周上的點處(即畫圓時的終點,此時點會變淡藍色),單擊並按住滑鼠向右移動到圓周上松開滑鼠;在原處單擊並按住滑鼠向左上方移動到圓圓心處松開滑鼠;在原處單擊並按住滑鼠向左下方移動到起點處松開滑鼠。
4、隱藏圓 按「Esc」鍵(取消畫線段狀態)單擊圓周後,按「Ctrl+H」快捷鍵隱藏圓。
5、將該文件保存為「等腰三角形1.gsp」
線段的垂直平分線
一、製作結果 如圖19所示,無論你怎樣拖動線段,豎直的線為水平線段的垂直平分線。
圖19
要點思路 學會使用【直尺工具】,畫線段和直線,學會等圓的構造技巧,如圖20所示。
圖20
操作步驟
1、打開幾何畫板,建立新繪圖,畫線段 。
2、畫等圓 單擊【圓規工具】,然後拖動滑鼠,將游標移動到畫板線段的左端點單擊一下按住並拖動滑鼠到線段的右端點,松開滑鼠;在原處單擊並按住滑鼠向左拖動到起點(即開始構造圓的起點)松開滑鼠。
3、畫直線 選擇【直線工具】,移動游標到兩圓相交處單擊並按住滑鼠拖動到另一個兩圓相交處單擊後松開滑鼠。(游標到兩圓相交處,兩圓會同時變為淡藍色)
4、隱藏兩圓及交點 按「Esc」鍵,取消畫線段狀態,單擊圓周和交點後,按「Ctrl+H」
5、保存文件 將該文件保存為「垂直平分線.gsp」
你能否由上述作法聯想到等邊三角形的作法?
拓展:等邊三角形的畫法(一)
要點思路 學會等圓的構造方法,使用「同圓半徑相等」構造等邊,如圖21所示。
圖21
二、操作步驟
1、打開幾何畫板,建立新繪圖。
2、畫等圓 單擊【圓規工具】,然後拖動滑鼠,將游標移動到畫板窗口中單擊一下按住並拖動滑鼠到另一位置,松開滑鼠;在原處單擊並按住滑鼠向左拖動到起點(即開始構造圓的起點)松開滑鼠。
3、畫三角形 在畫線段時,游標移到兩圓相交處,兩圓同時變淡藍色才可單擊滑鼠。
4、隱藏兩圓 按「Esc」鍵,取消畫線段狀態,單擊圓周後,按「Ctrl+H」快捷鍵隱藏圓。
將該文件保存為「等邊三角形1.gsp」
例6、直角三角形(畫法一)
一、製作結果 拖動左邊和上邊的點可改變三角形的大小和形狀,但始終是直角三角形。拖動右邊的點和三邊可改變直角三角形的位置,如圖22所示。
圖22
二、要點思路 學會使用【畫射線工具】;使用【選擇工具】畫交點;在圓上畫線段;搞清楚畫直角的原理是:直徑所對的圓周角是直角
三、操作步驟
1、打開幾何畫板,建立新繪圖
2、畫射線:移動游標到【直尺工具】上,按住滑鼠不放,待【直尺工具】展開後,不要松開滑鼠,繼續移動游標到射線工具上,松開滑鼠,直尺工具變為。然後在畫板繪圖區單擊滑鼠並按住滑鼠拖動,到適當位置松開,就畫出一條射線,如圖23所示。
圖23
3、畫圓及射線的交點:移動游標到射線和圓的交點處,單擊,如圖24所示。
圖24
注意:游標到射線和圓的交點處,射線和圓都會變為淡藍色,狀態提示欄的提示是:「單擊構造交點」。
4、畫直角邊 單擊【直尺工具】按鈕,移動游標到射線的端點處(端點會變淡藍色)單擊並按住滑鼠向右上移動到圓周上松開滑鼠;在原處單擊並按住滑鼠向右下方移動到圓與射線的交點處松開滑鼠,如圖25所示。
圖25
5、隱藏射線和圓及圓心 連續單擊圓、圓心、射線後按快捷鍵「Ctrl+H」,如圖26所示。
圖26
6、畫斜邊 單擊【直尺工具】,移動游標到左邊點處單擊並按住滑鼠向右移動到右邊點處松開滑鼠。
可能你會說,怎麼這么繁,為什麼不直接用【直尺工具】畫一個直角三角形,但這樣畫出的直角三角形,由於沒有定義幾何關系,拖動任一頂點和邊,不能保證它始終是直角三角形。
7、將該文件保存為「直角三角形.gsp」
從以上幾個實例不知你是否意識到:
1)用幾何畫板繪制幾何圖形,首先得考慮對象間的幾何關系,不是基本元素(點、線、圓)的簡單堆積。
2)點不僅可作在畫板的空白處,也可以作在幾何對象(除「內部」外)上。線段和圓的起點和終點也如此,即不僅可作在畫板的空白處,也可以作在幾何對象上,即構造「點」與「線」的幾何關系。
3)【選擇箭頭工具】不僅用於選擇,還可用來構造交點。
4)在畫點(或畫圓、、直線、線段、射線)時,游標移到幾何對象(點和線)處,幾何對象會變為淡藍色,此時單擊滑鼠才能保證「點」、「點」重合,「點」在「線」上。
5)對於繪制圖形的輔助線,一般情況下不能刪除,要不然相關對象都被刪除了。只能選定按快捷鍵「Ctrl+H」隱藏。
第三節:對象的選取、刪除、拖動
前面的敘述已涉及到對象的選取、拖動。幾何畫板雖然是windows軟體,但它的有些選擇對象的選擇方式,又與一般的windows繪圖軟體又不同,希望你在學習過程中能意識和注意到這一點。也希望通過本節的講解,你對此有比較系統全面的了解
一、選擇
在進行所有選擇(或不選擇)之前,需要先單擊【選擇箭頭工具】按鈕,使滑鼠處於選擇箭頭狀態。
1、選擇一個:用滑鼠對准畫板中的一個點、一條線、一個圓或其它圖形對象,單擊滑鼠就可以選中這個對象。圖形對象被選中時,會加重表示出來。如下圖所示:
選擇對象 過 程 描 述 選前狀態 選後狀態
一個點 用滑鼠對准要選中的點,待游標變成橫向時 ,單擊滑鼠左鍵。
一條線 用滑鼠對准線段的端點之間部分(而不是線段的端點),待滑鼠變成橫向的黑箭頭時,單擊滑鼠左鍵。
一個圓 用滑鼠對准圓周(而不是圓心或圓上的點),待滑鼠變成橫向的黑箭頭時,單擊滑鼠左鍵。
2、再選另一個:當一個對象被選中後,再用滑鼠單擊另一個對象,新的對象被選中而原來被選中的對象仍被選中(選擇另一對象的同時,並不需按住「Shift」鍵,與一般的windows軟體的選擇習慣不同)。
3、選擇多個:連續單擊所要選擇的對象(注意:在單擊過程中,不得在畫板的空白處單擊(或按「Esc」鍵)。
4、取消某一個:當選中多個對象後,想要取消某一個,只需單擊這個對象,就取消了對這個對象的選擇。
都不選中:如果在畫板的空白處單擊一下(或按「Esc」鍵),那麼所有選中的標記就都沒有了,沒有對象被選中了。
選擇所有:如果你選擇了畫板工具箱中的選擇工具,這時在編輯菜單中就會有一個「選擇所有」的項;如果當前工具是畫點工具,這一項就變成選擇「所有點」;如果是畫線工具或畫圖工具,這一項就變成「選擇所有線段(射線、直線)或「選擇所有圓」。它的快捷鍵是「Ctrl+A」(請注意和反復練習這種選擇同類對象的方式)
選擇對象的父母和子女:選中一些對象後,選擇【編輯】|【選擇父對象】命令,如圖27所示,就可以把已選中對象的父母選中。類似地,也可以選擇子對象。如果一個對象沒有父母,那麼幾何畫板認為它自己是自己的父母;同樣,如果一個對象沒有子女,那麼它自己是自己的子女。 所謂「父母」和「子女」,是指對象之間的派生關系。如:線段是由兩點派生出來的,因此這兩點的「子女」就是線段,而線段的「父母」就是兩個點。
圖27
注意:畫板最後構造對象,是處於選擇狀態。在選擇對象之前最好在在畫板的空白處單擊一下(或按「Esc」鍵)
小技巧:選擇多個對象還可以用拖框的方式,(和一般的windows軟體相同)如圖28所示:
圖28
你想要畫圖快捷,最好熟悉這種選擇方式。
選擇對象的目的是為了對這個對象進行操作。這是因為在windows中,所有的操作都只能作用於選中的對象上,也就是說:必須先選擇對象,然後才能進行有關的操作。在幾何畫板中,對選中的對象可以進行的操作有:刪除、拖動、構造、測量、變換等。 在這里,我們先介紹刪除和拖動操作。
二、刪除
刪除就是把對象(點、線或圓)從屏幕中清除出去。方法是:先選中要刪除的對象,然後再選擇「編輯」菜單中的「清除」項,或按鍵盤上的「Delete」鍵。請注意,這時與該對象有關的所有對象均會被刪除,和一般的windows軟體又不同,和數學思想倒很相近,「皮之不存,毛將附焉」。
三、拖動
用滑鼠可以選擇一個或多個對象,當你用滑鼠拖動已經選中的對象在畫板中移動時,這些對象也會跟著移動。由於幾何面板中的幾何對象都是通過幾何定義構造出來的,而且幾何畫板的精髓就在於「在運動中保持幾何關系不變」,所以,一些相關的幾何對象也會相應地移動。
當你拖動畫板中的圖形時,可以感受到幾何畫板的動態功能。請注意:在拖動之前,請按「Esc」鍵,或點擊【選擇箭頭工具】後,選定要移動的對象。
試一試 按下面的步驟進行拖動操作,注意觀察圖形變化的情況。
拖動前的圖形 拖動操作 拖動後的圖形 解 釋
1 向下拖動點B 線段受點B控制,所以要隨著運動。
2 拖動線段AB 線段的方向不變,位置發生改變,由於點A、B是線段的父母,必須保持相應關系,所以兩點也隨之運動。
3 拖動點B 點B是圓的父母,所以圓的大小隨著點B的移動而變化。由於點A是自由的,不受點B控制,所以點A位置保持不變。
4 拖動點A 點A是圓的父母,所以圓的大小和圓心的位置隨著點A的移動而變化。由於點B是自由的,不受點A控制,所以圓總保持過點B。
5 圓由AB兩點定義,點C為圓上另一點,拖動點C。 由於點C是圓的子女,受圓的控制,所以,這個點只能在圓上運動。
6 畫兩條相交線段,用選擇工具畫出它們的交點(請注意狀態條的提示),之後拖動線段CD。 當兩線段不相交後,交點就不顯示了(此時交點無數學意義)。
在前面學習中,你是不是用畫圓工具畫了三個過同一點的圓,並把它保存為「共點的三圓。gsp」的文件。現在請大家把這個文件調出來(選擇【文件】|【打開】命令,選中文件名後,按【確定】按鈕)。 請大家任意選中一個圓隨意拉動,看這三個圓是否還能「過同一點」? 拖動結果可能如圖29所示:
圖29
為什麼圖形會「散架」,可能作圖過程是這樣的(下面列出最典型的初學者「畫三個過一點的圓」的方法,可能受傳統作圖方式如黑板上的繪圖或一般繪圖軟體的影響),如圖30所示。
圖30
在拖動過程中,幾何畫板能夠保持所有給定的幾何關系,因為它就是根據幾何關系來設計的!那麼,你思考一下,上述方法在畫圓時,到底給定了什麼樣的幾何關系?
我們知道,圓是由兩個點來決定的,滑鼠按下去的點即為圓心,松開滑鼠的點即為圓上的一點。改變這兩個點中的任意一點都可以改變圓。
而在我們剛才的操作中,我們所給的幾何關系是:每個圓都是由兩個完全自由的點來決定的(請大家觀察一下,圖中共一個圓,六個自由點)。根據這樣的幾何關系,每個圓都可以隨意地改變。這就表明:在幾何畫板中,不能再象在黑板上那樣,隨手畫出圖來,而每時每刻都得考慮幾何關系。
那麼怎麼能保證它們過同一個點呢?你按下面的步驟做做看?
步驟 過 程 描 述 作圖結果
1 選擇畫圓工具。 (無)
2 畫第一個圓:圓心為A,圓上一點為B。
3 畫第二個圓;在任意一點處按下滑鼠鍵即規定了圓心C,拖動滑鼠,對准點B(注意狀態欄的提示),並在B點松開滑鼠,即圓上的點為B。
4 畫第三個圓:在任意一點處按下滑鼠鍵即規定了圓心D,拖動滑鼠,對准點B(注意狀態欄的提示),並在B點松開滑鼠,即圓上的點為B。
Ⅱ 圖形的平移方法是怎樣的
在同一平面內,將一個圖形上的所有點都按照某個直線方向做相同距離的移動。
經過平移,對應線段平行(或共線)且相等,對應角相等,對應點所連接的線段平行且相等。平移變換不改變圖形的形狀、大小和方向(平移前後的兩個圖形是全等形)。圖形平移前後的形狀和大小沒有變化,只是位置發生變化。圖形平移後,對應點連成的線段平行(或在同一直線上)且相等。
多次連續平移相當於一次平移。偶數次對稱後的圖形等於平移後的圖形。平移是由方向和距離決定的。經過平移,對應線段平行(或共線)且相等,對應角相等,對應點所連接的線段平行(或共線)且相等。
(2)圖像平移源碼使用教程擴展閱讀
圖像平移規律
1、沿x軸平移的規律:向左平移a個單位,把解析式中的x換成x+a;向右平移a個單位,把原解析式的的x換成x-a。
例如y=2x-5向左平移4個單位得到的解析式為:y=2(x+4)-5,只需把x換成x+4即可,y=3x²+4x-2向右平移2個單位得到的解析式為:y=3x²+4(x-2)-2。
2、沿y軸平移的規律:向上平移a個單位,把解析式中的y換成y-a;向下平移a個單位,把解析式中的y換成y+a。
例如y=-2x-6向上平移2個單位後的解析式為y-2=-2x-6。
3x-4y+5=0向下平移4個單位後的解析式為:3x-4(y+4)+5=0。
Ⅲ 如何用opencv實現圖像的平移
圖像平移(Translation)變換是圖像幾何變換中最為簡單的一種變換,是將一副圖像中的所有像素都按照給定的偏移量在水平方向(沿x軸方向),或在垂直方向(沿y軸方向)移動。
[cpp] view plain
void Translation(void)
{//平移變換 值為正表示向軸正向移動,值為負表示向軸負向移動
cout<<"輸入水平移動距離:";
int disx=0;
cin>>disx;
cout<<"輸入垂直移動距離:";
int disy=0;
cin>>disy;
cout<<"水平移動距離為:"<<disx<<endl;
cout<<"垂直移動距離為:"<<disy<<endl;
IplImage *img=cvLoadImage("lena.jpg");
if (img == NULL)
exit(0);
IplImage *res=cvCreateImage(cvGetSize(img), img->depth, img->nChannels);
if (res == NULL)
exit(0);
for (int i=0; i<img->height; i++)
{
for (int j=0; j<img->width; j++)
{
CvScalar color=cvGet2D(img, i, j);
cvSet2D(res, (i+disy)%img->height, (j+disx)%img->width, color);
}
}
cvNamedWindow("src");
cvNamedWindow("res");
cvShowImage("src", img);
cvShowImage("res", res);
cvWaitKey(0);
cvReleaseImage(&img);
cvReleaseImage(&res);
cvDestroyAllWindows();
}
Ⅳ 求大神講一下mfc繪圖如何實現圖形平移的功能,還有撤銷功能,如果有代碼講解,萬分感謝
圖形可以認為是一個圖片控制項,將圖片控制項進行平移,可以使用MoveWindow來進行操作。撤銷就是把他移回原來的位置即可。裡面需要用CRect來保存移動的位置。
Ⅳ 用matlab 如何將圖像平移,向上或向下
你可以重新畫呀,把其中一條的Y稍微增加一些。。。
或者分圖顯示好啦 subplot
Ⅵ 利用c語言怎樣對bmp圖像進行平移的操作
點陣圖平移沒有這方面的庫函數,必須自己來實現,下面是點陣圖平移的參考代碼:
#include "stdafx.h"
#include<windows.h>
#include<stdio.h>
#include<math.h>
int _tmain(int argc, _TCHAR* argv[])
{
int width;
int height;
RGBQUAD *pTableColor;
unsigned char *pBmpBuf1,*pBmpBuf2;
BITMAPFILEHEADER bfhead;
BITMAPINFOHEADER bihead;
//讀出源圖像的信息
FILE *fpr=fopen("E:\picture\dog.bmp","rb");
if(fpr==0)
return 0;
fread(&bfhead,14,1,fpr);
fread(&bihead,40,1,fpr);
width=bihead.biWidth;
height=bihead.biHeight;
int LineByte=(width*8/8+3)/4*4;
pTableColor=new RGBQUAD[256];
fread(pTableColor,sizeof(RGBQUAD),256,fpr);
pBmpBuf1=new unsigned char[LineByte*height];
fread(pBmpBuf1,LineByte*height,1,fpr);
fclose(fpr);
//將處理後的圖像賦值為白色
pBmpBuf2=new unsigned char[LineByte*height];
for(int i=0;i<height;i++)
for(int j=0;j<width;j++)
{
unsigned char *p;
p=(unsigned char*)(pBmpBuf2+LineByte*i+j);
(*p)=255;
}
//左右平移功能的實現
int t;
printf("請輸入左平移或右平移的大小t(左移t<0,右移t>0):");
scanf("%d",&t);
int k=abs(t);
printf("%d",k);
if(t<0)
{
if(t>=(-width))
{
for(int i=0;i<height;i++)
for(int j=0;j<(width-k);j++)
{
unsigned char *p1,*p2;
p1=pBmpBuf1+LineByte*i+j+k;
p2=pBmpBuf2+LineByte*i+j;
(*p2)=(*p1);
}
}
}
else
{
if(t<=width)
{
for(int i=0;i<height;i++)
for(int j=k;j<width;j++)
{
unsigned char *p1,*p2;
p1=pBmpBuf1+LineByte*i+j-k;
p2=pBmpBuf2+LineByte*i+j;
(*p2)=(*p1);
}
}
}
//保存處理後的圖像
FILE *fpw=fopen("dog.bmp","wb");
fwrite(&bfhead,14,1,fpw);
fwrite(&bihead,40,1,fpw);
fwrite(pTableColor,sizeof(RGBQUAD),256,fpw);
fwrite(pBmpBuf2,LineByte*height,1,fpw);
fclose(fpw);
return 0;
}
Ⅶ 怎麼用MATLAB掌握圖像平移、圖像旋轉和圖像縮放的基本原理與實現方法
%圖像平移(1)
F=imread('p2.bmp');
se = translate(strel(1), [0 20]);
%參數[0 20]可以修改,修改後平移距離對應改變
J = imdilate(F,se);
figure;
imshow(J,[]);title('右移後圖形');
%圖像平移(2)
function outImage=immove(inImage,Tx,Ty)
[m, n] = size(inImage);
Tx=fix(Tx);
Ty=fix(Ty);
%move x
if (Tx<0)
inImage=imcrop(inImage,[abs(Tx),1,m-abs(Tx),n]);
[m, n] = size(inImage);
Tx=0;
end
%move y
if (Ty<0)
inImage=imcrop(inImage,[1,abs(Ty),m,n-abs(Ty)]);
[m, n] = size(inImage);
Ty=0;
end
outImage = zeros(m+Ty, n+Tx);
outImage(1+Ty:m+Ty,1+Tx:n+Tx) = inImage;
%圖像旋轉
%X,Y為其行列數
Image=imread('02.jpg');
Image=rgb2gray(Image);
angle=30;
%角度任意的一個數 表示30度
pai=3.14;
Angle=pai*angle/180;
%轉換一下角度的表示方法。
[X,Y]=size(Image);
%原圖顯示
subplot(2,1,1);
imshow(Image);
title('原圖像');
%計算四個角點的新坐標,確定旋轉後的顯示區域
LeftTop(1,1)=-(Y-1)*sin(Angle);
LeftTop(1,2)=(Y-1)*cos(Angle);
LeftBottom(1,1)=0;
LeftBottom(1,2)=0;
RightTop(1,1)=(X-1)*cos(Angle)-(Y-1)*sin(Angle);
RightTop(1,2)=(X-1)*sin(Angle)+(Y-1)*cos(Angle);
RightBottom(1,1)=(X-1)*cos(Angle);
RightBottom(1,2)=(X-1)*sin(Angle);
%計算顯示區域的行列數
Xnew=max([LeftTop(1,1),LeftBottom(1,1),RightTop(1,1),RightBottom(1,1)])-min([LeftTop(1,1),LeftBottom(1,1),RightTop(1,1),RightBottom(1,1)]);
Ynew=max([LeftTop(1,2),LeftBottom(1,2),RightTop(1,2),RightBottom(1,2)])-min([LeftTop(1,2),LeftBottom(1,2),RightTop(1,2),RightBottom(1,2)]);
% 分配新顯示區域矩陣
ImageNew=zeros(round(Xnew),round(Ynew))+255;
%計算原圖像各像素的新坐標
for indexX=0:(X-1)
for indexY=0:(Y-1)
ImageNew(round(indexX*cos(Angle)-indexY*sin(Angle))+round(abs(min([LeftTop(1,1),LeftBottom(1,1),RightTop(1,1),RightBottom(1,1)])))+1,1+round(indexX*sin(Angle)+indexY*cos(Angle))+round(abs(min([LeftTop(1,2),LeftBottom(1,2),RightTop(1,2),RightBottom(1,2)]))))=Image(indexX+1,indexY+1);
end
end
%顯示
subplot(2,1,2);
imshow((ImageNew)/255)
promp=['旋轉角度為:' int2str(angle) '的圖像']
title(promp);
%圖像縮放
function y=resize(a,mul,type)
%****************************************************
%a:輸入圖像灰度值
%mul:縮放倍數
%type:1表示最鄰近法,2表示雙極性插值法
%畫出縮放後圖像並返回其灰度值
%****************************************************
[m,n]=size(a);
m1=m*mul;n1=n*mul;
%****************************************************
if type==1
for i=1:m1
for j=1:n1;
b(i,j)=a(round(i/mul),round(j/mul));
end
end
elseif type==2
for i=1:m1-1
for j=1:n1-1;
u0=i/mul;v0=j/mul;
u=round(u0);v=round(v0);
s=u0-u;t=v0-v;
b(i,j)=(a(u+1,v)-a(u,v))*s+(a(u,v+1)-a(u,v))*t+(a(u+1,v+1)+a(u,v)-a(u,v+1)-a(u+1,v))*s*t+a(u,v);
end
end
end
%*****************************************************
b=uint8(b);
imshow(b);
title('處理後圖像');
y=b;
Ⅷ 如何用C語言實現圖像平移
請檢查一下你提出問題的文字是否敘述正確
請您詳細的說說你電腦目前出現哪些問題呢,這樣我才能根據您的問題,給出針對性的解決方案,所以請補充一下你的提問吧。
Ⅸ matlab 圖像平移
%圖像平移(1)
F=imread('p2.bmp');
se = translate(strel(1), [0 20]);
%參數[0 20]可以修改,修改後平移距離對應改變
J = imdilate(F,se);
figure;
imshow(J,[]);title('右移後圖形');
%圖像平移(2)
function outImage=immove(inImage,Tx,Ty)
[m, n] = size(inImage);
Tx=fix(Tx);
Ty=fix(Ty);
%move x
if (Tx<0)
inImage=imcrop(inImage,[abs(Tx),1,m-abs(Tx),n]);
[m, n] = size(inImage);
Tx=0;
end
%move y
if (Ty<0)
inImage=imcrop(inImage,[1,abs(Ty),m,n-abs(Ty)]);
[m, n] = size(inImage);
Ty=0;
end
outImage = zeros(m+Ty, n+Tx);
outImage(1+Ty:m+Ty,1+Tx:n+Tx) = inImage;
%圖像旋轉
%X,Y為其行列數
Image=imread('02.jpg');
Image=rgb2gray(Image);
angle=30;
%角度任意的一個數 表示30度
pai=3.14;
Angle=pai*angle/180;
%轉換一下角度的表示方法。
[X,Y]=size(Image);
%原圖顯示
subplot(2,1,1);
imshow(Image);
title('原圖像');
%計算四個角點的新坐標,確定旋轉後的顯示區域
LeftTop(1,1)=-(Y-1)*sin(Angle);
LeftTop(1,2)=(Y-1)*cos(Angle);
LeftBottom(1,1)=0;
LeftBottom(1,2)=0;
RightTop(1,1)=(X-1)*cos(Angle)-(Y-1)*sin(Angle);
RightTop(1,2)=(X-1)*sin(Angle)+(Y-1)*cos(Angle);
RightBottom(1,1)=(X-1)*cos(Angle);
RightBottom(1,2)=(X-1)*sin(Angle);
%計算顯示區域的行列數
Xnew=max([LeftTop(1,1),LeftBottom(1,1),RightTop(1,1),RightBottom(1,1)])-min([LeftTop(1,1),LeftBottom(1,1),RightTop(1,1),RightBottom(1,1)]);
Ynew=max([LeftTop(1,2),LeftBottom(1,2),RightTop(1,2),RightBottom(1,2)])-min([LeftTop(1,2),LeftBottom(1,2),RightTop(1,2),RightBottom(1,2)]);
% 分配新顯示區域矩陣
ImageNew=zeros(round(Xnew),round(Ynew))+255;
%計算原圖像各像素的新坐標
for indexX=0:(X-1)
for indexY=0:(Y-1)
ImageNew(round(indexX*cos(Angle)-indexY*sin(Angle))+round(abs(min([LeftTop(1,1),LeftBottom(1,1),RightTop(1,1),RightBottom(1,1)])))+1,1+round(indexX*sin(Angle)+indexY*cos(Angle))+round(abs(min([LeftTop(1,2),LeftBottom(1,2),RightTop(1,2),RightBottom(1,2)]))))=Image(indexX+1,indexY+1);
end
end
%顯示
subplot(2,1,2);
imshow((ImageNew)/255)
promp=['旋轉角度為:' int2str(angle) '的圖像']
title(promp);
%圖像縮放
function y=resize(a,mul,type)
%****************************************************
%a:輸入圖像灰度值
%mul:縮放倍數
%type:1表示最鄰近法,2表示雙極性插值法
%畫出縮放後圖像並返回其灰度值
%****************************************************
[m,n]=size(a);
m1=m*mul;n1=n*mul;
%****************************************************
if type==1
for i=1:m1
for j=1:n1;
b(i,j)=a(round(i/mul),round(j/mul));
end
end
elseif type==2
for i=1:m1-1
for j=1:n1-1;
u0=i/mul;v0=j/mul;
u=round(u0);v=round(v0);
s=u0-u;t=v0-v;
b(i,j)=(a(u+1,v)-a(u,v))*s+(a(u,v+1)-a(u,v))*t+(a(u+1,v+1)+a(u,v)-a(u,v+1)-a(u+1,v))*s*t+a(u,v);
end
end
end
%*****************************************************
b=uint8(b);
imshow(b);
title('處理後圖像');
y=b;
打字不易,如滿意,望採納。
Ⅹ matlab關於圖像平移的一小段代碼,求大神每句幫忙解釋下,謝謝啦!
f=imread('hehua1.bmp');%讀圖片
[m,n,x]=size(f);%求圖的維數
f=double(f);%轉化為雙精度數據
for i=1:20 %平移10次
mx=10*i;%x軸平移量,像素數
my=10*i;%y軸平移量,像素數
g=zeros(m,n,x)+255;%背境設為白色
g(mx+1:m,my+1:n,1:x)=f(1:m-mx,1:n-my ,1:x);%平移,取原圖左上角賦給新圖,原圖坐標減少,像素減少,看起來新圖向右下平移
%g(1:m-mx,1:n-my ,1:x)=f(mx+1:m,my+1:n,1:x);%平移,取原圖右下角賦給新圖,原圖坐標增加,像素增加,看起來新圖向左上平移
figure;%生成一個圖窗
%imshow(g);%顯示雙精數據圖形
imshow(uint8(g));%雙精轉為uint8,再顯示圖形
end