您的位置:首页 > 其它

取平面坐标相对角度(0-359度)及两角的相对角偏移量的函数

2009-09-27 04:33 288 查看
Public Function AngleOffsetValue(ByRef pAngleSur As Double, ByRef pAngleDes As Double) As Double
'AngleOffsetValue函数
'格式:    [tOutAngle] = AngleOffsetValue(pAngleSur, pAngleDes)
'功能:    取得源点与目的点的角度
'参数:    pAngleSur   double  源角
'         pAngleDes   double  目的角
'返回:    tOutAngle   double  目的角相对于源角的角度,范围0-90。

Dim tOutAngle As Double

Dim tAngleAbs As Double
Dim tAngleAdd As Integer

tAngleAbs = pAngleDes - pAngleSur
tAngleAdd = (((tAngleAbs > 270) And -360) Or ((tAngleAbs < -270) And 360))

tOutAngle = tAngleAbs + tAngleAdd

AngleOffsetValue = tOutAngle
End Function

Public Function AngleGetByPoint(ByRef pSurX As Double, ByRef pSurY As Double, ByRef pDesX As Double, ByRef pDesY As Double) As Double
'AngleGetByPoint函数
'格式:    [tOutAngle] = AngleGetByPoint(pSurX, pSurY, pDesX, pDesY)
'功能:    取得源点与目的点的角度
'参数:    pSurX       double  源点X坐标
'         pSurY       double  源点Y坐标
'         pDesX       double  目的点Y坐标
'         pDesY       double  目的点Y坐标
'返回:    tOutAngle   double  目的点相对于源点的角度,范围0-359。
Dim tOutAngle As Double

Dim tOffsetX(1) As Double, tOffsetY(1) As Double

Dim tQuad_Code As Byte, tQuad_Code_NoExt As Byte, tQuad_Code_Index As Byte

Dim tAngle_Offset As Integer, tAngle_Offset_List() As Byte
Dim tAngle_Multi As Integer, tAngle_Multi_List() As Byte

Dim tAngle_Sur(1) As Double

tOffsetY(0) = 1: tOffsetX(1) = pSurX - pDesX: tOffsetY(1) = pSurY - pDesY

'象限编码器
tQuad_Code = (CBool(tOffsetX(1)) And 8) Or (CBool(tOffsetY(1)) And 4) Or ((tOffsetX(1) > 0) And 2) Or ((tOffsetY(1) > 0) And 1)
tQuad_Code_NoExt = ((tQuad_Code And 12) = 12) And 1
tQuad_Code_Index = tQuad_Code * 2

'角偏移解码器
tAngle_Offset_List() = "4444644454746468"
tAngle_Offset = (tAngle_Offset_List(tQuad_Code_Index) - 52) * 90

'角符号解码器
tAngle_Multi_List() = "1111111111110000"
tAngle_Multi = (tAngle_Multi_List(tQuad_Code_Index) - 49)

tAngle_Sur(1) = Atn(tOffsetX(tQuad_Code_NoExt) / tOffsetY(tQuad_Code_NoExt)) * 57.2957795130823

tOutAngle = tAngle_Sur(tQuad_Code_NoExt) * tAngle_Multi + tAngle_Offset

AngleGetByPoint = tOutAngle
End Function
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐