游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3964|回复: 8

求一个算角度的 C函数 或者 C程序

[复制链接]

53

主题

419

帖子

451

积分

中级会员

Rank: 3Rank: 3

积分
451
发表于 2005-7-20 22:20:00 | 显示全部楼层 |阅读模式
求一个算角度的 C函数 或者 C程序,各位大大帮助,谢谢

类似这样的函数
int X_a(int X1,int Y1,int X2,int Y2)     //(x1,y1)是A点的坐标,  (x2,y2)是B点的坐标
{
...
}

如图显示空间上有A和B两个点,以A为圆心,AB是圆的半径,C是圆上一点,并且AC是平行线,求角CAB的角度

[em10] [em1] [em3]
sf_2005720222024.jpg

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-7-20 23:06:00 | 显示全部楼层

Re:求一个算角度的 C函数 或者 C程序

AC . AB = cos(CAB)

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-7-20 23:16:00 | 显示全部楼层

Re:求一个算角度的 C函数 或者 C程序

伪代码
float GetCAB(VECTOR C,A,B)
{
     VECTOR AC = C-A;
     VECTOR AB = B-A;
     |AC|;|AB|;//规范化两个矢量
     float CosCAB = AC.AB;//算点积
     return aCos(CosCAB);//反余弦函数求出角度。
}

8

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
发表于 2005-7-21 17:24:00 | 显示全部楼层

Re:求一个算角度的 C函数 或者 C程序

搞得那么复杂。
B到直线AC的距离就是|Y2|,两点间距离|AB|求出来。然后arcsin(|y2|/|AB|),求出来根据B点的坐标确定象限,变换角度。

11

主题

123

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2005-7-21 18:01:00 | 显示全部楼层

Re:求一个算角度的 C函数 或者 C程序

  VECTOR AC = C-A;
     VECTOR AB = B-A;
     |AC|;|AB|;//规范化两个矢量
     float CosCAB = AC.AB;//算点积

点积除以绝对值 ,就是角度

53

主题

419

帖子

451

积分

中级会员

Rank: 3Rank: 3

积分
451
 楼主| 发表于 2005-7-21 20:19:00 | 显示全部楼层

Re:求一个算角度的 C函数 或者 C程序

谢谢楼上几位
除了用矢量其他方法可以吗?比如就用三角函数算,怎么实现呢?

类似这样的函数,给你4和值返回一个角度
int X_a(int X1,int Y1,int X2,int Y2)   //(x1,y1)是A点的坐标,  (x2,y2)是B点的坐标
{
...
}

希望大家多题题建议,我是初学者,鞠躬

3

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2005-7-21 20:27:00 | 显示全部楼层

Re:求一个算角度的 C函数 或者 C程序

拜托你告诉我你的,x1,y1.x2.y2代表是什么?
定一个角度,起码给3个坐标,6个参数吧

53

主题

419

帖子

451

积分

中级会员

Rank: 3Rank: 3

积分
451
 楼主| 发表于 2005-7-21 22:18:00 | 显示全部楼层

Re: Re:求一个算角度的 C函数 或者 C程序

游侠无极限: Re:求一个算角度的 C函数 或者 C程序

拜托你告诉我你的,x1,y1.x2.y2代表是什么?
定一个角度,起码给3个坐标,6个参数吧


(x1,y1)是A点的坐标,  (x2,y2)是B点的坐标 [em3]

1

主题

130

帖子

134

积分

注册会员

Rank: 2

积分
134
发表于 2005-7-22 02:40:00 | 显示全部楼层

Re:求一个算角度的 C函数 或者 C程序

(y2-y1)/(x2-x1),排除掉x2=x1的情况后,用查表法,如果用反三角来算,效率上达不到
我就是用这个方法的,在网游中,比如弓箭手向某方向射一支箭,如果服务器不计算,很容易出现全屏打怪的外挂,如果要计算,一个网游在一个时间要处理多少支箭呀,我把360度分成了36个区间,先由结果得到是哪个区间,然后比较一下这区间的9个值就可以得出来角度范围
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-26 11:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表