特状况
- JavaScript中的非数字值都出一些奇:它跟其他价值都不抵,包括我。如判断变量x是否是NaN,应当使用x!=x来判断,当且仅当x为NaN的下,表达式的结果才为true。
- 指零值同样有些特别,它跟正零值是等的。这意味着这半只价几乎等同的,除了作为除数之外:零给除获得正无穷大,负零被除获取负无穷大。
atan2的应用
于率先稍节中的那张图中之坐标系,是咱熟悉的。在HTML、Canvas中,坐标系并无像咱熟知的坐标系那样。它是如此的:
自x轴正朝着沿顺时针方向,所通过的角度分别是0,π/2, π,3π/2,2π。
于x轴正为沿逆时针方向,所经过的角度分别是0,-π/2, -π,-3π/2,-2π。
atan2的结果于(-π,π]里,恰好一圆,四只象限全挂。从坐标系来拘禁,顺时针方向的价是正,逆时针方向的价值是因的。
打坐标系上来拘禁,atan2结果是(0,-π)时就意味着,从x轴正于逆时针方向改变不过老 π弧度(180角度)。同理,(0,π)表示于x轴正奔顺时针转不过充分π弧度(180角度)。
当第1)小节中说了atan可以为此来测算平面坐标系外任意两沾的连线与x轴正朝着内的夹角。而atan2是atan的互补,那么以atan2自然就是可以来计量平面坐标系外肆意两点的连线与x轴正朝着里面的夹角了。
如果个别只点当第一象限内:
一旦个别单点于第四象限内:
若果少个点于不同的象限内,我们为得走来拘禁。
Infinity和NaN
JavaScript预定义了全局变量Infinity和NaN,用来表示正无穷大和非数字值。在ECMScript3遭到,这点儿单价值是可读/写的,并而改。ECMAScript5修正了是荒唐,将它们定义为才读之。
近来来Canvas绘图,知道了JavaScript中提供了atan2(y,x)这样一个三角形函数。乍眼一看,不认得,毕竟在高中时,学了之三角函数有:sin,cos,arcsin,arccos,tan,arctan等,并不曾此。而工作遭到并且待运用它,所以这里就是召开了只简易的问询。
整型直接量
每当JavaScript程序中,用一个程序序列表示一个十进制整数。除了十进制的整型直接量,JavaScript同样会辨识十六进制(以16也基数)值(以“0x”和“0X”为前缀)。
当坐标系中理解tan 和 atan
忆一下三角函数tan:
tanθ,用三角函数来表示经常,它的值等于sinθ/cosθ,如果用那置于坐标系中,它的底值等价于:dy/dx。在坐标系中,任意两只点所结合的直线,相对于x轴的斜率就是tanθ = dy /dx,相对于y轴的斜率就是dx/dy ,此时我们为此cot来代表;其中,dy 是零星单点的y坐标的差值,dx是有限独点的x坐标的差值。
那坐标系内而外y轴,任何一个接触(x,y),相对于x轴的斜率就是y-0/x-0,也尽管是y/x。
俺们将tanθ称为一长条直线相对于x轴的斜率,那么θ就是相对于x轴的夹角(旋转角度)了。
tan,是根据角度计算斜率的。那么回
arctan(反正切)自然就是当是因斜率来计量角度的。
引言
JavaScript不区分整数值与浮点数价值,全部下浮点数值表示。当一个数字一直出现于JavaScript程序中,我们称为数字直接量(numeric
litertal)。JavaScript支持多格式的数字直接量。
下溢
下溢是当运算结果绝接近受零并比JavaScript能代表的卓绝小价还多少的时节发的一模一样种植状况。这种情景下,JavaScript将会见回回0。当一个负数发生下溢时,JavaScript返回一个非同寻常的价“负零”。这个价(负零)几乎和常规的一点一滴同,但是雅少用到。
何时要用atan2 ?
手上己遇上了少于种植情景,是由此atan2来化解之:
1) 在平面坐标系外随机两只点中写一长带有箭头的直线(可以是不过为箭头,可以是双向箭头)。在是需求面临,另外也知晓了箭头的同等长长的边与直线的夹角和箭头的长短。
这需求的难就是若计算产生箭头的另外两个点坐标。
2) 在平面坐标系外随意两单点之间画一漫长指定曲率的曲线(arc)。在这个需要被,要计算arc,自然要明白radius, startAngle, endAngle,圆心坐标。可以根据曲率来算起半径等,但是困难在计算圆心坐标。
即时简单独需要的一起特性是:
1)两单曾经掌握之接触
2)根据当下简单单点和其它的原则去算一些必须的(画line,arc等要的)点坐标。
手上自遇到了立片栽需求,都通过atan2来解决之。其他的情形,目前犹一无所知,待后续发现经常,补充上。
浮点型直接量
浮点型直接量可以分包小数点,它们利用的凡风的实数写法。一个实数由整数有的、小数点和小数部分构成。同时支持指数记数法表示浮点型直接量。
让零整除
给零整除在JavaScript并无报错:它只是略的归无穷大(Infinity)或负无穷大(-Infinity)。但是出一个不一,零除以零是没有意思的,这种整除运算结果吧是一个非数字(not-a-number)值,用NaN表示。无穷大除以无穷大、给自由负数作开方运算或者算术运算符与匪是数字还是无法转移为数字的操作数一起用时还用会回来NaN。
JavaScript中之算术运算
JavaScript程序是采用语言本身提供的算术运算符来进行数字运算的。这些运算符包括加法运算符(+)、减法运算符(-)、乘法运算符(*)、除法运算符(/)和求余(求整除后底余数)运算符(%)。JavaScrip中的算术运算在溢起(overflow)、下溢(underflow)或让零整除时莫会见报错。
怎么有atan2 ?
于JavaScript中,提供了区区单arctan函数,一个是atan, 一个凡是atan2。 atan就是咱所熟知arctan。其实以众编程语言中还提供了atan2。
那atan2又是怎么回事呢?
如知道之,需要明白arctan的不足之处:
arctan的返回值范围是(-π/2, π/2) 不包, ±π/2,也即是(两只点组成的直线与x轴夹角是90°)90°是算不出的。为啥吧?在计算arctan ( dy/dx)时,如果少独点(x1,y1),(x2,y2)组成的直线与x轴的夹角呈90°时,dx= x2-x1 = 0 ,0 是匪能够当做除数的,所以就是无法测算这种气象。
价的限制也就算是算的角度的限定以(-π/2, π/2),从坐标系来拘禁,这个角度的限只能是当第1、4象限,并无可知表示有第2、3象限的竞。
为弥补atan的贫乏,在计算机编程领域,引入了atan2函数,它的精打细算结果是当(-π,π]。它正好可以挂整个坐标系,包括90°的情事。
它们的计量过程是怎样的也罢?
至于此,我自wikipedia上选了它的计算过程:
溢出
当数字运算结果越了JavaScript所能代表的数字上限(溢出),结果吧一个非正规之无穷大(infinity)值,在JavaScript中以Infinity表示。同样,当负数的值过了JavaScript所能够表示的负数范围,结果也负无穷大,JavaScript中为-Infinity表示。无穷大值的所作所为特征与我们所梦想之是同等的:基于它的加以、减、乘与除运算结果要么无穷大值(保留其正负号)。
- 以坐标系中领悟tan
和atan - 为何在atan2
? - atan2
应用- 何时要为此到
atan2
- 何时要为此到
亚向前制浮点数和季放弃五合乎错
实数有成千上万独,但是JavaScript通过浮点数的款型只能表示中有数的个数(确切地说是1843
7736 8744 5481
0627独)。也就是说,当以JavaScript中运用实数的当儿,常常只是确实实值的一个接近表示。