小算法(求一个角)

来源:百度知道 编辑:UC知道 时间:2024/06/17 11:29:16
给点两点a(x1,y1) b(x2,y2)
给定一点c(x,y)
求角cab的度数A
要求用坐标表示
既A=f(x1,y1,x2,y2,x,y)
谢谢啊!!

tan∠ACX=(y1-y)/(x1-x)
tan∠BCX=(y2-y)/(x2-x)

tan∠ACB=tan(∠ACX-∠BCX)
=[(y1-y)/(x1-x)-(y2-y)/(x2-x)]/[1+(y1-y)/(x1-x)*(y2-y)/(x2-x)]
=[(x2-x)(y1-y)-(x1-x)(y2-y)]/[(x1-x)(x2-x)+(y1-y)(y2-y)]

A=arctan{[(x2-x)(y1-y)-(x1-x)(y2-y)]/[(x1-x)(x2-x)+(y1-y)(y2-y)]}.

此角的两条夹线为ca和ab
sin ca=(X1-X)/(Y1-Y)
sin ab=(X2-X1)/(Y2-Y1)
角度为 arcsin ca减去arcsin ab的值