三角函数最快的计算方法

我找到了一种计算公式,是用泰勒级数的:
sin x = (x^1 / 1!) - (x^3 / 3!) + (x^5 / 5!) - ……
但是它的收敛速度很慢,我想问一下除此之外还有没有别的计算公式?
还有谁知道微软的那个sin()是怎么计算的,好像精度很高的样子。
我是学游戏编程的,代码的执行速度对一个游戏来说是至关重要的,而三角函数在游戏中是无处不在的。如果有什么高效的算法,或是硬件指令将对性能有很大的提高。谁知道有什么汇编硬件指令?还有用法

我想不会,现在有不少CPU支持三角函数硬件指令了,如:FSIN,而C++支持内联汇编,计算三角函数将不会成为问题了。主流公司一定会有自己的一个游戏引擎,而且99%都是数学运算,这些运算并不想20世纪时那么简单了,里面充斥着高深的高等代数,微积分,向量……

我数学不行,我不知道有没有别的公式,但是我也曾经想过,我猜想现有的三角函数计算应该用的就是泰勒展开。也许你是学数学的吧,你可能觉得他收敛慢,但是对一般应用来说,精度不必太高,他的收敛也足够快了吧。而且阶乘不是应该比指数增长的快的多吗?所以我觉得他的收敛也挺快的啊

关键的一点,我是学计算机的,所以我可以肯定的告诉你:你不能如此低估我们现在计算机的CPU。你看那个公式,对于每一项,针对上一项,我们要算的只是把分子乘以x^2,分母也是乘以两个数,最后再做一次除法和加法,这种运算量是很小的。在1微秒内,这种运算都可以算很多很多次,足以达到你看到的精度。
=======================================================
原来如此。那你应该很清楚,一个普通的计算器是不会做那么多性能的优化的,况且计算器虽然精度高,但游戏中应该没有必要算到小数点后很多位吧。
你说的都有道理,但是很抱歉,我不做游戏,也离硬件很远,所以帮不到你了。不过正好请教一下,游戏开发中,三角函数(包括开平方的那些运算)真的会成为性能瓶颈么?那当今主流的游戏公司是不是都会有一套自己的数学函数库?
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-09-26
正弦函数 sinθ=y/r

余弦函数 cosθ=x/r

正切函数 tanθ=y/x

余切函数 cotθ=x/y

正割函数 secθ=r/x

余割函数 cscθ=r/y

以及两个不常用,已趋于被淘汰的函数:
正矢函数 versinθ =1-cosθ
余矢函数 vercosθ =1-sinθ

同角三角函数间的基本关系式:

·平方关系:
sin^2(α) cos^2(α)=1
tan^2(α) 1=sec^2(α)
cot^2(α) 1=csc^2(α)
·积的关系:
sinα=tanα*cosα
cosα=cotα*sinα
tanα=sinα*secα
cotα=cosα*cscα
secα=tanα*cscα
cscα=secα*cotα

·倒数关系:
tanα·cotα=1
sinα·cscα=1
cosα·secα=1

直角三角形ABC中,
角A的正弦值就等于角A的对边比斜边,
余弦等于角A的邻边比斜边
正切等于对边比邻边,

三角函数恒等变形公式

·两角和与差的三角函数:
cos(α β)=cosα·cosβ-sinα·sinβ
cos(α-β)=cosα·cosβ sinα·sinβ
sin(α±β)=sinα·cosβ±cosα·sinβ
tan(α β)=(tanα tanβ)/(1-tanα·tanβ)
tan(α-β)=(tanα-tanβ)/(1 tanα·tanβ)

·辅助角公式:
Asinα Bcosα=(A^2 B^2)^(1/2)sin(α t),其中
sint=B/(A^2 B^2)^(1/2)
cost=A/(A^2 B^2)^(1/2)

·倍角公式:
sin(2α)=2sinα·cosα=2/(tanα cotα)
cos(2α)=cos^2(α)-sin^2(α)=2cos^2(α)-1=1-2sin^2(α)
tan(2α)=2tanα/[1-tan^2(α)]

·三倍角公式:
sin(3α)=3sinα-4sin^3(α)
cos(3α)=4cos^3(α)-3cosα

·半角公式:
sin(α/2)=±√((1-cosα)/2)
cos(α/2)=±√((1 cosα)/2)
tan(α/2)=±√((1-cosα)/(1 cosα))=sinα/(1 cosα)=(1-cosα)/sinα

·降幂公式
sin^2(α)=(1-cos(2α))/2=versin(2α)/2
cos^2(α)=(1 cos(2α))/2=vercos(2α)/2
tan^2(α)=(1-cos(2α))/(1 cos(2α))

·万能公式:
sinα=2tan(α/2)/[1 tan^2(α/2)]
cosα=[1-tan^2(α/2)]/[1 tan^2(α/2)]
tanα=2tan(α/2)/[1-tan^2(α/2)]

·积化和差公式:
sinα·cosβ=(1/2)[sin(α β) sin(α-β)]
cosα·sinβ=(1/2)[sin(α β)-sin(α-β)]
cosα·cosβ=(1/2)[cos(α β) cos(α-β)]
sinα·sinβ=-(1/2)[cos(α β)-cos(α-β)]

·和差化积公式:
sinα sinβ=2sin[(α β)/2]cos[(α-β)/2]
sinα-sinβ=2cos[(α β)/2]sin[(α-β)/2]
cosα cosβ=2cos[(α β)/2]cos[(α-β)/2]
cosα-cosβ=-2sin[(α β)/2]sin[(α-β)/2]