正弦函式的畫法

2021-04-22 07:34:25 字數 3410 閱讀 2996

option explicit

dim intrate%, intdeg%, m!, n!

'intrate表示速度 ,intdeg表示sin(x)中x的角度 ,n表示幅值放大的倍數,m表示sin(x)的函式週期倍數

private sub command1_click()

call drawaxis(picture1)

timer1.enabled = true

command2.caption = "停止"

command1.enabled = false

end sub

private sub command2_click()

if command2.caption = "停止" then

command2.caption = "繼續"

timer1.enabled = false    ' 關閉時鐘控制項

elseif command2.caption = "繼續" then

command2.caption = "停止"

timer1.enabled = true

end if

end sub

private sub command3_click()

unload me

end sub

private sub form_load()

timer1.interval = 50

timer1.enabled = false

option1(1).value = true

option2(1).value = true

option3(1).value = true

m = 1

n = 1

end sub

private sub form_unload(cancel as integer)

timer1.enabled = false

end sub

private sub drawaxis(picx as picturebox)         '自定義繪製座標軸過程

dim x1%, y1%, x2%, y2%, y%

picx.backcolor = vbwhite        '置框背景色

picx.cls                         ' 清屏

picx.drawstyle = 0              '置框為畫實線

x1 = 120                        ' 第一點的橫座標

y2 = 120                        '第二點的縱座標

y1 = picx.scaleheight - 120     '第一點的縱座標

x2 = picx.scalewidth - 120      ' 第二點的橫座標

y = picx.scaleheight / 2

picx.line (x1, y1)-(x1, y2), qbcolor(0)   ' 畫y軸,自下而上

picx.line (x1, y)-(x2, y), qbcolor(0)     ' 畫x軸,自左向右

picx.line (x1 - 50, y2 + 50)-(x1, y2), qbcolor(0) '畫y軸箭頭

picx.line (x1 + 50, y2 + 50)-(x1, y2), qbcolor(0)

picx.currentx = 300

picx.currenty = 200

picx.print "y軸"

picx.line (x2 - 50, y + 50)-(x2, y), qbcolor(0) '畫x軸箭頭

picx.line (x2 - 50, y - 50)-(x2, y), qbcolor(0)

picx.currentx = x2 - 200

picx.currenty = y + 200

picx.print "x軸"

end sub

private sub option1_click(index as integer)

select case index

case 0

m = 0.5    ' 放大一倍

case 1

m = 1      ' 幅值不變

case 2

m = 2      ' 縮小一倍

end select

end sub

private sub option2_click(index as integer)

select case index

case 0

n = 2    ' 幅值放大一倍

case 1

n = 1      ' 幅值不變

case 2

n = 0.5   ' 幅值縮小一倍

end select

end sub

private sub option3_click(index as integer)

'改變迴圈語句的迴圈次數以調整繪製速度

select case index

case 0            ' 快速

intrate = 20

case 1

intrate = 8    '  中速

case 2

intrate = 2    '慢速

end select

end sub

private sub timer1_timer()

dim x%, y%, i%, scaly%

scaly = (picture1.scaleheight - 120) / 4          ' 訊號最大值

for i = 1 to intrate

picture1.currentx = 120                          ' 獲取原點的座標

picture1.currenty = (picture1.scaleheight) / 2

x = intdeg / 180 * scaly                          ' 取畫點的x座標

y = sin(m * intdeg * 3.141593 / 180) * n * scaly  ' 取畫點的y座標

picture1.pset step(x, -y), vbblue

intdeg = intdeg + 1

if picture1.currentx > picture1.scalewidth - 120 then

intdeg = 0

command2.value = true             ' 相當於按了 command2按鈕

command1.enabled = true          ' 相當於按了 command1按鈕

end if

next

end sub

線段的畫法

在畫線段時,應該把線段理解成向量,因為線段也是有大小,有方向。並且建立乙個線段的類,因為每條線段都是不同的物件。線段類的x,y屬性就是線段的起點,再新增兩個屬性,記錄線段的終點。下面是乙個簡單的例子,在實際開發時,要把線段單獨作為乙個型別來處理。如下 package public function ...

正弦函式及其FFT變換 二

fft變換,其實就是快速離散傅利葉變換,傅利葉變換是數字訊號處理領域一種很重要的演算法。要知道傅利葉變換演算法的意義,首先要了解傅利葉原理的意義。傅利葉原理表明 任何連續測量的時序或訊號,都可以表示為不同頻率的正弦波訊號的無限疊加。而根據該原理創立的傅利葉變換演算法利用直接測量到的原始訊號,以累加方...

go語言系列 輸出正弦函式

庫與包之間的理解可以模擬成 資料庫種的庫和表 庫名作用 image 常見圖形格式的訪問及生成 log日誌記錄庫 math 數學庫os 作業系統平台不依賴平台操作封裝 檢視庫與包的幫助文件 package main import image image color image png log math...