三角函数的局限和改进思路

1. 三角函数的局限

1.1 三角函数概算
三角函数(trigonometric function)是从直角三角形发展起来的一种角度和边的对应关系。常见的三角函数有sin、cos、tan三个函数,反三角函数有arcsin、arccos、arctan三个反三角函数(反三角函数也有写为sin-1、cos-1、tan-1方式,表示相反的计算,可以通过三角函数值反算出对应的角度)。
三角形的任意一个角度的范围是(0°,180°),可以完美的解决三角形的角度和边的计算关系。
1.2 三角函数的局限
其局限性在于,我们在2D应用中,经常会在[0°,360°)的范围内需要使用三角函数,而此时会出现两个角度的三角函数是一样的,对应的一个超过180的角度在计算反三角函数时也无法达到我们的预期。
正弦函数及反正弦函数
1.3 局限性分析
三角函数的局限就在于它的角度范围在计算超过180°时出现的不能一一对应的关系,我们经常需要进行其他判断后才能准确知道在2D环境下其对应的真实角度。
如:
cos(60°)=0.5,arccos(0.5)=60°
cos(300°)=0.5, arcsin(0.5)=60°
但是我们在程序中经常需要使用整个圆角角度,为减少复杂性,建议将【三角函数】升级为【圆角函数】

2. 圆角函数的设计思路

2.1 在2D空间中,三角函数值隐藏了x y的部分正负属性。造成这种根本原因是我们已经习惯认为“负负得正”。
其实,(-3)×(-3) =?= 3 × 3 是一个不太严谨的说法。
要保留x y的方向,最简单的办法就是圆角函数不要采用x和y之间的计算值,而是直接采用x和y。
在许多新的语言中,都有(x,y)元数据格式,但是在传统计算机语言中,并没有这种格式。
为此,本例程采用QT中的QPoint来作为三角函数的输入值。建立QPoint和角度之间的关系。
2.2 圆心角的单位
角度(Agree)有两种表示方式Degrees和Radians,考虑到我们在程序中0°、90°、180°、270°,分别对应前后左右,会经常用到。而这四个方向的角度用弧度表示并不是很方便,所以我们建立的圆角函数直接使用度数。
2.3 本例程直接利用qt中作为依托,x,y类型为qreal缺省等同于double,角度采用double。

3. 函数设计

3.1 函数名设置
新词汇:圆角函数 Circlemetric Functions
函数名:DegreesToPoint、PointToDegrees两个函数名。
返回的点坐标均位于半径为“1”的圆上。
返回角度范围为[0, 360°)
3.2 函数体

/***
使用到的qt中的三角函数
qreal	qSin(qreal v)
qreal	qCos(qreal v)
qreal	qTan(qreal v)
qreal	qASin(qreal v)
qreal	qACos(qreal v)
qreal	qATan(qreal v)
***/

#include <QtMath>
QPointF	DegreesToPoint(double degrees);
double	PointToDegrees(QPointF pos);

QPointF	DegreesToPoint(double degrees)
{
   
	while (degrees < 0.0) degrees += 360.0;
    while (degrees >
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值