sin(角度值)同理cos,tan
師宗網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),師宗網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為師宗成百上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個售后服務(wù)好的師宗做網(wǎng)站的公司定做!
Atn()是VB反正切函數(shù),VB不提供其他反三角函數(shù),不過可以用下列公式導(dǎo)出:
Inverse
Sine
(反正弦):
Arcsin(X)
=
Atn(X
/
Sqr(-X
*
X
+
1))
Inverse
Cosine
(反余弦):
Arccos(X)
=
Atn(-X
/
Sqr(-X
*
X
+
1))
+
2
*
Atn(1)
Inverse
Secant
(反正割):
Arcsec(X)
=
Atn(X
/
Sqr(X
*
X
-
1))
+
Sgn((X)
-
1)
*
(2
*
Atn(1))
Inverse
Cosecant
(反余割):
Arccosec(X)
=
Atn(X
/
Sqr(X
*
X
-
1))
+
(Sgn(X)
-
1)
*
(2
*
Atn(1))
以上這些公式,其實就是應(yīng)用了數(shù)學(xué)中的各類三角函數(shù)和正切函數(shù)之間的關(guān)系導(dǎo)出的。其中需要注意的是其中的
X
不能等于正負1。(引用-_-)
x都是弧度制
有幾個地方要注意:
1、VB中的三角函數(shù)的角度全部是用弧度制表示的,如果是度數(shù)的話,應(yīng)先乘以180再除以π轉(zhuǎn)成弧度,再用函數(shù)計算結(jié)果。
2、VB中直接支持的三角函數(shù)有:Sin()、Cos()、Tan(),如果涉及到其它三角函數(shù),可以從下面列出的代碼中自己選擇相應(yīng)的函數(shù):
Function
Sec(X)
As
Double
'正割
Sec
=
1
/
Cos(Angle)
End
Function
Function
Csc(X)
As
Double
'余割
Csc
=
1
/
Sin(Angle)
End
Function
Function
Cot(X)
As
Double
'余切
Cot
=
1
/
Tan(Angle)
End
Function
Function
ArcSin(X)
As
Double
'反正弦
ArcSin
=
Atn(X
/
Sqr(-X
*
X
+
1))
End
Function
Function
ArcCos(X)
As
Double
'反余弦
ArcCos
=
Atn(-X
/
Sqr(-X
*
X
+
1))
+
2
*
Atn(1)
End
Function
Function
ArcSec(X)
As
Double
'反正割
ArcSec
=
Atn(X
/
Sqr(X
*
X
-
1))
+
Sgn((X)
-
1)
*
(2
*
Atn(1))
End
Function
Function
ArcCsc(X)
As
Double
'反余割
ArcCsc
=
Atn(X
/
Sqr(X
*
X
-
1))
+
(Sgn(X)
-
1)
*
(2
*
Atn(1))
End
Function
Function
ArcCot(X)
As
Double
'反余切
ArcCot
=
Atn(X)
+
2
*
Atn(1)
End
Function
Function
HSin(X)
As
Double
'雙曲正弦
HSin
=
(Exp(X)
-
Exp(-X))
/
2
End
Function
Function
HCos(X)
As
Double
'雙曲余弦
HCos
=
(Exp(X)
+
Exp(-X))
/
2
End
Function
Function
HTan(X)
As
Double
'雙曲正切
HTan
=
(Exp(X)
-
Exp(-X))
/
(Exp(X)
+
Exp(-X))
End
Function
Function
HSec(X)
As
Double
'雙曲正割
HSec
=
2
/
(Exp(X)
+
Exp(-X))
End
Function
Function
HCsc(X)
As
Double
'雙曲余割
HCsc
=
2
/
(Exp(X)
-
Exp(-X))
End
Function
Function
HCot(X)
As
Double
'雙曲余切
HCot
=
(Exp(X)
+
Exp(-X))
/
(Exp(X)
-
Exp(-X))
End
Function
Function
HArcsin(X)
As
Double
'反雙曲正弦
HArcsin
=
Log(X
+
Sqr(X
*
X
+
1))
End
Function
Function
HArccos(X)
As
Double
'反雙曲余弦
HArccos
=
Log(X
+
Sqr(X
*
X
-
1))
End
Function
Function
HArctan(X)
As
Double
'反雙曲正切
HArctan
=
Log((1
+
X)
/
(1
-
X))
/
2
End
Function
Function
HArcsec(X)
As
Double
'反雙曲正割
HArcsec
=
Log((Sqr(-X
*
X
+
1)
+
1)
/
X)
End
Function
Function
HArccsc(X)
As
Double
'反雙曲余割
HArccsc
=
Log((Sgn(X)
*
Sqr(X
*
X
+
1)
+
1)
/
X)
End
Function
Function
HArccot(X)
As
Double
'反雙曲余切
HArccot
=
Log((X
+
1)
/
(X
-
1))
/
2
End
Function
為什么我的不是?
Dim?pi
pi?=?3.1415926
Dim?a
a?=?30
Text1.Text?=?Sin(a?*?pi?/?180)
一般都是用角度值求三角函數(shù),需要把角度值換算成弧度值。代碼如下:
Dim a
Dim pin As Double
Private Sub Form_Load()
pin = 3.14159265358979
End Sub
Private Sub Command1_Click() '求sin按鍵
a = Sin((Tex_in) * 2 * pin / 360)
Tex_out = a
End Sub
Private Sub Command2_Click() ' 求cos按鍵
a = Cos((Tex_in) * 2 * pin / 360)
Tex_out = a
End Sub
在寫代碼之前,我們需要知道標準的正弦函數(shù)(以下稱為sin函數(shù)),最大值是1,最小值是-1,幾個關(guān)鍵點是0,±n*π/2,±n*π,而且它是周期性的,我們不可能讓VB真的無限畫下去,只需要在可見的窗體上繪制就行了。說sin的概念是為了確定坐標系,因為sin最大值也只有1,所以我們要放大它的值,以便顯示最好的效果,如果不確定坐標系,可能畫出來一條近似直線的波浪線。
首先,在Form_Load的事件里面寫好坐標系,如果自己邏輯好這步確實可以不做,但是不做的結(jié)果就是需要寫代碼的人自己考慮偏移量,所以定好坐標系之后,寫的函數(shù)就簡單直觀許多了。自定義坐標系的方法是:scale(x1,y1)-(x2,y2).
第二,開始寫sin的函數(shù),可以寫在模塊里面,也可以直接在窗體代碼區(qū)寫,寫模塊是為了以后調(diào)試方便,如果只是為了顯示標準的sin函數(shù),在窗體寫也可以。定義幾個雙精度付典型的變量y,x ?,函數(shù)關(guān)系是y=sin(x)
第三,繪制一個點,當然是sin上的點。第二步已經(jīng)獲得了x和y,正好是橫坐標和縱坐標,我們?yōu)榱俗屒€平滑一些,可以Line方法,因為真的畫點十分吃內(nèi)存,比較卡,也就是我們畫線不畫點(很短很短的先近似于點),方法是Line (x1,y1)-(x2,y2)
最后,套用循環(huán)語句輸出,其實說這是最后也不太合適,這部其實是套在第三步和第二步之外的,也就是確定x軸顯示區(qū)間和曲線平滑度的作用。
'代碼
Private?Sub?Form_Load()
Me.AutoRedraw?=?True????????????'開啟自動重繪
Form1.Height?=?2400?????????????'自定義窗體高度
Form1.Width?=?8000??????????????'自定義窗體寬度
Scale?(-16,?1.2)-(16,?-1.2)?????'自定義坐標系
Line?(-16,?0)-(16,?0)???????????'繪制X軸
Line?(0,?1.2)-(0,?-1.2)?????????'繪制Y軸
End?Sub
Private?Sub?Command1_Click()
Line?(-16,?Sin(-16))-(-16,?Sin(-16))??'畫起始點
Dim?x?As?Double?????????????????'定義x
Dim?y?As?Double?????????????????'定義y
For?i?=?-16?To?16?Step?0.1??????'step越小,曲線越平滑
x?=?i
y?=?Sin(x)
Line?-(x,?y)????????????????'連接上一個點
Next?i
End?Sub