首页
社区
课程
招聘
根据A、B两点X,Y坐标算出角度的VB写法
发表于: 2015-11-1 14:11 7765

根据A、B两点X,Y坐标算出角度的VB写法

2015-11-1 14:11
7765
我想根据A、B两点X,Y坐标算出角度1-360度的VB写法

以下写法获得的结果是
12点方向是90度、
3点方向是0、
6点方向是-90、
9点方向是0.
如何修改成我想要的效果?
Text1.Text = PointToDegree(ax - bx, ay - by)

Function PointToDegree(ByVal x As Double, ByVal y As Double) As Double
    Const PI As Double = 3.14159265359
    Dim Hyp As Double
    Hyp = Sqr(x * x + y * y)
    PointToDegree = Asin(y / Hyp) * 180 / PI
End Function
Function Asin(ByVal Number As Double) As Double
    Asin = Atn(Number / Sqr(-Number * Number + 1))
End Function

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
减90.。。
2015-11-1 15:54
0
雪    币: 269
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
请问哪里减90
2015-11-1 21:07
0
雪    币: 114
活跃值: (72)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
4
自己回去复习下三角函数,弄出一个正确的公式再说。你的算法本身就是错的
你代码中用的是arcsin,arcsin 能还原角度吗?????!!!!!!!!!!!
sin0° = sin 180° = 0 , sin90°  = 1, sin 270° = -1

这一句毛病也很大,Atn(Number / Sqr(-Number * Number + 1))
万一Number等于1,这句代码就变成 Atn(1/0)了。
2015-11-1 23:18
0
雪    币: 269
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这一句毛病也很大,Atn(Number / Sqr(-Number * Number + 1))
万一Number等于1,这句代码就变成 Atn(1/0)了。

说的很对 这问题已经出现了
2015-11-2 02:58
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
Text1.Text = Atn((by-ay)/(bx-ax))
2015-12-23 09:44
0
雪    币: 517
活跃值: (35)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
1、VB坐标系与数学坐标系不尽相同,需要转换。
2、任一反三角函数均不能求出0-360范围内的角,至少需要俩函数配合。为方便计算,可采用反正弦和反余弦。可根据两函数值的符号分别讨论求值。
2015-12-24 16:25
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
注意这张图,如果让X轴与0度重合,Y轴与90度重合,那么所有数学上的三角关系都是成立的,算出的角度就是方位角。只不过横轴是北,纵轴是东,看着有点别扭。
2015-12-25 19:58
0
雪    币: 12502
活跃值: (5243)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
如果有易语言代码也不错哟,可以学习
2015-12-25 20:40
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
判断一下 ax=bx  还有 by=ay 的情况。。就能得到  0 ,90, 180 ,270 ,这4个角度

判断一下 bx-ax 的符号 by-ay 的符号 计算 象限
2015-12-27 22:35
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
判断一下 ax=bx  还有 by=ay 的情况。。就能得到  0 ,90, 180 ,270 ,这4个角度

判断一下 bx-ax 的符号 by-ay 的符号 计算 象限
2015-12-27 22:56
0
雪    币: 23
活跃值: (198)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
用测量学的公式最简单。
VB代码,已知两点1(x1,x2,),2(x2,x2)坐标求方位角。
Function Pol(x1 As Double, y1 As Double, x2 As Double, y2 As Double) As Double '计算直线的方位角

   
    Dim Sub_x As Double
   
    Sub_x = x2 - x1 + 0.0000000001
   
    Pol = PI - Sgn(Sub_x) * PI / 2 - Atn((y2 - y1) / Sub_x)
End Function
上为从正北方向开始测量顺时针方位角。
2016-3-29 19:42
0
游客
登录 | 注册 方可回帖
返回
//