VB中三角函数计算
VB中反三角函数的计算By? colleen 发表于 2007-3-28 14:20:06?
VB中反三角函数的计算问题,但由于马上就要上课了,而且自己对VB中的反三角函数也不够熟悉,所以决定和他一起在课后探讨。现在经过整理,大致如下:
Atn()是VB反正切函,VB不提供其他反三角函,不可以用下列公式出:
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))
以上这些公式,其实就是应用了数学中的各类三角函数和正切函数之间的关系导出的。其中需要注意的是其中的 X 不能等于正1。由于最近工作忙,多日未打理博客了,故今日有闲,发一个VB调用API涵数画正弦波的代码供大家参考.
代码如下:
Option ExplicitDim Points() As POINTAPIDim NumPoints As IntegerDim ZanTin1Dim apik1Dim apik2Dim VConst pi = 3.14159265358979Private Type POINTAPI??????? x As Long??????? y As Long??? End Type?? Private Declare Function Polyline Lib "gdi32" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As LongPrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)Select Case ButtonCase 1ReDim Points(0 To 2)V = 100Picture1.ClsZanTin1 = Trueapik1 = 0Do While ZanTin1apik1 = apik1 + 1NumPoints = 2apik2 = (Sin(pi / 180 * apik1)) * VPoints(1).x = apik1 - 1Points(2).x = apik1Points(1).y = 200 - apik2Points(2).y = 200 - apik2If Polyline(Picture1.hdc, Points(1), NumPoints) = 0 Then Exit SubIf apik1 > 742 ThenZanTin1 = FalseEnd IfDoEventsLoopCase 2EndEnd SelectEnd Sub
这只是一个例子,将此段代码稍微修改一下,也可画方波,阶梯波,三角波,和任意曲线,特别适用于对记录画线速度有要求的场合.如虚拟示波器.记录仪表等...
看这段代码:
Private Sub Command1_Click()
Shell "control.exe"
End Sub
一个简单的按钮,执行一句shell,就打开了控件面板。
如果我们这样子做写,也打开了控件面板:
Shell "rundll32.exe Shell32.dll,Control_RunDLL", 1
看到了,这便是系统调用,比用API函数好用多了。
当然,如果想打开控件面板中相应的内容,则可以这样子写:
Shell "rundll32.exe Shell32.dll,Control_RunDLL appwiz.cpl"
说明:appwiz.cpl是添加删除文件组件,是专用控件面板打开。你完全可以找出系统所有的cpl文件,试着用此法调用。当然,你想更简单写,就这样子:
shell "control.exe appwiz.cpl"
因为,cpl文件专用control.exe打开。下面,我们要想打C盘,则这样写:
Shell "explorer.exe c:", 1
explorer.exe是资源管理器程序,他可以打开所有windows里的文件夹。如果要打开并