diff --git a/lime/css/lime.css.soy b/lime/css/lime.css.soy
index e4ec3ca6..eba346a2 100644
--- a/lime/css/lime.css.soy
+++ b/lime/css/lime.css.soy
@@ -12,6 +12,8 @@
-o-transform-origin: 0 0;
image-rendering: optimizeSpeed;
overflow: hidden;
+ -webkit-backface-visibility:hidden; /* Chrome, Safari, Opera */
+ backface-visibility:hidden;
{rb}
.{css lime-director} div,
diff --git a/lime/css/lime.css.soy.js b/lime/css/lime.css.soy.js
index 17ee7af1..a4b055d6 100644
--- a/lime/css/lime.css.soy.js
+++ b/lime/css/lime.css.soy.js
@@ -8,5 +8,5 @@ goog.require('soydata');
lime.css.css = function(opt_data, opt_ignored) {
- return '.' + goog.getCssName('lime-director') + ' {position:absolute; -webkit-transform-origin: 0 0; -moz-transform-origin: 0 0; -o-transform-origin: 0 0; image-rendering: optimizeSpeed; overflow: hidden;}.' + goog.getCssName('lime-director') + ' div, .' + goog.getCssName('lime-director') + ' img, .' + goog.getCssName('lime-director') + ' canvas {-webkit-transform-origin: 0 0; -moz-transform-origin: 0 0; -o-transform-origin: 0 0; position: absolute; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; -moz-user-select: none; -webkit-user-select: none; -webkit-user-drag: none;}.' + goog.getCssName('lime-scene') + ' {position:absolute; width:100%; height:100%; left: 0px; top: 0px; overflow: hidden; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;}.' + goog.getCssName('lime-fps') + ' {float: left; background: #333; color: #fff; position: absolute; top:0px; left: 0px; padding:2px 4px;}div.' + goog.getCssName('lime-layer') + ' {position: absolute; left: 0px; top: 0px; width:0px; height:0px; border: none !important;}.' + goog.getCssName('lime-cover') + ' {position: absolute; left: 0px; top: 0px;}.' + goog.getCssName('lime-button') + ' {cursor: pointer;}';
+ return '.' + goog.getCssName('lime-director') + ' {position:absolute; -webkit-transform-origin: 0 0; -moz-transform-origin: 0 0; -o-transform-origin: 0 0; image-rendering: optimizeSpeed; overflow: hidden; -webkit-backface-visibility:hidden; backface-visibility:hidden;}.' + goog.getCssName('lime-director') + ' div, .' + goog.getCssName('lime-director') + ' img, .' + goog.getCssName('lime-director') + ' canvas {-webkit-transform-origin: 0 0; -moz-transform-origin: 0 0; -o-transform-origin: 0 0; position: absolute; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; -moz-user-select: none; -webkit-user-select: none; -webkit-user-drag: none;}.' + goog.getCssName('lime-scene') + ' {position:absolute; width:100%; height:100%; left: 0px; top: 0px; overflow: hidden; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;}.' + goog.getCssName('lime-fps') + ' {float: left; background: #333; color: #fff; position: absolute; top:0px; left: 0px; padding:2px 4px;}div.' + goog.getCssName('lime-layer') + ' {position: absolute; left: 0px; top: 0px; width:0px; height:0px; border: none !important;}.' + goog.getCssName('lime-cover') + ' {position: absolute; left: 0px; top: 0px;}.' + goog.getCssName('lime-button') + ' {cursor: pointer;}';
};
diff --git a/lime/demos/roundball/board.js b/lime/demos/roundball/board.js
index 5c332142..afe98fd7 100644
--- a/lime/demos/roundball/board.js
+++ b/lime/demos/roundball/board.js
@@ -140,7 +140,7 @@ rb.Board.prototype.checkSolutions = function() {
var action = new lime.animation.Spawn(
new lime.animation.ScaleTo(0),
new lime.animation.FadeTo(0).setDuration(.8)
- ).enableOptimizations();
+ );
goog.array.removeDuplicates(solutions);
diff --git a/lime/demos/roundball/multimove.js b/lime/demos/roundball/multimove.js
index 25826185..d3b44c74 100644
--- a/lime/demos/roundball/multimove.js
+++ b/lime/demos/roundball/multimove.js
@@ -40,7 +40,7 @@ rb.MultiMove.prototype.play = function(opt_static) {
var action, longest_action, longest_duration = 0;
for (var i in this.requests_) {
var req = this.requests_[i];
- action = new lime.animation.MoveBy(req[0][1]).setSpeed(.3).enableOptimizations();
+ action = new lime.animation.MoveBy(req[0][1]).setSpeed(.3);
if (longest_duration < action.getDuration()) {
longest_action = action;
longest_duration = action.getDuration();
diff --git a/lime/demos/roundball/rb.js b/lime/demos/roundball/rb.js
index d4558e0f..52065b6b 100644
--- a/lime/demos/roundball/rb.js
+++ b/lime/demos/roundball/rb.js
@@ -57,7 +57,7 @@ rb.loadMenu = function() {
var btns = new lime.Layer().setPosition(0, 430);
layer.appendChild(btns);
- var move = new lime.animation.MoveBy(-rb.WIDTH, 0).enableOptimizations();
+ var move = new lime.animation.MoveBy(-rb.WIDTH, 0);
var btn = rb.makeButton('Play Classic').setPosition(0, 200);
goog.events.listen(btn, 'click', function() {
diff --git a/lime/demos/tests/anim1.js b/lime/demos/tests/anim1.js
index 8b1b4995..a5870ac6 100644
--- a/lime/demos/tests/anim1.js
+++ b/lime/demos/tests/anim1.js
@@ -26,45 +26,45 @@ test.HEIGHT = 400;
test.start = function() {
- //director
- test.director = new lime.Director(document.body, test.WIDTH, test.HEIGHT);
- test.director.makeMobileWebAppCapable();
+ //director
+ test.director = new lime.Director(document.body, test.WIDTH, test.HEIGHT);
+ test.director.makeMobileWebAppCapable();
- var menuscene = new lime.Scene;
+ var menuscene = new lime.Scene;
- var layer = (new lime.Layer).setPosition(100, 100);
- menuscene.appendChild(layer);
+ var layer = (new lime.Layer).setPosition(100, 100);
+ menuscene.appendChild(layer);
- var sprite = new lime.Sprite().setFill(100,0,0).setSize(50, 50).setRenderer(lime.Renderer.CANVAS);
- layer.appendChild(sprite);
+ var sprite = new lime.Sprite().setFill(100,0,0).setSize(50, 50).setRenderer(lime.Renderer.CANVAS);
+ layer.appendChild(sprite);
- var anim = new lime.animation.Sequence(new lime.animation.Spawn(
- new lime.animation.MoveBy(200, 0).setDuration(1.5),
- new lime.animation.ScaleBy(2),
- new lime.animation.ColorTo(0,200,0)
-
- ), new lime.animation.Spawn(
- new lime.animation.MoveBy(-200, 0).setDuration(1.5),
- new lime.animation.ScaleBy(.5),
- new lime.animation.ColorTo(200,0,0)
+ var anim = new lime.animation.Sequence(new lime.animation.Spawn(
+ new lime.animation.MoveBy(200, 0).setDuration(1.5),
+ new lime.animation.ScaleBy(2),
+ new lime.animation.ColorTo(0,200,0)
- ));
- sprite.runAction(new lime.animation.Loop(anim).setLimit(5));
+ ), new lime.animation.Spawn(
+ new lime.animation.MoveBy(-200, 0).setDuration(1.5),
+ new lime.animation.ScaleBy(.5),
+ new lime.animation.ColorTo(200,0,0)
- var sprite = new lime.Sprite().setFill('#0c0').setSize(50, 50).setPosition(0, 100).setRenderer(lime.Renderer.CANVAS);
- layer.appendChild(sprite);
+ ));
+ sprite.runAction(new lime.animation.Loop(anim).setLimit(5));
- var anim = new lime.animation.Spawn(
- new lime.animation.RotateBy(-90).setDuration(3).enableOptimizations(),
- new lime.animation.MoveBy(300, 0).setDuration(3).enableOptimizations()
+ var sprite = new lime.Sprite().setFill('#0c0').setSize(50, 50).setPosition(0, 100).setRenderer(lime.Renderer.CANVAS);
+ layer.appendChild(sprite);
+
+ var anim = new lime.animation.Spawn(
+ new lime.animation.RotateBy(-90).setDuration(3),
+ new lime.animation.MoveBy(300, 0).setDuration(3)
);
var a2 = new lime.animation.Sequence(anim, anim.reverse());
sprite.runAction(new lime.animation.Loop(a2).setLimit(5));
- // set active scene
- test.director.replaceScene(menuscene);
+ // set active scene
+ test.director.replaceScene(menuscene);
};
diff --git a/lime/demos/tests/anim2.js b/lime/demos/tests/anim2.js
index 82e7e0cc..4a956d88 100644
--- a/lime/demos/tests/anim2.js
+++ b/lime/demos/tests/anim2.js
@@ -61,7 +61,7 @@ test.start = function() {
.setPosition(300, 100)
.setScale(.3);
- var flame_x = flame.getPosition().x;
+ //var flame_x = flame.getPosition().x;
flameLayer.appendChild(flame);
diff --git a/lime/demos/tests/anim3.js b/lime/demos/tests/anim3.js
index ec544968..32c1aa65 100644
--- a/lime/demos/tests/anim3.js
+++ b/lime/demos/tests/anim3.js
@@ -38,7 +38,7 @@ test.start = function() {
flameLayer.appendChild(flame);
flame.setFill(100, 0, 0).setPosition(0, 100).setSize(100, 100);
- var move = new lime.animation.MoveBy(700, 0).setDuration(5).enableOptimizations()
+ var move = new lime.animation.MoveBy(700, 0).setDuration(5)
.setEasing(lime.animation.Easing.EASEINOUT);
move.addTarget(flame);
move.play();
diff --git a/lime/demos/tests/anim4.js b/lime/demos/tests/anim4.js
index 3f927921..96f5a07e 100644
--- a/lime/demos/tests/anim4.js
+++ b/lime/demos/tests/anim4.js
@@ -66,10 +66,10 @@ test.start = function() {
scene.appendChild(circle2);
var moveRight2 = new lime.animation.MoveTo(874, 200)
- .setDuration(774/100).setEasing(lime.animation.Easing.LINEAR).enableOptimizations();
+ .setDuration(774/100).setEasing(lime.animation.Easing.LINEAR);
var moveLeft2 = new lime.animation.MoveTo(100, 200)
- .setDuration(774/100).setEasing(lime.animation.Easing.LINEAR).enableOptimizations();
+ .setDuration(774/100).setEasing(lime.animation.Easing.LINEAR);
circle2.runAction(new lime.animation.Loop(
new lime.animation.Sequence(
diff --git a/lime/demos/tests/canvas2.js b/lime/demos/tests/canvas2.js
index 06e6443a..9245f012 100644
--- a/lime/demos/tests/canvas2.js
+++ b/lime/demos/tests/canvas2.js
@@ -68,8 +68,8 @@ test.makeLayerOfStuff = function(){
layer.appendChild(rrect);
var anim = new lime.animation.Spawn(
- new lime.animation.ScaleBy(.3).setDuration(3).enableOptimizations(),
- new lime.animation.MoveBy(0,-30).setDuration(3).enableOptimizations()
+ new lime.animation.ScaleBy(.3).setDuration(3),
+ new lime.animation.MoveBy(0,-30).setDuration(3)
);
rrect.runAction(
diff --git a/lime/demos/tests/opacity.js b/lime/demos/tests/opacity.js
index 4fd010da..fa306ba9 100644
--- a/lime/demos/tests/opacity.js
+++ b/lime/demos/tests/opacity.js
@@ -37,8 +37,8 @@ test.start = function() {
ball.setPosition(50, 100).setSize(100, 100);
ball.runAction(new lime.animation.Loop(new lime.animation.Sequence(
- new lime.animation.FadeTo(0).setDuration(3).enableOptimizations(),
- new lime.animation.FadeTo(1).setDuration(3).enableOptimizations()
+ new lime.animation.FadeTo(0).setDuration(3),
+ new lime.animation.FadeTo(1).setDuration(3)
)));
diff --git a/lime/demos/tests/shapes2.js b/lime/demos/tests/shapes2.js
index d2405fee..d4f998ed 100644
--- a/lime/demos/tests/shapes2.js
+++ b/lime/demos/tests/shapes2.js
@@ -8,6 +8,7 @@ goog.require('lime.Label');
goog.require('lime.Layer');
goog.require('lime.Scene');
goog.require('lime.animation.MoveBy');
+goog.require('lime.RoundedRect');
test.WIDTH = 600;
@@ -41,7 +42,7 @@ test.start = function() {
flameLayer.appendChild(box);
- var box2 = new lime.Sprite().setFill('#0c0').setSize(70, 70).setAnchorPoint(1, 1).setRotation(0).setPosition(0, 0);
+ var box2 = new lime.RoundedRect().setFill('#0c0').setSize(70, 70).setAnchorPoint(1, 1).setRotation(0).setPosition(0, 0);
goog.events.listen(box2, ['mousedown', 'touchstart'], dragFunc);
box.appendChild(box2);
diff --git a/lime/demos/zlizer/bubble.js b/lime/demos/zlizer/bubble.js
index f51a85f6..1c64b27b 100644
--- a/lime/demos/zlizer/bubble.js
+++ b/lime/demos/zlizer/bubble.js
@@ -38,6 +38,6 @@ zlizer.Bubble.prototype.updateFloatingSpeed = function() {
var delta = this.v.clone().scale(zlizer.BUBBLE_SPEED);
- this.move = new lime.animation.MoveBy(delta.x, delta.y).setDuration(20).enableOptimizations().setEasing(lime.animation.Easing.LINEAR);
+ this.move = new lime.animation.MoveBy(delta.x, delta.y).setDuration(20).setEasing(lime.animation.Easing.LINEAR);
this.runAction(this.move);
};
diff --git a/lime/demos/zlizer/game.js b/lime/demos/zlizer/game.js
index 37174b62..dea193a4 100644
--- a/lime/demos/zlizer/game.js
+++ b/lime/demos/zlizer/game.js
@@ -467,8 +467,8 @@ zlizer.Game.prototype.combine = function(bubs) {
sumcoord[1] /= bubs.length;
var anim = new lime.animation.Spawn(
- new lime.animation.MoveTo(sumcoord[0], sumcoord[1]).enableOptimizations(),
- new lime.animation.FadeTo(0).enableOptimizations()
+ new lime.animation.MoveTo(sumcoord[0], sumcoord[1]),
+ new lime.animation.FadeTo(0)
);
for (var i = 0; i < bubs.length; i++) {
anim.addTarget(bubs[i]);
diff --git a/lime/demos/zlizer/zlizer.js b/lime/demos/zlizer/zlizer.js
index 8bbbe11e..d6299d4c 100644
--- a/lime/demos/zlizer/zlizer.js
+++ b/lime/demos/zlizer/zlizer.js
@@ -66,7 +66,7 @@ zlizer.loadMenuScene = function(opt_transition) {
var btn_levels = new zlizer.Button('PICK LEVEL').setPosition(0, 480).setSize(250, 100);
contents.appendChild(btn_levels);
goog.events.listen(btn_levels, lime.Button.Event.CLICK, function() {
- contents.runAction(new lime.animation.MoveTo(0, -255).enableOptimizations());
+ contents.runAction(new lime.animation.MoveTo(0, -255));
});
var levels = new lime.Layer().setPosition(0, 690);
@@ -98,7 +98,7 @@ zlizer.loadMenuScene = function(opt_transition) {
var btn_main = new zlizer.Button('Back to Menu').setSize(400, 80).setPosition(250, r * 90);
btns_layer.appendChild(btn_main);
goog.events.listen(btn_main, lime.Button.Event.CLICK, function() {
- contents.runAction(new lime.animation.MoveTo(0, 280).enableOptimizations());
+ contents.runAction(new lime.animation.MoveTo(0, 280));
},false, num);
};
diff --git a/lime/src/animation/animation.js b/lime/src/animation/animation.js
index 79075d67..5706f1a0 100644
--- a/lime/src/animation/animation.js
+++ b/lime/src/animation/animation.js
@@ -135,13 +135,6 @@ lime.animation.Animation.prototype.play = function() {
*/
lime.animation.Animation.prototype.stop = function() {
if (this.status_ != 0) {
- var targets = this.initTargets_;
- if (this.useTransitions() && this.clearTransition) {
- var i = targets.length;
- while (--i >= 0) {
- this.clearTransition(targets[i]);
- }
- }
this.initTargets_ = [];
this.targetProp_ = {};
this.status_ = 0;
@@ -239,33 +232,6 @@ lime.animation.Animation.prototype.updateAll = function(t,targets){
return t;
};
-/**
- * Returns true if CSS transitions are used to make the animation.
- * Performes better on iOS devices.
- * @return {boolean} Transitions are being used?
- */
-lime.animation.Animation.prototype.useTransitions = function() {
- // Basically everything except Mobile/Desktop Safari seems broken.
- return lime.userAgent.IOS && this.duration_ > 0 &&
- lime.style.isTransitionsSupported && this.optimizations_;
- /*
- // goog.userAgent.MOBILE && // I see no boost on mac, only on iOS
- !lime.userAgent.ANDROID && // bug in 2.2 http://code.google.com/p/android/issues/detail?id=12451
- !goog.userAgent.GECKO; // still many bugs on FF4Beta Mac when hardware acceleration in ON*/
-};
-
-/**
- * Enable CSS3 transitions to make animation. Usually performes better
- * but is limited to single parallel transform action.
- * @param {boolean=} opt_value Enable or disable.
- * @return {lime.animation.Animation} object itself.
- */
-lime.animation.Animation.prototype.enableOptimizations = function(opt_value) {
- var bool = goog.isDef(opt_value) ? opt_value : true;
- this.optimizations_ = bool;
- return this;
-};
-
/**
* Update targets to new values
* @param {number} t Time position of animation[0-1].
@@ -278,7 +244,7 @@ lime.animation.Animation.prototype.update = goog.abstractMethod;
* @protected
*/
lime.animation.Animation.prototype.cloneParam = function(origin){
- return this.setDuration(origin.getDuration()).enableOptimizations(origin.optimizations_);
+ return this.setDuration(origin.getDuration());
};
/**
diff --git a/lime/src/animation/fadeto.js b/lime/src/animation/fadeto.js
index e70b98ad..2b1dbaa1 100644
--- a/lime/src/animation/fadeto.js
+++ b/lime/src/animation/fadeto.js
@@ -29,13 +29,7 @@ lime.animation.FadeTo.prototype.scope = 'fade';
*/
lime.animation.FadeTo.prototype.makeTargetProp = function(target) {
var op = target.getOpacity();
- if (this.useTransitions()) {
- target.addTransition(lime.Transition.OPACITY,
- this.opacity_,
- this.duration_, this.getEasing());
- target.setDirty(lime.Dirty.ALPHA);
- }
return {startOpacity: op, delta: this.opacity_ - op };
};
@@ -51,14 +45,3 @@ lime.animation.FadeTo.prototype.update = function(t, target) {
};
-/**
- * Clear transistion when animation is stoped.
- * @param {lime.Node} target The target to clear transistion for.
- */
-lime.animation.FadeTo.prototype.clearTransition = function(target) {
- if (this.useTransitions()) {
- target.clearTransition(lime.Transition.OPACITY);
- target.setDirty(lime.Dirty.ALPHA);
- }
-};
-
diff --git a/lime/src/animation/moveby.js b/lime/src/animation/moveby.js
index aa42b1b3..4d1a3287 100644
--- a/lime/src/animation/moveby.js
+++ b/lime/src/animation/moveby.js
@@ -49,12 +49,6 @@ lime.animation.MoveBy.prototype.setSpeed = function(speed) {
* @see lime.animation.Animation#makeTargetProp
*/
lime.animation.MoveBy.prototype.makeTargetProp = function(target) {
- if (this.useTransitions()) {
- target.addTransition(lime.Transition.POSITION,
- goog.math.Coordinate.sum(target.getPosition(), this.delta_),
- this.duration_, this.getEasing());
- target.setDirty(lime.Dirty.POSITION);
- }
return {startpos: target.getPosition()};
};
@@ -86,20 +80,6 @@ lime.animation.MoveBy.prototype.update = function(t, target) {
};
-/**
- * Clear previously set transition values.
- * @param {lime.Node} target Target node.
- */
-lime.animation.MoveBy.prototype.clearTransition = function(target) {
-
- if (this.useTransitions()) {
- target.clearTransition(lime.Transition.POSITION);
- target.setDirty(lime.Dirty.POSITION);
- }
-
-
-};
-
/**
* @inheritDoc
* @see lime.animation.Animation#reverse
diff --git a/lime/src/animation/moveto.js b/lime/src/animation/moveto.js
index 7d7948fd..3d21390f 100644
--- a/lime/src/animation/moveto.js
+++ b/lime/src/animation/moveto.js
@@ -51,13 +51,6 @@ lime.animation.MoveTo.prototype.makeTargetProp = function(target) {
var delta = new goog.math.Coordinate(
this.position_.x - start.x,
this.position_.y - start.y);
-
- if (this.useTransitions()) {
- target.addTransition(lime.Transition.POSITION,
- this.position_,
- this.duration_, this.getEasing());
- target.setDirty(lime.Dirty.POSITION);
- }
return {startpos: start, delta: delta};
};
@@ -94,15 +87,3 @@ lime.animation.MoveTo.prototype.update = function(t, target) {
);
};
-/**
- * Clear transistion when animation is stoped.
- * @see lime.animation.Animation#clearTransition
- * @param {lime.Node} target The target to clear transistion for.
- */
-lime.animation.MoveTo.prototype.clearTransition = function(target) {
- if (this.useTransitions()) {
- target.clearTransition(lime.Transition.POSITION);
- target.setDirty(lime.Dirty.POSITION);
- }
-};
-
diff --git a/lime/src/animation/rotateby.js b/lime/src/animation/rotateby.js
index 9d0ef82c..9eb7c1c6 100644
--- a/lime/src/animation/rotateby.js
+++ b/lime/src/animation/rotateby.js
@@ -29,13 +29,6 @@ lime.animation.RotateBy.prototype.scope = 'rotate';
* @see lime.animation.Animation#makeTargetProp
*/
lime.animation.RotateBy.prototype.makeTargetProp = function(target) {
- if (this.useTransitions()) {
- target.addTransition(lime.Transition.ROTATION,
- target.getRotation() + this.angle_,
- this.duration_, this.getEasing()
- );
- target.setDirty(lime.Dirty.POSITION);
- }
return {startRot: target.getRotation() };
};
@@ -49,17 +42,6 @@ lime.animation.RotateBy.prototype.update = function(t, target) {
target.setRotation(prop.startRot + this.angle_ * t);
};
-/**
- * Clear transistion when animation is stoped.
- * @param {lime.Node} target The target to clear transistion for.
- */
-lime.animation.RotateBy.prototype.clearTransition = function(target) {
- if (this.useTransitions()) {
- target.clearTransition(lime.Transition.ROTATION);
- target.setDirty(lime.Dirty.POSITION);
- }
-};
-
/**
* @inheritDoc
* @see lime.animation.Animation#reverse
diff --git a/lime/src/animation/rotateto.js b/lime/src/animation/rotateto.js
index efd9a721..b05d014e 100644
--- a/lime/src/animation/rotateto.js
+++ b/lime/src/animation/rotateto.js
@@ -29,13 +29,7 @@ lime.animation.RotateTo.prototype.scope = 'rotate';
*/
lime.animation.RotateTo.prototype.makeTargetProp = function(target) {
var rot = target.getRotation();
- if (this.useTransitions()) {
- target.addTransition(lime.Transition.ROTATION,
- this.angle_,
- this.duration_, this.getEasing()
- );
- target.setDirty(lime.Dirty.POSITION);
- }
+
return {startRot: rot, delta: this.angle_ - rot };
};
@@ -48,14 +42,3 @@ lime.animation.RotateTo.prototype.update = function(t, target) {
var prop = this.getTargetProp(target);
target.setRotation(prop.startRot + prop.delta * t);
};
-
-/**
- * @inheritDoc
- * @see lime.animation.Animation#clearTransition
- */
-lime.animation.RotateTo.prototype.clearTransition = function(target) {
- if (this.useTransitions()) {
- target.clearTransition(lime.Transition.ROTATION);
- target.setDirty(lime.Dirty.POSITION);
- }
-};
diff --git a/lime/src/animation/scaleby.js b/lime/src/animation/scaleby.js
index 17a1fa2b..5d81ae46 100644
--- a/lime/src/animation/scaleby.js
+++ b/lime/src/animation/scaleby.js
@@ -41,13 +41,6 @@ lime.animation.ScaleBy.prototype.makeTargetProp = function(target) {
delta = new goog.math.Vec2(scale.x * this.factor_.x - scale.x,
scale.y * this.factor_.y - scale.y);
- if (this.useTransitions()) {
- target.addTransition(lime.Transition.SCALE,
- new goog.math.Vec2(scale.x + delta.x, scale.y + delta.y),
- this.duration_, this.getEasing());
- target.setDirty(lime.Dirty.SCALE);
- }
-
return {startScale: scale,
delta: delta};
};
@@ -66,17 +59,6 @@ lime.animation.ScaleBy.prototype.update = function(t, target) {
);
};
-/**
- * @inheritDoc
- * @see lime.animation.Animation#clearTransition
- */
-lime.animation.ScaleBy.prototype.clearTransition = function(target) {
- if (this.useTransitions()) {
- target.clearTransition(lime.Transition.SCALE);
- target.setDirty(lime.Dirty.SCALE);
- }
-};
-
/**
* @inheritDoc
* @see lime.animation.Animation#reverse
diff --git a/lime/src/animation/scaleto.js b/lime/src/animation/scaleto.js
index 8ab34122..f2cbeb47 100644
--- a/lime/src/animation/scaleto.js
+++ b/lime/src/animation/scaleto.js
@@ -42,13 +42,6 @@ lime.animation.ScaleTo.prototype.makeTargetProp = function(target) {
delta = new goog.math.Vec2(this.scale_.x - scale.x,
this.scale_.y - scale.y);
- if (this.useTransitions()) {
- target.addTransition(lime.Transition.SCALE,
- new goog.math.Vec2(scale.x + delta.x, scale.y + delta.y),
- this.duration_, this.getEasing());
- target.setDirty(lime.Dirty.SCALE);
- }
-
return {startScale: scale,
delta: delta};
};
@@ -67,14 +60,3 @@ lime.animation.ScaleTo.prototype.update = function(t, target) {
);
};
-/**
- * Clear transistion when animation is stoped.
- * @param {lime.Node} target The target to clear transistion for.
- */
-lime.animation.ScaleTo.prototype.clearTransition = function(target) {
- if (this.useTransitions()) {
- target.clearTransition(lime.Transition.SCALE);
- target.setDirty(lime.Dirty.SCALE);
- }
-};
-
diff --git a/lime/src/events/drag.js b/lime/src/events/drag.js
index ab92a1a5..2ccdefe2 100644
--- a/lime/src/events/drag.js
+++ b/lime/src/events/drag.js
@@ -210,7 +210,7 @@ lime.events.Drag.prototype.releaseHandler_ = function(e) {
var pos = ev.activeDropTarget.getParent().localToNode(
ev.activeDropTarget.getPosition(), this.target.getParent());
var move = new lime.animation.MoveTo(pos)
- .setDuration(.5).enableOptimizations();
+ .setDuration(.5);
this.target.runAction(move);
if (goog.isFunction(ev.moveEndedCallback)) {
goog.events.listen(move, lime.animation.Event.STOP,
diff --git a/lime/src/helper/style.js b/lime/src/helper/style.js
index d03ff85f..e4725929 100644
--- a/lime/src/helper/style.js
+++ b/lime/src/helper/style.js
@@ -63,119 +63,6 @@ lime.style.setBorderRadius = (function() {
};
})();
-// There are classes like CSSMatrix in some browsers.
-// Maybe this would make more sense.
-
-/**
- * Object representing CSS Transform.
- * @constructor
- * @param {number=} opt_precision Default precision.
- */
-lime.style.Transform = function(opt_precision) {
- this.values = [];
- this.precision = 1;
- this.enable3D_ = true;
- if (this.opt_precision) {
- this.setPrecision(/** @type {number} */ (opt_precision));
- }
-};
-
-/**
- * Sets 3D enabling flag for css hardware acceleration (on by default)
- * @param {Boolean} value
- * @return {lime.style.Transform} object itself.
- */
-lime.style.Transform.prototype.set3DAllowed = function(value) {
- this.enable3D_ = value;
- return this;
-};
-
-/**
- * Scale current transform object
- * @param {number} sx X-axis scale factor.
- * @param {number} sy y-axis scale factor.
- * @return {lime.style.Transform} object itself.
- */
-lime.style.Transform.prototype.scale = function(sx, sy) {
- //if(sx!=1 && sy!=1)
- this.values.push('scale(' + sx + ',' + sy + ')');
- return this;
-};
-
-/**
- * Rotate current transform object
- * @param {number} angle Angle to rotate.
- * @param {string=} opt_unit Units. Defaults to degrees.
- * @return {lime.style.Transform} object itself.
- */
-lime.style.Transform.prototype.rotate = function(angle, opt_unit) {
- var rot_str;
-
- if (this.enable3D_ && (lime.userAgent.IOS || lime.userAgent.PLAYBOOK)) {
- rot_str = 'rotate3d(0, 0, 1, ' + angle + (opt_unit ? opt_unit : 'deg') + ')';
- } else {
- rot_str = 'rotate(' + angle + (opt_unit ? opt_unit : 'deg') + ')';
- }
- if (angle != 0)
- this.values.push(rot_str);
-
- return this;
-};
-
-/**
- * Translate(move) current transform object
- * @param {number} tx Offset in x-axis.
- * @param {number} ty Offset in y-axis.
- * @param {number=} opt_tz Offset in z-axis.
- * @return {lime.style.Transform} object itself.
- */
-lime.style.Transform.prototype.translate = function(tx, ty, opt_tz) {
-
- var p = 1 / this.precision;
- var val = 'translate';
-
- if (this.enable3D_ && (lime.userAgent.CHROME || lime.userAgent.IOS || lime.userAgent.PLAYBOOK)) {
- val += '3d';
- }
- val += '(' + (tx * p) + 'px,' + (ty * p) + 'px';
- if (this.enable3D_ && (lime.userAgent.CHROME || lime.userAgent.IOS || lime.userAgent.PLAYBOOK)) {
- val += ',' + ((opt_tz ? opt_tz : 0) * p) + 'px';
- }
- this.values.push(val + ')');
-
- return this;
-};
-
-/**
- * Set the current precision of transform. This is handled as a
- * state machine so it's added when called not when done.
- * @param {number} p Precision(Lowest value to make a difference).
- * @return {lime.style.Transform} object itself.
- */
-lime.style.Transform.prototype.setPrecision = function(p) {
- if (this.precision != 1) {
- var opposite = 1 / this.precision;
- this.scale(opposite, opposite);
- this.precision = 1;
- }
- if (p != 1) {
- this.scale(p, p);
- this.precision = p;
- }
- return this;
-};
-
-/**
- * Return CSS transform string from the object
- * @return {string} CSS value string.
- */
-lime.style.Transform.prototype.toString = function() {
- if (this.precision != 1) {
- this.setPrecision(1);
- }
- return this.values.join(' ');
-};
-
/**
* Set transform to a DOM element.
* @param {Element} el Element to change.
@@ -194,6 +81,37 @@ lime.style.setTransform = (function() {
};
})();
+lime.style.setAffineTransform = (function () {
+ var stylename = lime.style.getCSSproperty('Transform');
+ return function (el, transform) {
+ var value = 'matrix3d(' +
+ [ transform.m00_,
+ transform.m10_,
+ 0,
+ 0,
+ transform.m01_,
+ transform.m11_,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 0,
+ transform.m02_,
+ transform.m12_,
+ 0,
+ 1].join(
+ ',') +
+ ')';
+
+ if (value != el.transform_cache_) {
+ el.style[stylename] = el.transform_cache_ = value;
+ }
+ lime.transformSet_=1;
+
+ };
+})();
+
/**
* Set transform origin point for a DOM element.
* @param {Element} el Element to change.
diff --git a/lime/src/math/affinetransform.js b/lime/src/math/affinetransform.js
new file mode 100644
index 00000000..64a34915
--- /dev/null
+++ b/lime/src/math/affinetransform.js
@@ -0,0 +1,589 @@
+// Copyright 2008 The Closure Library Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS-IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+/**
+ * @fileoverview Provides an object representation of an AffineTransform and
+ * methods for working with it.
+ */
+
+
+goog.provide('lime.math.AffineTransform');
+
+goog.require('goog.math');
+goog.require('lime.math.TrigTable');
+
+
+
+/**
+ * Creates a 2D affine transform. An affine transform performs a linear
+ * mapping from 2D coordinates to other 2D coordinates that preserves the
+ * "straightness" and "parallelness" of lines.
+ *
+ * Such a coordinate transformation can be represented by a 3 row by 3 column
+ * matrix with an implied last row of [ 0 0 1 ]. This matrix transforms source
+ * coordinates (x,y) into destination coordinates (x',y') by considering them
+ * to be a column vector and multiplying the coordinate vector by the matrix
+ * according to the following process:
+ *
+ * [ x'] [ m00 m01 m02 ] [ x ] [ m00x + m01y + m02 ]
+ * [ y'] = [ m10 m11 m12 ] [ y ] = [ m10x + m11y + m12 ]
+ * [ 1 ] [ 0 0 1 ] [ 1 ] [ 1 ]
+ *
+ *
+ * This class is optimized for speed and minimizes calculations based on its
+ * knowledge of the underlying matrix (as opposed to say simply performing
+ * matrix multiplication).
+ *
+ * @param {number=} opt_m00 The m00 coordinate of the transform.
+ * @param {number=} opt_m10 The m10 coordinate of the transform.
+ * @param {number=} opt_m01 The m01 coordinate of the transform.
+ * @param {number=} opt_m11 The m11 coordinate of the transform.
+ * @param {number=} opt_m02 The m02 coordinate of the transform.
+ * @param {number=} opt_m12 The m12 coordinate of the transform.
+ * @constructor
+ * @final
+ */
+lime.math.AffineTransform = function(opt_m00, opt_m10, opt_m01,
+ opt_m11, opt_m02, opt_m12) {
+ if (arguments.length == 6) {
+ this.setTransform(/** @type {number} */ (opt_m00),
+ /** @type {number} */ (opt_m10),
+ /** @type {number} */ (opt_m01),
+ /** @type {number} */ (opt_m11),
+ /** @type {number} */ (opt_m02),
+ /** @type {number} */ (opt_m12));
+ } else if (arguments.length != 0) {
+ throw Error('Insufficient matrix parameters');
+ } else {
+ this.m00_ = this.m11_ = 1;
+ this.m10_ = this.m01_ = this.m02_ = this.m12_ = 0;
+ }
+};
+
+
+/**
+ * @return {boolean} Whether this transform is the identity transform.
+ */
+lime.math.AffineTransform.prototype.isIdentity = function() {
+ return this.m00_ == 1 && this.m10_ == 0 && this.m01_ == 0 &&
+ this.m11_ == 1 && this.m02_ == 0 && this.m12_ == 0;
+};
+
+
+/**
+ * @return {!lime.math.AffineTransform} A copy of this transform.
+ */
+lime.math.AffineTransform.prototype.clone = function() {
+ return new lime.math.AffineTransform(this.m00_, this.m10_, this.m01_,
+ this.m11_, this.m02_, this.m12_);
+};
+
+
+/**
+ * Sets this transform to the matrix specified by the 6 values.
+ *
+ * @param {number} m00 The m00 coordinate of the transform.
+ * @param {number} m10 The m10 coordinate of the transform.
+ * @param {number} m01 The m01 coordinate of the transform.
+ * @param {number} m11 The m11 coordinate of the transform.
+ * @param {number} m02 The m02 coordinate of the transform.
+ * @param {number} m12 The m12 coordinate of the transform.
+ * @return {!lime.math.AffineTransform} This affine transform.
+ */
+lime.math.AffineTransform.prototype.setTransform = function(m00, m10, m01,
+ m11, m02, m12) {
+ if (!goog.isNumber(m00) || !goog.isNumber(m10) || !goog.isNumber(m01) ||
+ !goog.isNumber(m11) || !goog.isNumber(m02) || !goog.isNumber(m12)) {
+ throw Error('Invalid transform parameters');
+ }
+ this.m00_ = m00;
+ this.m10_ = m10;
+ this.m01_ = m01;
+ this.m11_ = m11;
+ this.m02_ = m02;
+ this.m12_ = m12;
+ return this;
+};
+
+
+/**
+ * Sets this transform to be identical to the given transform.
+ *
+ * @param {!lime.math.AffineTransform} tx The transform to copy.
+ * @return {!lime.math.AffineTransform} This affine transform.
+ */
+lime.math.AffineTransform.prototype.copyFrom = function(tx) {
+ this.m00_ = tx.m00_;
+ this.m10_ = tx.m10_;
+ this.m01_ = tx.m01_;
+ this.m11_ = tx.m11_;
+ this.m02_ = tx.m02_;
+ this.m12_ = tx.m12_;
+ return this;
+};
+
+
+/**
+ * Concatenates this transform with a scaling transformation.
+ *
+ * @param {number} sx The x-axis scaling factor.
+ * @param {number} sy The y-axis scaling factor.
+ * @return {!lime.math.AffineTransform} This affine transform.
+ */
+lime.math.AffineTransform.prototype.scale = function(sx, sy) {
+ this.m00_ *= sx;
+ this.m10_ *= sx;
+ this.m01_ *= sy;
+ this.m11_ *= sy;
+ return this;
+};
+
+
+/**
+ * Pre-concatenates this transform with a scaling transformation,
+ * i.e. calculates the following matrix product:
+ *
+ *
+ * [sx 0 0] [m00 m01 m02]
+ * [ 0 sy 0] [m10 m11 m12]
+ * [ 0 0 1] [ 0 0 1]
+ *
+ *
+ * @param {number} sx The x-axis scaling factor.
+ * @param {number} sy The y-axis scaling factor.
+ * @return {!lime.math.AffineTransform} This affine transform.
+ */
+lime.math.AffineTransform.prototype.preScale = function(sx, sy) {
+ this.m00_ *= sx;
+ this.m01_ *= sx;
+ this.m02_ *= sx;
+ this.m10_ *= sy;
+ this.m11_ *= sy;
+ this.m12_ *= sy;
+ return this;
+};
+
+
+/**
+ * Concatenates this transform with a translate transformation.
+ *
+ * @param {number} dx The distance to translate in the x direction.
+ * @param {number} dy The distance to translate in the y direction.
+ * @return {!lime.math.AffineTransform} This affine transform.
+ */
+lime.math.AffineTransform.prototype.translate = function(dx, dy) {
+ this.m02_ += dx * this.m00_ + dy * this.m01_;
+ this.m12_ += dx * this.m10_ + dy * this.m11_;
+ return this;
+};
+
+
+/**
+ * Pre-concatenates this transform with a translate transformation,
+ * i.e. calculates the following matrix product:
+ *
+ *
+ * [1 0 dx] [m00 m01 m02]
+ * [0 1 dy] [m10 m11 m12]
+ * [0 0 1] [ 0 0 1]
+ *
+ *
+ * @param {number} dx The distance to translate in the x direction.
+ * @param {number} dy The distance to translate in the y direction.
+ * @return {!lime.math.AffineTransform} This affine transform.
+ */
+lime.math.AffineTransform.prototype.preTranslate = function(dx, dy) {
+ this.m02_ += dx;
+ this.m12_ += dy;
+ return this;
+};
+
+
+/**
+ * Concatenates this transform with a rotation transformation around an anchor
+ * point.
+ *
+ * @param {number} theta The angle of rotation measured in radians.
+ * @param {number} x The x coordinate of the anchor point.
+ * @param {number} y The y coordinate of the anchor point.
+ * @return {!lime.math.AffineTransform} This affine transform.
+ */
+lime.math.AffineTransform.prototype.rotate = function(theta, x, y) {
+ return this.concatenate(
+ lime.math.AffineTransform.getRotateInstance(theta, x, y));
+};
+
+
+/**
+ * Pre-concatenates this transform with a rotation transformation around an
+ * anchor point.
+ *
+ * @param {number} theta The angle of rotation measured in radians.
+ * @param {number} x The x coordinate of the anchor point.
+ * @param {number} y The y coordinate of the anchor point.
+ * @return {!lime.math.AffineTransform} This affine transform.
+ */
+lime.math.AffineTransform.prototype.preRotate = function(theta, x, y) {
+ return this.preConcatenate(
+ lime.math.AffineTransform.getRotateInstance(theta, x, y));
+};
+
+
+/**
+ * Concatenates this transform with a shear transformation.
+ *
+ * @param {number} shx The x shear factor.
+ * @param {number} shy The y shear factor.
+ * @return {!lime.math.AffineTransform} This affine transform.
+ */
+lime.math.AffineTransform.prototype.shear = function(shx, shy) {
+ var m00 = this.m00_;
+ var m10 = this.m10_;
+ this.m00_ += shy * this.m01_;
+ this.m10_ += shy * this.m11_;
+ this.m01_ += shx * m00;
+ this.m11_ += shx * m10;
+ return this;
+};
+
+
+/**
+ * Pre-concatenates this transform with a shear transformation.
+ * i.e. calculates the following matrix product:
+ *
+ *
+ * [ 1 shx 0] [m00 m01 m02]
+ * [shy 1 0] [m10 m11 m12]
+ * [ 0 0 1] [ 0 0 1]
+ *
+ *
+ * @param {number} shx The x shear factor.
+ * @param {number} shy The y shear factor.
+ * @return {!lime.math.AffineTransform} This affine transform.
+ */
+lime.math.AffineTransform.prototype.preShear = function(shx, shy) {
+ var m00 = this.m00_;
+ var m01 = this.m01_;
+ var m02 = this.m02_;
+ this.m00_ += shx * this.m10_;
+ this.m01_ += shx * this.m11_;
+ this.m02_ += shx * this.m12_;
+ this.m10_ += shy * m00;
+ this.m11_ += shy * m01;
+ this.m12_ += shy * m02;
+ return this;
+};
+
+
+/**
+ * @return {string} A string representation of this transform. The format of
+ * of the string is compatible with SVG matrix notation, i.e.
+ * "matrix(a,b,c,d,e,f)".
+ * @override
+ */
+lime.math.AffineTransform.prototype.toString = function() {
+ return 'matrix(' +
+ [this.m00_, this.m10_, this.m01_, this.m11_, this.m02_, this.m12_].join(
+ ',') +
+ ')';
+};
+
+
+/**
+ * @return {number} The scaling factor in the x-direction (m00).
+ */
+lime.math.AffineTransform.prototype.getScaleX = function() {
+ return this.m00_;
+};
+
+
+/**
+ * @return {number} The scaling factor in the y-direction (m11).
+ */
+lime.math.AffineTransform.prototype.getScaleY = function() {
+ return this.m11_;
+};
+
+
+/**
+ * @return {number} The translation in the x-direction (m02).
+ */
+lime.math.AffineTransform.prototype.getTranslateX = function() {
+ return this.m02_;
+};
+
+
+/**
+ * @return {number} The translation in the y-direction (m12).
+ */
+lime.math.AffineTransform.prototype.getTranslateY = function() {
+ return this.m12_;
+};
+
+
+/**
+ * @return {number} The shear factor in the x-direction (m01).
+ */
+lime.math.AffineTransform.prototype.getShearX = function() {
+ return this.m01_;
+};
+
+
+/**
+ * @return {number} The shear factor in the y-direction (m10).
+ */
+lime.math.AffineTransform.prototype.getShearY = function() {
+ return this.m10_;
+};
+
+
+/**
+ * Concatenates an affine transform to this transform.
+ *
+ * @param {!lime.math.AffineTransform} tx The transform to concatenate.
+ * @return {!lime.math.AffineTransform} This affine transform.
+ */
+lime.math.AffineTransform.prototype.concatenate = function(tx) {
+ var m0 = this.m00_;
+ var m1 = this.m01_;
+ this.m00_ = tx.m00_ * m0 + tx.m10_ * m1;
+ this.m01_ = tx.m01_ * m0 + tx.m11_ * m1;
+ this.m02_ += tx.m02_ * m0 + tx.m12_ * m1;
+
+ m0 = this.m10_;
+ m1 = this.m11_;
+ this.m10_ = tx.m00_ * m0 + tx.m10_ * m1;
+ this.m11_ = tx.m01_ * m0 + tx.m11_ * m1;
+ this.m12_ += tx.m02_ * m0 + tx.m12_ * m1;
+ return this;
+};
+
+
+/**
+ * Pre-concatenates an affine transform to this transform.
+ *
+ * @param {!lime.math.AffineTransform} tx The transform to preconcatenate.
+ * @return {!lime.math.AffineTransform} This affine transform.
+ */
+lime.math.AffineTransform.prototype.preConcatenate = function(tx) {
+ var m0 = this.m00_;
+ var m1 = this.m10_;
+ this.m00_ = tx.m00_ * m0 + tx.m01_ * m1;
+ this.m10_ = tx.m10_ * m0 + tx.m11_ * m1;
+
+ m0 = this.m01_;
+ m1 = this.m11_;
+ this.m01_ = tx.m00_ * m0 + tx.m01_ * m1;
+ this.m11_ = tx.m10_ * m0 + tx.m11_ * m1;
+
+ m0 = this.m02_;
+ m1 = this.m12_;
+ this.m02_ = tx.m00_ * m0 + tx.m01_ * m1 + tx.m02_;
+ this.m12_ = tx.m10_ * m0 + tx.m11_ * m1 + tx.m12_;
+ return this;
+};
+
+
+/**
+ * Transforms an array of coordinates by this transform and stores the result
+ * into a destination array.
+ *
+ * @param {!Array.} src The array containing the source points
+ * as x, y value pairs.
+ * @param {number} srcOff The offset to the first point to be transformed.
+ * @param {!Array.} dst The array into which to store the transformed
+ * point pairs.
+ * @param {number} dstOff The offset of the location of the first transformed
+ * point in the destination array.
+ * @param {number} numPts The number of points to tranform.
+ */
+lime.math.AffineTransform.prototype.transform = function(src, srcOff, dst,
+ dstOff, numPts) {
+ var i = srcOff;
+ var j = dstOff;
+ var srcEnd = srcOff + 2 * numPts;
+ while (i < srcEnd) {
+ var x = src[i++];
+ var y = src[i++];
+ dst[j++] = x * this.m00_ + y * this.m01_ + this.m02_;
+ dst[j++] = x * this.m10_ + y * this.m11_ + this.m12_;
+ }
+};
+
+
+/**
+ * @return {number} The determinant of this transform.
+ */
+lime.math.AffineTransform.prototype.getDeterminant = function() {
+ return this.m00_ * this.m11_ - this.m01_ * this.m10_;
+};
+
+
+/**
+ * Returns whether the transform is invertible. A transform is not invertible
+ * if the determinant is 0 or any value is non-finite or NaN.
+ *
+ * @return {boolean} Whether the transform is invertible.
+ */
+lime.math.AffineTransform.prototype.isInvertible = function() {
+ var det = this.getDeterminant();
+ return goog.math.isFiniteNumber(det) &&
+ goog.math.isFiniteNumber(this.m02_) &&
+ goog.math.isFiniteNumber(this.m12_) &&
+ det != 0;
+};
+
+
+/**
+ * @return {!lime.math.AffineTransform} An AffineTransform object
+ * representing the inverse transformation.
+ */
+lime.math.AffineTransform.prototype.createInverse = function() {
+ var det = this.getDeterminant();
+ return new lime.math.AffineTransform(
+ this.m11_ / det,
+ -this.m10_ / det,
+ -this.m01_ / det,
+ this.m00_ / det,
+ (this.m01_ * this.m12_ - this.m11_ * this.m02_) / det,
+ (this.m10_ * this.m02_ - this.m00_ * this.m12_) / det);
+};
+
+
+/**
+ * Creates a transform representing a scaling transformation.
+ *
+ * @param {number} sx The x-axis scaling factor.
+ * @param {number} sy The y-axis scaling factor.
+ * @return {!lime.math.AffineTransform} A transform representing a scaling
+ * transformation.
+ */
+lime.math.AffineTransform.getScaleInstance = function(sx, sy) {
+ return new lime.math.AffineTransform().setToScale(sx, sy);
+};
+
+
+/**
+ * Creates a transform representing a translation transformation.
+ *
+ * @param {number} dx The distance to translate in the x direction.
+ * @param {number} dy The distance to translate in the y direction.
+ * @return {!lime.math.AffineTransform} A transform representing a
+ * translation transformation.
+ */
+lime.math.AffineTransform.getTranslateInstance = function(dx, dy) {
+ return new lime.math.AffineTransform().setToTranslation(dx, dy);
+};
+
+
+/**
+ * Creates a transform representing a shearing transformation.
+ *
+ * @param {number} shx The x-axis shear factor.
+ * @param {number} shy The y-axis shear factor.
+ * @return {!lime.math.AffineTransform} A transform representing a shearing
+ * transformation.
+ */
+lime.math.AffineTransform.getShearInstance = function(shx, shy) {
+ return new lime.math.AffineTransform().setToShear(shx, shy);
+};
+
+
+/**
+ * Creates a transform representing a rotation transformation.
+ *
+ * @param {number} theta The angle of rotation measured in radians.
+ * @param {number} x The x coordinate of the anchor point.
+ * @param {number} y The y coordinate of the anchor point.
+ * @return {!lime.math.AffineTransform} A transform representing a rotation
+ * transformation.
+ */
+lime.math.AffineTransform.getRotateInstance = function(theta, x, y) {
+ return new lime.math.AffineTransform().setToRotation(theta, x, y);
+};
+
+
+/**
+ * Sets this transform to a scaling transformation.
+ *
+ * @param {number} sx The x-axis scaling factor.
+ * @param {number} sy The y-axis scaling factor.
+ * @return {!lime.math.AffineTransform} This affine transform.
+ */
+lime.math.AffineTransform.prototype.setToScale = function(sx, sy) {
+ return this.setTransform(sx, 0, 0, sy, 0, 0);
+};
+
+
+/**
+ * Sets this transform to a translation transformation.
+ *
+ * @param {number} dx The distance to translate in the x direction.
+ * @param {number} dy The distance to translate in the y direction.
+ * @return {!lime.math.AffineTransform} This affine transform.
+ */
+lime.math.AffineTransform.prototype.setToTranslation = function(dx, dy) {
+ return this.setTransform(1, 0, 0, 1, dx, dy);
+};
+
+
+/**
+ * Sets this transform to a shearing transformation.
+ *
+ * @param {number} shx The x-axis shear factor.
+ * @param {number} shy The y-axis shear factor.
+ * @return {!lime.math.AffineTransform} This affine transform.
+ */
+lime.math.AffineTransform.prototype.setToShear = function(shx, shy) {
+ return this.setTransform(1, shy, shx, 1, 0, 0);
+};
+
+
+/**
+ * Sets this transform to a rotation transformation.
+ *
+ * @param {number} theta The angle of rotation measured in radians.
+ * @param {number} x The x coordinate of the anchor point.
+ * @param {number} y The y coordinate of the anchor point.
+ * @return {!lime.math.AffineTransform} This affine transform.
+ */
+lime.math.AffineTransform.prototype.setToRotation = function(theta, x, y) {
+ var cos = lime.math.TrigTable.getCosineFromRadians(theta);
+ var sin = lime.math.TrigTable.getSineFromRadians(theta);
+ return this.setTransform(cos, sin, -sin, cos,
+ x - x * cos + y * sin, y - x * sin - y * cos);
+};
+
+
+/**
+ * Compares two affine transforms for equality.
+ *
+ * @param {lime.math.AffineTransform} tx The other affine transform.
+ * @return {boolean} whether the two transforms are equal.
+ */
+lime.math.AffineTransform.prototype.equals = function(tx) {
+ if (this == tx) {
+ return true;
+ }
+ if (!tx) {
+ return false;
+ }
+ return this.m00_ == tx.m00_ &&
+ this.m01_ == tx.m01_ &&
+ this.m02_ == tx.m02_ &&
+ this.m10_ == tx.m10_ &&
+ this.m11_ == tx.m11_ &&
+ this.m12_ == tx.m12_;
+};
diff --git a/lime/src/math/trigtables.js b/lime/src/math/trigtables.js
new file mode 100644
index 00000000..ea2f0a03
--- /dev/null
+++ b/lime/src/math/trigtables.js
@@ -0,0 +1,100 @@
+goog.provide('lime.math.TrigTable');
+
+/*
+ * Not used at runtime...this is only used to generate new tables
+ */
+lime.math.TrigTable.generateNewTable = function () {
+
+ var len = lime.math.TrigTable.segments_;
+
+ var sine = lime.math.TrigTable.sin_;
+ var cosine = lime.math.TrigTable.cos_;
+
+ var twoPie = 2 * Math.PI;
+ var increment = twoPie / len;
+ var curvalue = 0;
+
+ for (var i = 0; i < len; ++i) {
+
+ // --- Use toFixed() here since CSS can't handle exponential numbers
+ sine[i] = Math.sin(curvalue).toFixed(7);
+ cosine[i] = Math.cos(curvalue).toFixed(7);
+
+ curvalue += increment;
+ }
+
+ console.log("sin: " + sine);
+ console.log("cos: " + cosine);
+};
+
+lime.math.TrigTable.segments_ = 4000;
+
+
+lime.math.TrigTable.twoPie_ = 2 * Math.PI;
+lime.math.TrigTable.radToDeg = 360 / lime.math.TrigTable.twoPie_;
+
+
+lime.math.TrigTable.getSine = function (deg) {
+
+ if (deg === undefined) { return NaN; }
+
+ //var index = lime.math.TrigTable.getIndex(deg);
+
+ // --- DUPLICATION for speed, these functions get call A LOT!
+ while (deg < 0) {
+ deg += 360;
+ }
+
+ while (deg > lime.math.TrigTable.segments_) {
+ deg -= 360;
+ }
+
+ var segments = lime.math.TrigTable.segments_;
+ var factor = segments / 360 ;
+
+ var index = parseInt(Math.floor(deg * factor), 10);
+ // --- END DUPLICATION
+
+ return lime.math.TrigTable.sin_[index];
+};
+
+lime.math.TrigTable.getSineFromRadians = function (rad) {
+
+ if (rad === undefined) { return NaN; }
+
+ var deg = lime.math.TrigTable.radToDeg * rad;
+ return lime.math.TrigTable.getSine(deg);
+};
+
+lime.math.TrigTable.getCosine = function (deg) {
+
+ if (deg === undefined) { return NaN; }
+
+ // --- DUPLICATION for speed, these functions get call A LOT!
+ while (deg < 0) {
+ deg += 360;
+ }
+
+ while (deg > lime.math.TrigTable.segments_) {
+ deg -= 360;
+ }
+
+ var segments = lime.math.TrigTable.segments_;
+ var factor = segments / 360 ;
+
+ var index = parseInt(Math.floor(deg * factor), 10);
+ // --- END DUPLICATION
+
+ return lime.math.TrigTable.cos_[index];
+};
+
+lime.math.TrigTable.getCosineFromRadians = function (rad) {
+
+ if (rad === undefined) { return NaN; }
+
+ var deg = lime.math.TrigTable.radToDeg * rad;
+ return lime.math.TrigTable.getCosine(deg);
+};
+
+lime.math.TrigTable.sin_ = [0.0000000,0.0015708,0.0031416,0.0047124,0.0062831,0.0078539,0.0094246,0.0109954,0.0125660,0.0141367,0.0157073,0.0172779,0.0188484,0.0204189,0.0219894,0.0235598,0.0251301,0.0267004,0.0282706,0.0298407,0.0314108,0.0329807,0.0345506,0.0361205,0.0376902,0.0392598,0.0408294,0.0423988,0.0439681,0.0455373,0.0471065,0.0486754,0.0502443,0.0518131,0.0533817,0.0549502,0.0565185,0.0580867,0.0596548,0.0612227,0.0627905,0.0643581,0.0659256,0.0674929,0.0690600,0.0706270,0.0721938,0.0737604,0.0753268,0.0768930,0.0784591,0.0800250,0.0815906,0.0831561,0.0847213,0.0862864,0.0878512,0.0894158,0.0909802,0.0925444,0.0941083,0.0956720,0.0972355,0.0987987,0.1003617,0.1019245,0.1034869,0.1050492,0.1066112,0.1081729,0.1097343,0.1112955,0.1128564,0.1144170,0.1159773,0.1175374,0.1190972,0.1206566,0.1222158,0.1237747,0.1253332,0.1268915,0.1284494,0.1300071,0.1315644,0.1331213,0.1346780,0.1362343,0.1377903,0.1393459,0.1409012,0.1424562,0.1440108,0.1455650,0.1471189,0.1486724,0.1502256,0.1517784,0.1533308,0.1548828,0.1564345,0.1579857,0.1595366,0.1610871,0.1626372,0.1641868,0.1657361,0.1672850,0.1688334,0.1703815,0.1719291,0.1734763,0.1750231,0.1765694,0.1781153,0.1796607,0.1812058,0.1827503,0.1842944,0.1858381,0.1873813,0.1889241,0.1904663,0.1920081,0.1935495,0.1950903,0.1966307,0.1981706,0.1997100,0.2012489,0.2027873,0.2043252,0.2058626,0.2073995,0.2089359,0.2104718,0.2120071,0.2135419,0.2150762,0.2166100,0.2181432,0.2196759,0.2212081,0.2227397,0.2242708,0.2258013,0.2273312,0.2288606,0.2303894,0.2319177,0.2334454,0.2349725,0.2364990,0.2380249,0.2395503,0.2410751,0.2425992,0.2441228,0.2456458,0.2471681,0.2486899,0.2502110,0.2517315,0.2532514,0.2547707,0.2562894,0.2578074,0.2593248,0.2608415,0.2623576,0.2638730,0.2653878,0.2669020,0.2684155,0.2699283,0.2714404,0.2729519,0.2744627,0.2759729,0.2774823,0.2789911,0.2804992,0.2820066,0.2835133,0.2850193,0.2865246,0.2880291,0.2895330,0.2910362,0.2925386,0.2940403,0.2955413,0.2970416,0.2985411,0.3000399,0.3015380,0.3030353,0.3045318,0.3060276,0.3075227,0.3090170,0.3105105,0.3120033,0.3134953,0.3149865,0.3164770,0.3179666,0.3194555,0.3209436,0.3224309,0.3239174,0.3254031,0.3268880,0.3283721,0.3298554,0.3313379,0.3328195,0.3343004,0.3357804,0.3372596,0.3387379,0.3402154,0.3416921,0.3431679,0.3446429,0.3461171,0.3475903,0.3490628,0.3505343,0.3520050,0.3534748,0.3549438,0.3564119,0.3578791,0.3593454,0.3608108,0.3622754,0.3637390,0.3652018,0.3666636,0.3681246,0.3695846,0.3710437,0.3725019,0.3739592,0.3754156,0.3768710,0.3783255,0.3797791,0.3812317,0.3826834,0.3841342,0.3855840,0.3870328,0.3884807,0.3899277,0.3913737,0.3928187,0.3942627,0.3957058,0.3971479,0.3985890,0.4000291,0.4014683,0.4029064,0.4043436,0.4057798,0.4072149,0.4086491,0.4100822,0.4115144,0.4129455,0.4143756,0.4158047,0.4172327,0.4186597,0.4200857,0.4215107,0.4229346,0.4243575,0.4257793,0.4272001,0.4286198,0.4300384,0.4314560,0.4328726,0.4342880,0.4357024,0.4371158,0.4385280,0.4399392,0.4413492,0.4427582,0.4441661,0.4455729,0.4469786,0.4483832,0.4497867,0.4511891,0.4525904,0.4539905,0.4553895,0.4567874,0.4581842,0.4595799,0.4609744,0.4623678,0.4637600,0.4651511,0.4665410,0.4679298,0.4693175,0.4707039,0.4720893,0.4734734,0.4748564,0.4762382,0.4776188,0.4789983,0.4803766,0.4817537,0.4831296,0.4845043,0.4858778,0.4872501,0.4886212,0.4899912,0.4913599,0.4927273,0.4940936,0.4954587,0.4968225,0.4981851,0.4995465,0.5009066,0.5022655,0.5036232,0.5049796,0.5063348,0.5076887,0.5090414,0.5103928,0.5117430,0.5130919,0.5144395,0.5157859,0.5171310,0.5184748,0.5198173,0.5211586,0.5224986,0.5238372,0.5251746,0.5265107,0.5278455,0.5291790,0.5305112,0.5318421,0.5331716,0.5344999,0.5358268,0.5371524,0.5384767,0.5397996,0.5411213,0.5424415,0.5437605,0.5450781,0.5463943,0.5477093,0.5490228,0.5503350,0.5516459,0.5529554,0.5542635,0.5555702,0.5568756,0.5581796,0.5594823,0.5607835,0.5620834,0.5633819,0.5646790,0.5659746,0.5672689,0.5685619,0.5698533,0.5711434,0.5724321,0.5737194,0.5750053,0.5762897,0.5775727,0.5788543,0.5801345,0.5814132,0.5826905,0.5839663,0.5852408,0.5865137,0.5877853,0.5890553,0.5903239,0.5915911,0.5928568,0.5941211,0.5953838,0.5966451,0.5979050,0.5991633,0.6004202,0.6016756,0.6029295,0.6041820,0.6054329,0.6066824,0.6079303,0.6091767,0.6104217,0.6116651,0.6129071,0.6141475,0.6153864,0.6166238,0.6178596,0.6190939,0.6203268,0.6215580,0.6227878,0.6240160,0.6252427,0.6264678,0.6276914,0.6289134,0.6301339,0.6313528,0.6325702,0.6337860,0.6350002,0.6362129,0.6374240,0.6386335,0.6398415,0.6410479,0.6422527,0.6434559,0.6446575,0.6458575,0.6470560,0.6482528,0.6494480,0.6506417,0.6518337,0.6530242,0.6542130,0.6554002,0.6565858,0.6577697,0.6589521,0.6601328,0.6613119,0.6624893,0.6636651,0.6648393,0.6660119,0.6671828,0.6683520,0.6695196,0.6706856,0.6718499,0.6730125,0.6741735,0.6753328,0.6764905,0.6776464,0.6788007,0.6799534,0.6811043,0.6822536,0.6834012,0.6845471,0.6856913,0.6868338,0.6879747,0.6891138,0.6902512,0.6913870,0.6925210,0.6936533,0.6947839,0.6959128,0.6970400,0.6981654,0.6992891,0.7004112,0.7015314,0.7026500,0.7037668,0.7048819,0.7059952,0.7071068,0.7082166,0.7093247,0.7104311,0.7115357,0.7126385,0.7137396,0.7148389,0.7159365,0.7170323,0.7181263,0.7192185,0.7203090,0.7213977,0.7224846,0.7235698,0.7246531,0.7257347,0.7268145,0.7278924,0.7289686,0.7300430,0.7311156,0.7321864,0.7332553,0.7343225,0.7353879,0.7364514,0.7375131,0.7385730,0.7396311,0.7406873,0.7417418,0.7427944,0.7438451,0.7448941,0.7459411,0.7469864,0.7480298,0.7490714,0.7501111,0.7511489,0.7521849,0.7532191,0.7542514,0.7552818,0.7563104,0.7573371,0.7583619,0.7593849,0.7604060,0.7614252,0.7624425,0.7634580,0.7644715,0.7654832,0.7664930,0.7675009,0.7685069,0.7695110,0.7705132,0.7715136,0.7725120,0.7735085,0.7745031,0.7754957,0.7764865,0.7774754,0.7784623,0.7794473,0.7804304,0.7814116,0.7823908,0.7833681,0.7843435,0.7853169,0.7862884,0.7872580,0.7882256,0.7891913,0.7901550,0.7911168,0.7920766,0.7930345,0.7939904,0.7949444,0.7958963,0.7968464,0.7977944,0.7987405,0.7996847,0.8006268,0.8015670,0.8025052,0.8034414,0.8043756,0.8053079,0.8062381,0.8071664,0.8080927,0.8090170,0.8099393,0.8108596,0.8117779,0.8126942,0.8136084,0.8145207,0.8154310,0.8163393,0.8172455,0.8181497,0.8190519,0.8199521,0.8208503,0.8217464,0.8226405,0.8235326,0.8244226,0.8253107,0.8261966,0.8270806,0.8279625,0.8288423,0.8297201,0.8305959,0.8314696,0.8323413,0.8332109,0.8340784,0.8349439,0.8358074,0.8366687,0.8375280,0.8383853,0.8392405,0.8400936,0.8409446,0.8417935,0.8426404,0.8434852,0.8443279,0.8451686,0.8460071,0.8468436,0.8476779,0.8485102,0.8493404,0.8501685,0.8509945,0.8518184,0.8526402,0.8534599,0.8542774,0.8550929,0.8559063,0.8567175,0.8575267,0.8583337,0.8591386,0.8599414,0.8607420,0.8615406,0.8623370,0.8631313,0.8639234,0.8647134,0.8655013,0.8662871,0.8670707,0.8678522,0.8686315,0.8694087,0.8701838,0.8709567,0.8717274,0.8724960,0.8732625,0.8740267,0.8747889,0.8755489,0.8763067,0.8770623,0.8778158,0.8785672,0.8793163,0.8800633,0.8808081,0.8815508,0.8822912,0.8830295,0.8837656,0.8844996,0.8852313,0.8859609,0.8866883,0.8874134,0.8881364,0.8888573,0.8895759,0.8902923,0.8910065,0.8917186,0.8924284,0.8931360,0.8938414,0.8945446,0.8952456,0.8959444,0.8966410,0.8973354,0.8980276,0.8987175,0.8994053,0.9000908,0.9007741,0.9014551,0.9021340,0.9028106,0.9034850,0.9041571,0.9048271,0.9054947,0.9061602,0.9068234,0.9074844,0.9081432,0.9087997,0.9094539,0.9101060,0.9107557,0.9114033,0.9120486,0.9126916,0.9133324,0.9139709,0.9146072,0.9152412,0.9158729,0.9165024,0.9171297,0.9177546,0.9183773,0.9189978,0.9196159,0.9202318,0.9208455,0.9214568,0.9220659,0.9226727,0.9232773,0.9238795,0.9244795,0.9250772,0.9256726,0.9262658,0.9268566,0.9274452,0.9280314,0.9286154,0.9291971,0.9297765,0.9303536,0.9309284,0.9315009,0.9320711,0.9326390,0.9332046,0.9337679,0.9343289,0.9348876,0.9354440,0.9359981,0.9365499,0.9370993,0.9376465,0.9381913,0.9387339,0.9392741,0.9398120,0.9403475,0.9408808,0.9414117,0.9419403,0.9424666,0.9429905,0.9435122,0.9440315,0.9445484,0.9450631,0.9455754,0.9460854,0.9465930,0.9470983,0.9476013,0.9481019,0.9486002,0.9490961,0.9495898,0.9500810,0.9505699,0.9510565,0.9515407,0.9520226,0.9525022,0.9529793,0.9534542,0.9539267,0.9543968,0.9548645,0.9553300,0.9557930,0.9562537,0.9567121,0.9571680,0.9576216,0.9580729,0.9585218,0.9589683,0.9594125,0.9598543,0.9602937,0.9607307,0.9611654,0.9615977,0.9620277,0.9624552,0.9628804,0.9633032,0.9637237,0.9641417,0.9645574,0.9649707,0.9653816,0.9657902,0.9661963,0.9666001,0.9670015,0.9674005,0.9677971,0.9681913,0.9685832,0.9689726,0.9693597,0.9697443,0.9701266,0.9705065,0.9708840,0.9712590,0.9716317,0.9720020,0.9723699,0.9727354,0.9730985,0.9734592,0.9738175,0.9741734,0.9745269,0.9748780,0.9752266,0.9755729,0.9759168,0.9762582,0.9765973,0.9769339,0.9772681,0.9775999,0.9779293,0.9782563,0.9785809,0.9789031,0.9792228,0.9795401,0.9798551,0.9801675,0.9804776,0.9807853,0.9810905,0.9813933,0.9816937,0.9819917,0.9822873,0.9825804,0.9828711,0.9831594,0.9834452,0.9837286,0.9840096,0.9842882,0.9845643,0.9848380,0.9851093,0.9853782,0.9856446,0.9859086,0.9861701,0.9864293,0.9866859,0.9869402,0.9871920,0.9874414,0.9876883,0.9879328,0.9881749,0.9884146,0.9886517,0.9888865,0.9891188,0.9893487,0.9895761,0.9898011,0.9900237,0.9902438,0.9904614,0.9906766,0.9908894,0.9910997,0.9913076,0.9915131,0.9917161,0.9919166,0.9921147,0.9923104,0.9925036,0.9926943,0.9928826,0.9930685,0.9932519,0.9934328,0.9936113,0.9937874,0.9939610,0.9941321,0.9943008,0.9944670,0.9946308,0.9947921,0.9949510,0.9951074,0.9952614,0.9954129,0.9955620,0.9957086,0.9958527,0.9959944,0.9961336,0.9962704,0.9964047,0.9965365,0.9966659,0.9967929,0.9969173,0.9970393,0.9971589,0.9972760,0.9973906,0.9975028,0.9976125,0.9977198,0.9978245,0.9979269,0.9980267,0.9981241,0.9982191,0.9983115,0.9984016,0.9984891,0.9985742,0.9986568,0.9987370,0.9988146,0.9988899,0.9989626,0.9990329,0.9991008,0.9991661,0.9992290,0.9992895,0.9993474,0.9994029,0.9994560,0.9995066,0.9995547,0.9996003,0.9996435,0.9996842,0.9997224,0.9997582,0.9997915,0.9998224,0.9998507,0.9998766,0.9999001,0.9999210,0.9999395,0.9999556,0.9999692,0.9999803,0.9999889,0.9999951,0.9999988,1.0000000,0.9999988,0.9999951,0.9999889,0.9999803,0.9999692,0.9999556,0.9999395,0.9999210,0.9999001,0.9998766,0.9998507,0.9998224,0.9997915,0.9997582,0.9997224,0.9996842,0.9996435,0.9996003,0.9995547,0.9995066,0.9994560,0.9994029,0.9993474,0.9992895,0.9992290,0.9991661,0.9991008,0.9990329,0.9989626,0.9988899,0.9988146,0.9987370,0.9986568,0.9985742,0.9984891,0.9984016,0.9983115,0.9982191,0.9981241,0.9980267,0.9979269,0.9978245,0.9977198,0.9976125,0.9975028,0.9973906,0.9972760,0.9971589,0.9970393,0.9969173,0.9967929,0.9966659,0.9965365,0.9964047,0.9962704,0.9961336,0.9959944,0.9958527,0.9957086,0.9955620,0.9954129,0.9952614,0.9951074,0.9949510,0.9947921,0.9946308,0.9944670,0.9943008,0.9941321,0.9939610,0.9937874,0.9936113,0.9934328,0.9932519,0.9930685,0.9928826,0.9926943,0.9925036,0.9923104,0.9921147,0.9919166,0.9917161,0.9915131,0.9913076,0.9910997,0.9908894,0.9906766,0.9904614,0.9902438,0.9900237,0.9898011,0.9895761,0.9893487,0.9891188,0.9888865,0.9886517,0.9884146,0.9881749,0.9879328,0.9876883,0.9874414,0.9871920,0.9869402,0.9866859,0.9864293,0.9861701,0.9859086,0.9856446,0.9853782,0.9851093,0.9848380,0.9845643,0.9842882,0.9840096,0.9837286,0.9834452,0.9831594,0.9828711,0.9825804,0.9822873,0.9819917,0.9816937,0.9813933,0.9810905,0.9807853,0.9804776,0.9801675,0.9798551,0.9795401,0.9792228,0.9789031,0.9785809,0.9782563,0.9779293,0.9775999,0.9772681,0.9769339,0.9765973,0.9762582,0.9759168,0.9755729,0.9752266,0.9748780,0.9745269,0.9741734,0.9738175,0.9734592,0.9730985,0.9727354,0.9723699,0.9720020,0.9716317,0.9712590,0.9708840,0.9705065,0.9701266,0.9697443,0.9693597,0.9689726,0.9685832,0.9681913,0.9677971,0.9674005,0.9670015,0.9666001,0.9661963,0.9657902,0.9653816,0.9649707,0.9645574,0.9641417,0.9637237,0.9633032,0.9628804,0.9624552,0.9620277,0.9615977,0.9611654,0.9607307,0.9602937,0.9598543,0.9594125,0.9589683,0.9585218,0.9580729,0.9576216,0.9571680,0.9567121,0.9562537,0.9557930,0.9553300,0.9548645,0.9543968,0.9539267,0.9534542,0.9529793,0.9525022,0.9520226,0.9515407,0.9510565,0.9505699,0.9500810,0.9495898,0.9490961,0.9486002,0.9481019,0.9476013,0.9470983,0.9465930,0.9460854,0.9455754,0.9450631,0.9445484,0.9440315,0.9435122,0.9429905,0.9424666,0.9419403,0.9414117,0.9408808,0.9403475,0.9398120,0.9392741,0.9387339,0.9381913,0.9376465,0.9370993,0.9365499,0.9359981,0.9354440,0.9348876,0.9343289,0.9337679,0.9332046,0.9326390,0.9320711,0.9315009,0.9309284,0.9303536,0.9297765,0.9291971,0.9286154,0.9280314,0.9274452,0.9268566,0.9262658,0.9256726,0.9250772,0.9244795,0.9238795,0.9232773,0.9226727,0.9220659,0.9214568,0.9208455,0.9202318,0.9196159,0.9189978,0.9183773,0.9177546,0.9171297,0.9165024,0.9158729,0.9152412,0.9146072,0.9139709,0.9133324,0.9126916,0.9120486,0.9114033,0.9107557,0.9101060,0.9094539,0.9087997,0.9081432,0.9074844,0.9068234,0.9061602,0.9054947,0.9048271,0.9041571,0.9034850,0.9028106,0.9021340,0.9014551,0.9007741,0.9000908,0.8994053,0.8987175,0.8980276,0.8973354,0.8966410,0.8959444,0.8952456,0.8945446,0.8938414,0.8931360,0.8924284,0.8917186,0.8910065,0.8902923,0.8895759,0.8888573,0.8881364,0.8874134,0.8866883,0.8859609,0.8852313,0.8844996,0.8837656,0.8830295,0.8822912,0.8815508,0.8808081,0.8800633,0.8793163,0.8785672,0.8778158,0.8770623,0.8763067,0.8755489,0.8747889,0.8740267,0.8732625,0.8724960,0.8717274,0.8709567,0.8701838,0.8694087,0.8686315,0.8678522,0.8670707,0.8662871,0.8655013,0.8647134,0.8639234,0.8631313,0.8623370,0.8615406,0.8607420,0.8599414,0.8591386,0.8583337,0.8575267,0.8567175,0.8559063,0.8550929,0.8542774,0.8534599,0.8526402,0.8518184,0.8509945,0.8501685,0.8493404,0.8485102,0.8476779,0.8468436,0.8460071,0.8451686,0.8443279,0.8434852,0.8426404,0.8417935,0.8409446,0.8400936,0.8392405,0.8383853,0.8375280,0.8366687,0.8358074,0.8349439,0.8340784,0.8332109,0.8323413,0.8314696,0.8305959,0.8297201,0.8288423,0.8279625,0.8270806,0.8261966,0.8253107,0.8244226,0.8235326,0.8226405,0.8217464,0.8208503,0.8199521,0.8190519,0.8181497,0.8172455,0.8163393,0.8154310,0.8145207,0.8136084,0.8126942,0.8117779,0.8108596,0.8099393,0.8090170,0.8080927,0.8071664,0.8062381,0.8053079,0.8043756,0.8034414,0.8025052,0.8015670,0.8006268,0.7996847,0.7987405,0.7977944,0.7968464,0.7958963,0.7949444,0.7939904,0.7930345,0.7920766,0.7911168,0.7901550,0.7891913,0.7882256,0.7872580,0.7862884,0.7853169,0.7843435,0.7833681,0.7823908,0.7814116,0.7804304,0.7794473,0.7784623,0.7774754,0.7764865,0.7754957,0.7745031,0.7735085,0.7725120,0.7715136,0.7705132,0.7695110,0.7685069,0.7675009,0.7664930,0.7654832,0.7644715,0.7634580,0.7624425,0.7614252,0.7604060,0.7593849,0.7583619,0.7573371,0.7563104,0.7552818,0.7542514,0.7532191,0.7521849,0.7511489,0.7501111,0.7490714,0.7480298,0.7469864,0.7459411,0.7448941,0.7438451,0.7427944,0.7417418,0.7406873,0.7396311,0.7385730,0.7375131,0.7364514,0.7353879,0.7343225,0.7332553,0.7321864,0.7311156,0.7300430,0.7289686,0.7278924,0.7268145,0.7257347,0.7246531,0.7235698,0.7224846,0.7213977,0.7203090,0.7192185,0.7181263,0.7170323,0.7159365,0.7148389,0.7137396,0.7126385,0.7115357,0.7104311,0.7093247,0.7082166,0.7071068,0.7059952,0.7048819,0.7037668,0.7026500,0.7015314,0.7004112,0.6992891,0.6981654,0.6970400,0.6959128,0.6947839,0.6936533,0.6925210,0.6913870,0.6902512,0.6891138,0.6879747,0.6868338,0.6856913,0.6845471,0.6834012,0.6822536,0.6811043,0.6799534,0.6788007,0.6776464,0.6764905,0.6753328,0.6741735,0.6730125,0.6718499,0.6706856,0.6695196,0.6683520,0.6671828,0.6660119,0.6648393,0.6636651,0.6624893,0.6613119,0.6601328,0.6589521,0.6577697,0.6565858,0.6554002,0.6542130,0.6530242,0.6518337,0.6506417,0.6494480,0.6482528,0.6470560,0.6458575,0.6446575,0.6434559,0.6422527,0.6410479,0.6398415,0.6386335,0.6374240,0.6362129,0.6350002,0.6337860,0.6325702,0.6313528,0.6301339,0.6289134,0.6276914,0.6264678,0.6252427,0.6240160,0.6227878,0.6215580,0.6203268,0.6190939,0.6178596,0.6166238,0.6153864,0.6141475,0.6129071,0.6116651,0.6104217,0.6091767,0.6079303,0.6066824,0.6054329,0.6041820,0.6029295,0.6016756,0.6004202,0.5991633,0.5979050,0.5966451,0.5953838,0.5941211,0.5928568,0.5915911,0.5903239,0.5890553,0.5877853,0.5865137,0.5852408,0.5839663,0.5826905,0.5814132,0.5801345,0.5788543,0.5775727,0.5762897,0.5750053,0.5737194,0.5724321,0.5711434,0.5698533,0.5685619,0.5672689,0.5659746,0.5646790,0.5633819,0.5620834,0.5607835,0.5594823,0.5581796,0.5568756,0.5555702,0.5542635,0.5529554,0.5516459,0.5503350,0.5490228,0.5477093,0.5463943,0.5450781,0.5437605,0.5424415,0.5411213,0.5397996,0.5384767,0.5371524,0.5358268,0.5344999,0.5331716,0.5318421,0.5305112,0.5291790,0.5278455,0.5265107,0.5251746,0.5238372,0.5224986,0.5211586,0.5198173,0.5184748,0.5171310,0.5157859,0.5144395,0.5130919,0.5117430,0.5103928,0.5090414,0.5076887,0.5063348,0.5049796,0.5036232,0.5022655,0.5009066,0.4995465,0.4981851,0.4968225,0.4954587,0.4940936,0.4927273,0.4913599,0.4899912,0.4886212,0.4872501,0.4858778,0.4845043,0.4831296,0.4817537,0.4803766,0.4789983,0.4776188,0.4762382,0.4748564,0.4734734,0.4720893,0.4707039,0.4693175,0.4679298,0.4665410,0.4651511,0.4637600,0.4623678,0.4609744,0.4595799,0.4581842,0.4567874,0.4553895,0.4539905,0.4525904,0.4511891,0.4497867,0.4483832,0.4469786,0.4455729,0.4441661,0.4427582,0.4413492,0.4399392,0.4385280,0.4371158,0.4357024,0.4342880,0.4328726,0.4314560,0.4300384,0.4286198,0.4272001,0.4257793,0.4243575,0.4229346,0.4215107,0.4200857,0.4186597,0.4172327,0.4158047,0.4143756,0.4129455,0.4115144,0.4100822,0.4086491,0.4072149,0.4057798,0.4043436,0.4029064,0.4014683,0.4000291,0.3985890,0.3971479,0.3957058,0.3942627,0.3928187,0.3913737,0.3899277,0.3884807,0.3870328,0.3855840,0.3841342,0.3826834,0.3812317,0.3797791,0.3783255,0.3768710,0.3754156,0.3739592,0.3725019,0.3710437,0.3695846,0.3681246,0.3666636,0.3652018,0.3637390,0.3622754,0.3608108,0.3593454,0.3578791,0.3564119,0.3549438,0.3534748,0.3520050,0.3505343,0.3490628,0.3475903,0.3461171,0.3446429,0.3431679,0.3416921,0.3402154,0.3387379,0.3372596,0.3357804,0.3343004,0.3328195,0.3313379,0.3298554,0.3283721,0.3268880,0.3254031,0.3239174,0.3224309,0.3209436,0.3194555,0.3179666,0.3164770,0.3149865,0.3134953,0.3120033,0.3105105,0.3090170,0.3075227,0.3060276,0.3045318,0.3030353,0.3015380,0.3000399,0.2985411,0.2970416,0.2955413,0.2940403,0.2925386,0.2910362,0.2895330,0.2880291,0.2865246,0.2850193,0.2835133,0.2820066,0.2804992,0.2789911,0.2774823,0.2759729,0.2744627,0.2729519,0.2714404,0.2699283,0.2684155,0.2669020,0.2653878,0.2638730,0.2623576,0.2608415,0.2593248,0.2578074,0.2562894,0.2547707,0.2532514,0.2517315,0.2502110,0.2486899,0.2471681,0.2456458,0.2441228,0.2425992,0.2410751,0.2395503,0.2380249,0.2364990,0.2349725,0.2334454,0.2319177,0.2303894,0.2288606,0.2273312,0.2258013,0.2242708,0.2227397,0.2212081,0.2196759,0.2181432,0.2166100,0.2150762,0.2135419,0.2120071,0.2104718,0.2089359,0.2073995,0.2058626,0.2043252,0.2027873,0.2012489,0.1997100,0.1981706,0.1966307,0.1950903,0.1935495,0.1920081,0.1904663,0.1889241,0.1873813,0.1858381,0.1842944,0.1827503,0.1812058,0.1796607,0.1781153,0.1765694,0.1750231,0.1734763,0.1719291,0.1703815,0.1688334,0.1672850,0.1657361,0.1641868,0.1626372,0.1610871,0.1595366,0.1579857,0.1564345,0.1548828,0.1533308,0.1517784,0.1502256,0.1486724,0.1471189,0.1455650,0.1440108,0.1424562,0.1409012,0.1393459,0.1377903,0.1362343,0.1346780,0.1331213,0.1315644,0.1300071,0.1284494,0.1268915,0.1253332,0.1237747,0.1222158,0.1206566,0.1190972,0.1175374,0.1159773,0.1144170,0.1128564,0.1112955,0.1097343,0.1081729,0.1066112,0.1050492,0.1034869,0.1019245,0.1003617,0.0987987,0.0972355,0.0956720,0.0941083,0.0925444,0.0909802,0.0894158,0.0878512,0.0862864,0.0847213,0.0831561,0.0815906,0.0800250,0.0784591,0.0768930,0.0753268,0.0737604,0.0721938,0.0706270,0.0690600,0.0674929,0.0659256,0.0643581,0.0627905,0.0612227,0.0596548,0.0580867,0.0565185,0.0549502,0.0533817,0.0518131,0.0502443,0.0486754,0.0471065,0.0455373,0.0439681,0.0423988,0.0408294,0.0392598,0.0376902,0.0361205,0.0345506,0.0329807,0.0314108,0.0298407,0.0282706,0.0267004,0.0251301,0.0235598,0.0219894,0.0204189,0.0188484,0.0172779,0.0157073,0.0141367,0.0125660,0.0109954,0.0094246,0.0078539,0.0062831,0.0047124,0.0031416,0.0015708,0.0000000,-0.0015708,-0.0031416,-0.0047124,-0.0062831,-0.0078539,-0.0094246,-0.0109954,-0.0125660,-0.0141367,-0.0157073,-0.0172779,-0.0188484,-0.0204189,-0.0219894,-0.0235598,-0.0251301,-0.0267004,-0.0282706,-0.0298407,-0.0314108,-0.0329807,-0.0345506,-0.0361205,-0.0376902,-0.0392598,-0.0408294,-0.0423988,-0.0439681,-0.0455373,-0.0471065,-0.0486754,-0.0502443,-0.0518131,-0.0533817,-0.0549502,-0.0565185,-0.0580867,-0.0596548,-0.0612227,-0.0627905,-0.0643581,-0.0659256,-0.0674929,-0.0690600,-0.0706270,-0.0721938,-0.0737604,-0.0753268,-0.0768930,-0.0784591,-0.0800250,-0.0815906,-0.0831561,-0.0847213,-0.0862864,-0.0878512,-0.0894158,-0.0909802,-0.0925444,-0.0941083,-0.0956720,-0.0972355,-0.0987987,-0.1003617,-0.1019245,-0.1034869,-0.1050492,-0.1066112,-0.1081729,-0.1097343,-0.1112955,-0.1128564,-0.1144170,-0.1159773,-0.1175374,-0.1190972,-0.1206566,-0.1222158,-0.1237747,-0.1253332,-0.1268915,-0.1284494,-0.1300071,-0.1315644,-0.1331213,-0.1346780,-0.1362343,-0.1377903,-0.1393459,-0.1409012,-0.1424562,-0.1440108,-0.1455650,-0.1471189,-0.1486724,-0.1502256,-0.1517784,-0.1533308,-0.1548828,-0.1564345,-0.1579857,-0.1595366,-0.1610871,-0.1626372,-0.1641868,-0.1657361,-0.1672850,-0.1688334,-0.1703815,-0.1719291,-0.1734763,-0.1750231,-0.1765694,-0.1781153,-0.1796607,-0.1812058,-0.1827503,-0.1842944,-0.1858381,-0.1873813,-0.1889241,-0.1904663,-0.1920081,-0.1935495,-0.1950903,-0.1966307,-0.1981706,-0.1997100,-0.2012489,-0.2027873,-0.2043252,-0.2058626,-0.2073995,-0.2089359,-0.2104718,-0.2120071,-0.2135419,-0.2150762,-0.2166100,-0.2181432,-0.2196759,-0.2212081,-0.2227397,-0.2242708,-0.2258013,-0.2273312,-0.2288606,-0.2303894,-0.2319177,-0.2334454,-0.2349725,-0.2364990,-0.2380249,-0.2395503,-0.2410751,-0.2425992,-0.2441228,-0.2456458,-0.2471681,-0.2486899,-0.2502110,-0.2517315,-0.2532514,-0.2547707,-0.2562894,-0.2578074,-0.2593248,-0.2608415,-0.2623576,-0.2638730,-0.2653878,-0.2669020,-0.2684155,-0.2699283,-0.2714404,-0.2729519,-0.2744627,-0.2759729,-0.2774823,-0.2789911,-0.2804992,-0.2820066,-0.2835133,-0.2850193,-0.2865246,-0.2880291,-0.2895330,-0.2910362,-0.2925386,-0.2940403,-0.2955413,-0.2970416,-0.2985411,-0.3000399,-0.3015380,-0.3030353,-0.3045318,-0.3060276,-0.3075227,-0.3090170,-0.3105105,-0.3120033,-0.3134953,-0.3149865,-0.3164770,-0.3179666,-0.3194555,-0.3209436,-0.3224309,-0.3239174,-0.3254031,-0.3268880,-0.3283721,-0.3298554,-0.3313379,-0.3328195,-0.3343004,-0.3357804,-0.3372596,-0.3387379,-0.3402154,-0.3416921,-0.3431679,-0.3446429,-0.3461171,-0.3475903,-0.3490628,-0.3505343,-0.3520050,-0.3534748,-0.3549438,-0.3564119,-0.3578791,-0.3593454,-0.3608108,-0.3622754,-0.3637390,-0.3652018,-0.3666636,-0.3681246,-0.3695846,-0.3710437,-0.3725019,-0.3739592,-0.3754156,-0.3768710,-0.3783255,-0.3797791,-0.3812317,-0.3826834,-0.3841342,-0.3855840,-0.3870328,-0.3884807,-0.3899277,-0.3913737,-0.3928187,-0.3942627,-0.3957058,-0.3971479,-0.3985890,-0.4000291,-0.4014683,-0.4029064,-0.4043436,-0.4057798,-0.4072149,-0.4086491,-0.4100822,-0.4115144,-0.4129455,-0.4143756,-0.4158047,-0.4172327,-0.4186597,-0.4200857,-0.4215107,-0.4229346,-0.4243575,-0.4257793,-0.4272001,-0.4286198,-0.4300384,-0.4314560,-0.4328726,-0.4342880,-0.4357024,-0.4371158,-0.4385280,-0.4399392,-0.4413492,-0.4427582,-0.4441661,-0.4455729,-0.4469786,-0.4483832,-0.4497867,-0.4511891,-0.4525904,-0.4539905,-0.4553895,-0.4567874,-0.4581842,-0.4595799,-0.4609744,-0.4623678,-0.4637600,-0.4651511,-0.4665410,-0.4679298,-0.4693175,-0.4707039,-0.4720893,-0.4734734,-0.4748564,-0.4762382,-0.4776188,-0.4789983,-0.4803766,-0.4817537,-0.4831296,-0.4845043,-0.4858778,-0.4872501,-0.4886212,-0.4899912,-0.4913599,-0.4927273,-0.4940936,-0.4954587,-0.4968225,-0.4981851,-0.4995465,-0.5009066,-0.5022655,-0.5036232,-0.5049796,-0.5063348,-0.5076887,-0.5090414,-0.5103928,-0.5117430,-0.5130919,-0.5144395,-0.5157859,-0.5171310,-0.5184748,-0.5198173,-0.5211586,-0.5224986,-0.5238372,-0.5251746,-0.5265107,-0.5278455,-0.5291790,-0.5305112,-0.5318421,-0.5331716,-0.5344999,-0.5358268,-0.5371524,-0.5384767,-0.5397996,-0.5411213,-0.5424415,-0.5437605,-0.5450781,-0.5463943,-0.5477093,-0.5490228,-0.5503350,-0.5516459,-0.5529554,-0.5542635,-0.5555702,-0.5568756,-0.5581796,-0.5594823,-0.5607835,-0.5620834,-0.5633819,-0.5646790,-0.5659746,-0.5672689,-0.5685619,-0.5698533,-0.5711434,-0.5724321,-0.5737194,-0.5750053,-0.5762897,-0.5775727,-0.5788543,-0.5801345,-0.5814132,-0.5826905,-0.5839663,-0.5852408,-0.5865137,-0.5877853,-0.5890553,-0.5903239,-0.5915911,-0.5928568,-0.5941211,-0.5953838,-0.5966451,-0.5979050,-0.5991633,-0.6004202,-0.6016756,-0.6029295,-0.6041820,-0.6054329,-0.6066824,-0.6079303,-0.6091767,-0.6104217,-0.6116651,-0.6129071,-0.6141475,-0.6153864,-0.6166238,-0.6178596,-0.6190939,-0.6203268,-0.6215580,-0.6227878,-0.6240160,-0.6252427,-0.6264678,-0.6276914,-0.6289134,-0.6301339,-0.6313528,-0.6325702,-0.6337860,-0.6350002,-0.6362129,-0.6374240,-0.6386335,-0.6398415,-0.6410479,-0.6422527,-0.6434559,-0.6446575,-0.6458575,-0.6470560,-0.6482528,-0.6494480,-0.6506417,-0.6518337,-0.6530242,-0.6542130,-0.6554002,-0.6565858,-0.6577697,-0.6589521,-0.6601328,-0.6613119,-0.6624893,-0.6636651,-0.6648393,-0.6660119,-0.6671828,-0.6683520,-0.6695196,-0.6706856,-0.6718499,-0.6730125,-0.6741735,-0.6753328,-0.6764905,-0.6776464,-0.6788007,-0.6799534,-0.6811043,-0.6822536,-0.6834012,-0.6845471,-0.6856913,-0.6868338,-0.6879747,-0.6891138,-0.6902512,-0.6913870,-0.6925210,-0.6936533,-0.6947839,-0.6959128,-0.6970400,-0.6981654,-0.6992891,-0.7004112,-0.7015314,-0.7026500,-0.7037668,-0.7048819,-0.7059952,-0.7071068,-0.7082166,-0.7093247,-0.7104311,-0.7115357,-0.7126385,-0.7137396,-0.7148389,-0.7159365,-0.7170323,-0.7181263,-0.7192185,-0.7203090,-0.7213977,-0.7224846,-0.7235698,-0.7246531,-0.7257347,-0.7268145,-0.7278924,-0.7289686,-0.7300430,-0.7311156,-0.7321864,-0.7332553,-0.7343225,-0.7353879,-0.7364514,-0.7375131,-0.7385730,-0.7396311,-0.7406873,-0.7417418,-0.7427944,-0.7438451,-0.7448941,-0.7459411,-0.7469864,-0.7480298,-0.7490714,-0.7501111,-0.7511489,-0.7521849,-0.7532191,-0.7542514,-0.7552818,-0.7563104,-0.7573371,-0.7583619,-0.7593849,-0.7604060,-0.7614252,-0.7624425,-0.7634580,-0.7644715,-0.7654832,-0.7664930,-0.7675009,-0.7685069,-0.7695110,-0.7705132,-0.7715136,-0.7725120,-0.7735085,-0.7745031,-0.7754957,-0.7764865,-0.7774754,-0.7784623,-0.7794473,-0.7804304,-0.7814116,-0.7823908,-0.7833681,-0.7843435,-0.7853169,-0.7862884,-0.7872580,-0.7882256,-0.7891913,-0.7901550,-0.7911168,-0.7920766,-0.7930345,-0.7939904,-0.7949444,-0.7958963,-0.7968464,-0.7977944,-0.7987405,-0.7996847,-0.8006268,-0.8015670,-0.8025052,-0.8034414,-0.8043756,-0.8053079,-0.8062381,-0.8071664,-0.8080927,-0.8090170,-0.8099393,-0.8108596,-0.8117779,-0.8126942,-0.8136084,-0.8145207,-0.8154310,-0.8163393,-0.8172455,-0.8181497,-0.8190519,-0.8199521,-0.8208503,-0.8217464,-0.8226405,-0.8235326,-0.8244226,-0.8253107,-0.8261966,-0.8270806,-0.8279625,-0.8288423,-0.8297201,-0.8305959,-0.8314696,-0.8323413,-0.8332109,-0.8340784,-0.8349439,-0.8358074,-0.8366687,-0.8375280,-0.8383853,-0.8392405,-0.8400936,-0.8409446,-0.8417935,-0.8426404,-0.8434852,-0.8443279,-0.8451686,-0.8460071,-0.8468436,-0.8476779,-0.8485102,-0.8493404,-0.8501685,-0.8509945,-0.8518184,-0.8526402,-0.8534599,-0.8542774,-0.8550929,-0.8559063,-0.8567175,-0.8575267,-0.8583337,-0.8591386,-0.8599414,-0.8607420,-0.8615406,-0.8623370,-0.8631313,-0.8639234,-0.8647134,-0.8655013,-0.8662871,-0.8670707,-0.8678522,-0.8686315,-0.8694087,-0.8701838,-0.8709567,-0.8717274,-0.8724960,-0.8732625,-0.8740267,-0.8747889,-0.8755489,-0.8763067,-0.8770623,-0.8778158,-0.8785672,-0.8793163,-0.8800633,-0.8808081,-0.8815508,-0.8822912,-0.8830295,-0.8837656,-0.8844996,-0.8852313,-0.8859609,-0.8866883,-0.8874134,-0.8881364,-0.8888573,-0.8895759,-0.8902923,-0.8910065,-0.8917186,-0.8924284,-0.8931360,-0.8938414,-0.8945446,-0.8952456,-0.8959444,-0.8966410,-0.8973354,-0.8980276,-0.8987175,-0.8994053,-0.9000908,-0.9007741,-0.9014551,-0.9021340,-0.9028106,-0.9034850,-0.9041571,-0.9048271,-0.9054947,-0.9061602,-0.9068234,-0.9074844,-0.9081432,-0.9087997,-0.9094539,-0.9101060,-0.9107557,-0.9114033,-0.9120486,-0.9126916,-0.9133324,-0.9139709,-0.9146072,-0.9152412,-0.9158729,-0.9165024,-0.9171297,-0.9177546,-0.9183773,-0.9189978,-0.9196159,-0.9202318,-0.9208455,-0.9214568,-0.9220659,-0.9226727,-0.9232773,-0.9238795,-0.9244795,-0.9250772,-0.9256726,-0.9262658,-0.9268566,-0.9274452,-0.9280314,-0.9286154,-0.9291971,-0.9297765,-0.9303536,-0.9309284,-0.9315009,-0.9320711,-0.9326390,-0.9332046,-0.9337679,-0.9343289,-0.9348876,-0.9354440,-0.9359981,-0.9365499,-0.9370993,-0.9376465,-0.9381913,-0.9387339,-0.9392741,-0.9398120,-0.9403475,-0.9408808,-0.9414117,-0.9419403,-0.9424666,-0.9429905,-0.9435122,-0.9440315,-0.9445484,-0.9450631,-0.9455754,-0.9460854,-0.9465930,-0.9470983,-0.9476013,-0.9481019,-0.9486002,-0.9490961,-0.9495898,-0.9500810,-0.9505699,-0.9510565,-0.9515407,-0.9520226,-0.9525022,-0.9529793,-0.9534542,-0.9539267,-0.9543968,-0.9548645,-0.9553300,-0.9557930,-0.9562537,-0.9567121,-0.9571680,-0.9576216,-0.9580729,-0.9585218,-0.9589683,-0.9594125,-0.9598543,-0.9602937,-0.9607307,-0.9611654,-0.9615977,-0.9620277,-0.9624552,-0.9628804,-0.9633032,-0.9637237,-0.9641417,-0.9645574,-0.9649707,-0.9653816,-0.9657902,-0.9661963,-0.9666001,-0.9670015,-0.9674005,-0.9677971,-0.9681913,-0.9685832,-0.9689726,-0.9693597,-0.9697443,-0.9701266,-0.9705065,-0.9708840,-0.9712590,-0.9716317,-0.9720020,-0.9723699,-0.9727354,-0.9730985,-0.9734592,-0.9738175,-0.9741734,-0.9745269,-0.9748780,-0.9752266,-0.9755729,-0.9759168,-0.9762582,-0.9765973,-0.9769339,-0.9772681,-0.9775999,-0.9779293,-0.9782563,-0.9785809,-0.9789031,-0.9792228,-0.9795401,-0.9798551,-0.9801675,-0.9804776,-0.9807853,-0.9810905,-0.9813933,-0.9816937,-0.9819917,-0.9822873,-0.9825804,-0.9828711,-0.9831594,-0.9834452,-0.9837286,-0.9840096,-0.9842882,-0.9845643,-0.9848380,-0.9851093,-0.9853782,-0.9856446,-0.9859086,-0.9861701,-0.9864293,-0.9866859,-0.9869402,-0.9871920,-0.9874414,-0.9876883,-0.9879328,-0.9881749,-0.9884146,-0.9886517,-0.9888865,-0.9891188,-0.9893487,-0.9895761,-0.9898011,-0.9900237,-0.9902438,-0.9904614,-0.9906766,-0.9908894,-0.9910997,-0.9913076,-0.9915131,-0.9917161,-0.9919166,-0.9921147,-0.9923104,-0.9925036,-0.9926943,-0.9928826,-0.9930685,-0.9932519,-0.9934328,-0.9936113,-0.9937874,-0.9939610,-0.9941321,-0.9943008,-0.9944670,-0.9946308,-0.9947921,-0.9949510,-0.9951074,-0.9952614,-0.9954129,-0.9955620,-0.9957086,-0.9958527,-0.9959944,-0.9961336,-0.9962704,-0.9964047,-0.9965365,-0.9966659,-0.9967929,-0.9969173,-0.9970393,-0.9971589,-0.9972760,-0.9973906,-0.9975028,-0.9976125,-0.9977198,-0.9978245,-0.9979269,-0.9980267,-0.9981241,-0.9982191,-0.9983115,-0.9984016,-0.9984891,-0.9985742,-0.9986568,-0.9987370,-0.9988146,-0.9988899,-0.9989626,-0.9990329,-0.9991008,-0.9991661,-0.9992290,-0.9992895,-0.9993474,-0.9994029,-0.9994560,-0.9995066,-0.9995547,-0.9996003,-0.9996435,-0.9996842,-0.9997224,-0.9997582,-0.9997915,-0.9998224,-0.9998507,-0.9998766,-0.9999001,-0.9999210,-0.9999395,-0.9999556,-0.9999692,-0.9999803,-0.9999889,-0.9999951,-0.9999988,-1.0000000,-0.9999988,-0.9999951,-0.9999889,-0.9999803,-0.9999692,-0.9999556,-0.9999395,-0.9999210,-0.9999001,-0.9998766,-0.9998507,-0.9998224,-0.9997915,-0.9997582,-0.9997224,-0.9996842,-0.9996435,-0.9996003,-0.9995547,-0.9995066,-0.9994560,-0.9994029,-0.9993474,-0.9992895,-0.9992290,-0.9991661,-0.9991008,-0.9990329,-0.9989626,-0.9988899,-0.9988146,-0.9987370,-0.9986568,-0.9985742,-0.9984891,-0.9984016,-0.9983115,-0.9982191,-0.9981241,-0.9980267,-0.9979269,-0.9978245,-0.9977198,-0.9976125,-0.9975028,-0.9973906,-0.9972760,-0.9971589,-0.9970393,-0.9969173,-0.9967929,-0.9966659,-0.9965365,-0.9964047,-0.9962704,-0.9961336,-0.9959944,-0.9958527,-0.9957086,-0.9955620,-0.9954129,-0.9952614,-0.9951074,-0.9949510,-0.9947921,-0.9946308,-0.9944670,-0.9943008,-0.9941321,-0.9939610,-0.9937874,-0.9936113,-0.9934328,-0.9932519,-0.9930685,-0.9928826,-0.9926943,-0.9925036,-0.9923104,-0.9921147,-0.9919166,-0.9917161,-0.9915131,-0.9913076,-0.9910997,-0.9908894,-0.9906766,-0.9904614,-0.9902438,-0.9900237,-0.9898011,-0.9895761,-0.9893487,-0.9891188,-0.9888865,-0.9886517,-0.9884146,-0.9881749,-0.9879328,-0.9876883,-0.9874414,-0.9871920,-0.9869402,-0.9866859,-0.9864293,-0.9861701,-0.9859086,-0.9856446,-0.9853782,-0.9851093,-0.9848380,-0.9845643,-0.9842882,-0.9840096,-0.9837286,-0.9834452,-0.9831594,-0.9828711,-0.9825804,-0.9822873,-0.9819917,-0.9816937,-0.9813933,-0.9810905,-0.9807853,-0.9804776,-0.9801675,-0.9798551,-0.9795401,-0.9792228,-0.9789031,-0.9785809,-0.9782563,-0.9779293,-0.9775999,-0.9772681,-0.9769339,-0.9765973,-0.9762582,-0.9759168,-0.9755729,-0.9752266,-0.9748780,-0.9745269,-0.9741734,-0.9738175,-0.9734592,-0.9730985,-0.9727354,-0.9723699,-0.9720020,-0.9716317,-0.9712590,-0.9708840,-0.9705065,-0.9701266,-0.9697443,-0.9693597,-0.9689726,-0.9685832,-0.9681913,-0.9677971,-0.9674005,-0.9670015,-0.9666001,-0.9661963,-0.9657902,-0.9653816,-0.9649707,-0.9645574,-0.9641417,-0.9637237,-0.9633032,-0.9628804,-0.9624552,-0.9620277,-0.9615977,-0.9611654,-0.9607307,-0.9602937,-0.9598543,-0.9594125,-0.9589683,-0.9585218,-0.9580729,-0.9576216,-0.9571680,-0.9567121,-0.9562537,-0.9557930,-0.9553300,-0.9548645,-0.9543968,-0.9539267,-0.9534542,-0.9529793,-0.9525022,-0.9520226,-0.9515407,-0.9510565,-0.9505699,-0.9500810,-0.9495898,-0.9490961,-0.9486002,-0.9481019,-0.9476013,-0.9470983,-0.9465930,-0.9460854,-0.9455754,-0.9450631,-0.9445484,-0.9440315,-0.9435122,-0.9429905,-0.9424666,-0.9419403,-0.9414117,-0.9408808,-0.9403475,-0.9398120,-0.9392741,-0.9387339,-0.9381913,-0.9376465,-0.9370993,-0.9365499,-0.9359981,-0.9354440,-0.9348876,-0.9343289,-0.9337679,-0.9332046,-0.9326390,-0.9320711,-0.9315009,-0.9309284,-0.9303536,-0.9297765,-0.9291971,-0.9286154,-0.9280314,-0.9274452,-0.9268566,-0.9262658,-0.9256726,-0.9250772,-0.9244795,-0.9238795,-0.9232773,-0.9226727,-0.9220659,-0.9214568,-0.9208455,-0.9202318,-0.9196159,-0.9189978,-0.9183773,-0.9177546,-0.9171297,-0.9165024,-0.9158729,-0.9152412,-0.9146072,-0.9139709,-0.9133324,-0.9126916,-0.9120486,-0.9114033,-0.9107557,-0.9101060,-0.9094539,-0.9087997,-0.9081432,-0.9074844,-0.9068234,-0.9061602,-0.9054947,-0.9048271,-0.9041571,-0.9034850,-0.9028106,-0.9021340,-0.9014551,-0.9007741,-0.9000908,-0.8994053,-0.8987175,-0.8980276,-0.8973354,-0.8966410,-0.8959444,-0.8952456,-0.8945446,-0.8938414,-0.8931360,-0.8924284,-0.8917186,-0.8910065,-0.8902923,-0.8895759,-0.8888573,-0.8881364,-0.8874134,-0.8866883,-0.8859609,-0.8852313,-0.8844996,-0.8837656,-0.8830295,-0.8822912,-0.8815508,-0.8808081,-0.8800633,-0.8793163,-0.8785672,-0.8778158,-0.8770623,-0.8763067,-0.8755489,-0.8747889,-0.8740267,-0.8732625,-0.8724960,-0.8717274,-0.8709567,-0.8701838,-0.8694087,-0.8686315,-0.8678522,-0.8670707,-0.8662871,-0.8655013,-0.8647134,-0.8639234,-0.8631313,-0.8623370,-0.8615406,-0.8607420,-0.8599414,-0.8591386,-0.8583337,-0.8575267,-0.8567175,-0.8559063,-0.8550929,-0.8542774,-0.8534599,-0.8526402,-0.8518184,-0.8509945,-0.8501685,-0.8493404,-0.8485102,-0.8476779,-0.8468436,-0.8460071,-0.8451686,-0.8443279,-0.8434852,-0.8426404,-0.8417935,-0.8409446,-0.8400936,-0.8392405,-0.8383853,-0.8375280,-0.8366687,-0.8358074,-0.8349439,-0.8340784,-0.8332109,-0.8323413,-0.8314696,-0.8305959,-0.8297201,-0.8288423,-0.8279625,-0.8270806,-0.8261966,-0.8253107,-0.8244226,-0.8235326,-0.8226405,-0.8217464,-0.8208503,-0.8199521,-0.8190519,-0.8181497,-0.8172455,-0.8163393,-0.8154310,-0.8145207,-0.8136084,-0.8126942,-0.8117779,-0.8108596,-0.8099393,-0.8090170,-0.8080927,-0.8071664,-0.8062381,-0.8053079,-0.8043756,-0.8034414,-0.8025052,-0.8015670,-0.8006268,-0.7996847,-0.7987405,-0.7977944,-0.7968464,-0.7958963,-0.7949444,-0.7939904,-0.7930345,-0.7920766,-0.7911168,-0.7901550,-0.7891913,-0.7882256,-0.7872580,-0.7862884,-0.7853169,-0.7843435,-0.7833681,-0.7823908,-0.7814116,-0.7804304,-0.7794473,-0.7784623,-0.7774754,-0.7764865,-0.7754957,-0.7745031,-0.7735085,-0.7725120,-0.7715136,-0.7705132,-0.7695110,-0.7685069,-0.7675009,-0.7664930,-0.7654832,-0.7644715,-0.7634580,-0.7624425,-0.7614252,-0.7604060,-0.7593849,-0.7583619,-0.7573371,-0.7563104,-0.7552818,-0.7542514,-0.7532191,-0.7521849,-0.7511489,-0.7501111,-0.7490714,-0.7480298,-0.7469864,-0.7459411,-0.7448941,-0.7438451,-0.7427944,-0.7417418,-0.7406873,-0.7396311,-0.7385730,-0.7375131,-0.7364514,-0.7353879,-0.7343225,-0.7332553,-0.7321864,-0.7311156,-0.7300430,-0.7289686,-0.7278924,-0.7268145,-0.7257347,-0.7246531,-0.7235698,-0.7224846,-0.7213977,-0.7203090,-0.7192185,-0.7181263,-0.7170323,-0.7159365,-0.7148389,-0.7137396,-0.7126385,-0.7115357,-0.7104311,-0.7093247,-0.7082166,-0.7071068,-0.7059952,-0.7048819,-0.7037668,-0.7026500,-0.7015314,-0.7004112,-0.6992891,-0.6981654,-0.6970400,-0.6959128,-0.6947839,-0.6936533,-0.6925210,-0.6913870,-0.6902512,-0.6891138,-0.6879747,-0.6868338,-0.6856913,-0.6845471,-0.6834012,-0.6822536,-0.6811043,-0.6799534,-0.6788007,-0.6776464,-0.6764905,-0.6753328,-0.6741735,-0.6730125,-0.6718499,-0.6706856,-0.6695196,-0.6683520,-0.6671828,-0.6660119,-0.6648393,-0.6636651,-0.6624893,-0.6613119,-0.6601328,-0.6589521,-0.6577697,-0.6565858,-0.6554002,-0.6542130,-0.6530242,-0.6518337,-0.6506417,-0.6494480,-0.6482528,-0.6470560,-0.6458575,-0.6446575,-0.6434559,-0.6422527,-0.6410479,-0.6398415,-0.6386335,-0.6374240,-0.6362129,-0.6350002,-0.6337860,-0.6325702,-0.6313528,-0.6301339,-0.6289134,-0.6276914,-0.6264678,-0.6252427,-0.6240160,-0.6227878,-0.6215580,-0.6203268,-0.6190939,-0.6178596,-0.6166238,-0.6153864,-0.6141475,-0.6129071,-0.6116651,-0.6104217,-0.6091767,-0.6079303,-0.6066824,-0.6054329,-0.6041820,-0.6029295,-0.6016756,-0.6004202,-0.5991633,-0.5979050,-0.5966451,-0.5953838,-0.5941211,-0.5928568,-0.5915911,-0.5903239,-0.5890553,-0.5877853,-0.5865137,-0.5852408,-0.5839663,-0.5826905,-0.5814132,-0.5801345,-0.5788543,-0.5775727,-0.5762897,-0.5750053,-0.5737194,-0.5724321,-0.5711434,-0.5698533,-0.5685619,-0.5672689,-0.5659746,-0.5646790,-0.5633819,-0.5620834,-0.5607835,-0.5594823,-0.5581796,-0.5568756,-0.5555702,-0.5542635,-0.5529554,-0.5516459,-0.5503350,-0.5490228,-0.5477093,-0.5463943,-0.5450781,-0.5437605,-0.5424415,-0.5411213,-0.5397996,-0.5384767,-0.5371524,-0.5358268,-0.5344999,-0.5331716,-0.5318421,-0.5305112,-0.5291790,-0.5278455,-0.5265107,-0.5251746,-0.5238372,-0.5224986,-0.5211586,-0.5198173,-0.5184748,-0.5171310,-0.5157859,-0.5144395,-0.5130919,-0.5117430,-0.5103928,-0.5090414,-0.5076887,-0.5063348,-0.5049796,-0.5036232,-0.5022655,-0.5009066,-0.4995465,-0.4981851,-0.4968225,-0.4954587,-0.4940936,-0.4927273,-0.4913599,-0.4899912,-0.4886212,-0.4872501,-0.4858778,-0.4845043,-0.4831296,-0.4817537,-0.4803766,-0.4789983,-0.4776188,-0.4762382,-0.4748564,-0.4734734,-0.4720893,-0.4707039,-0.4693175,-0.4679298,-0.4665410,-0.4651511,-0.4637600,-0.4623678,-0.4609744,-0.4595799,-0.4581842,-0.4567874,-0.4553895,-0.4539905,-0.4525904,-0.4511891,-0.4497867,-0.4483832,-0.4469786,-0.4455729,-0.4441661,-0.4427582,-0.4413492,-0.4399392,-0.4385280,-0.4371158,-0.4357024,-0.4342880,-0.4328726,-0.4314560,-0.4300384,-0.4286198,-0.4272001,-0.4257793,-0.4243575,-0.4229346,-0.4215107,-0.4200857,-0.4186597,-0.4172327,-0.4158047,-0.4143756,-0.4129455,-0.4115144,-0.4100822,-0.4086491,-0.4072149,-0.4057798,-0.4043436,-0.4029064,-0.4014683,-0.4000291,-0.3985890,-0.3971479,-0.3957058,-0.3942627,-0.3928187,-0.3913737,-0.3899277,-0.3884807,-0.3870328,-0.3855840,-0.3841342,-0.3826834,-0.3812317,-0.3797791,-0.3783255,-0.3768710,-0.3754156,-0.3739592,-0.3725019,-0.3710437,-0.3695846,-0.3681246,-0.3666636,-0.3652018,-0.3637390,-0.3622754,-0.3608108,-0.3593454,-0.3578791,-0.3564119,-0.3549438,-0.3534748,-0.3520050,-0.3505343,-0.3490628,-0.3475903,-0.3461171,-0.3446429,-0.3431679,-0.3416921,-0.3402154,-0.3387379,-0.3372596,-0.3357804,-0.3343004,-0.3328195,-0.3313379,-0.3298554,-0.3283721,-0.3268880,-0.3254031,-0.3239174,-0.3224309,-0.3209436,-0.3194555,-0.3179666,-0.3164770,-0.3149865,-0.3134953,-0.3120033,-0.3105105,-0.3090170,-0.3075227,-0.3060276,-0.3045318,-0.3030353,-0.3015380,-0.3000399,-0.2985411,-0.2970416,-0.2955413,-0.2940403,-0.2925386,-0.2910362,-0.2895330,-0.2880291,-0.2865246,-0.2850193,-0.2835133,-0.2820066,-0.2804992,-0.2789911,-0.2774823,-0.2759729,-0.2744627,-0.2729519,-0.2714404,-0.2699283,-0.2684155,-0.2669020,-0.2653878,-0.2638730,-0.2623576,-0.2608415,-0.2593248,-0.2578074,-0.2562894,-0.2547707,-0.2532514,-0.2517315,-0.2502110,-0.2486899,-0.2471681,-0.2456458,-0.2441228,-0.2425992,-0.2410751,-0.2395503,-0.2380249,-0.2364990,-0.2349725,-0.2334454,-0.2319177,-0.2303894,-0.2288606,-0.2273312,-0.2258013,-0.2242708,-0.2227397,-0.2212081,-0.2196759,-0.2181432,-0.2166100,-0.2150762,-0.2135419,-0.2120071,-0.2104718,-0.2089359,-0.2073995,-0.2058626,-0.2043252,-0.2027873,-0.2012489,-0.1997100,-0.1981706,-0.1966307,-0.1950903,-0.1935495,-0.1920081,-0.1904663,-0.1889241,-0.1873813,-0.1858381,-0.1842944,-0.1827503,-0.1812058,-0.1796607,-0.1781153,-0.1765694,-0.1750231,-0.1734763,-0.1719291,-0.1703815,-0.1688334,-0.1672850,-0.1657361,-0.1641868,-0.1626372,-0.1610871,-0.1595366,-0.1579857,-0.1564345,-0.1548828,-0.1533308,-0.1517784,-0.1502256,-0.1486724,-0.1471189,-0.1455650,-0.1440108,-0.1424562,-0.1409012,-0.1393459,-0.1377903,-0.1362343,-0.1346780,-0.1331213,-0.1315644,-0.1300071,-0.1284494,-0.1268915,-0.1253332,-0.1237747,-0.1222158,-0.1206566,-0.1190972,-0.1175374,-0.1159773,-0.1144170,-0.1128564,-0.1112955,-0.1097343,-0.1081729,-0.1066112,-0.1050492,-0.1034869,-0.1019245,-0.1003617,-0.0987987,-0.0972355,-0.0956720,-0.0941083,-0.0925444,-0.0909802,-0.0894158,-0.0878512,-0.0862864,-0.0847213,-0.0831561,-0.0815906,-0.0800250,-0.0784591,-0.0768930,-0.0753268,-0.0737604,-0.0721938,-0.0706270,-0.0690600,-0.0674929,-0.0659256,-0.0643581,-0.0627905,-0.0612227,-0.0596548,-0.0580867,-0.0565185,-0.0549502,-0.0533817,-0.0518131,-0.0502443,-0.0486754,-0.0471065,-0.0455373,-0.0439681,-0.0423988,-0.0408294,-0.0392598,-0.0376902,-0.0361205,-0.0345506,-0.0329807,-0.0314108,-0.0298407,-0.0282706,-0.0267004,-0.0251301,-0.0235598,-0.0219894,-0.0204189,-0.0188484,-0.0172779,-0.0157073,-0.0141367,-0.0125660,-0.0109954,-0.0094246,-0.0078539,-0.0062831,-0.0047124,-0.0031416,-0.0015708];
+lime.math.TrigTable.cos_ = [1.0000000,0.9999988,0.9999951,0.9999889,0.9999803,0.9999692,0.9999556,0.9999395,0.9999210,0.9999001,0.9998766,0.9998507,0.9998224,0.9997915,0.9997582,0.9997224,0.9996842,0.9996435,0.9996003,0.9995547,0.9995066,0.9994560,0.9994029,0.9993474,0.9992895,0.9992290,0.9991661,0.9991008,0.9990329,0.9989626,0.9988899,0.9988146,0.9987370,0.9986568,0.9985742,0.9984891,0.9984016,0.9983115,0.9982191,0.9981241,0.9980267,0.9979269,0.9978245,0.9977198,0.9976125,0.9975028,0.9973906,0.9972760,0.9971589,0.9970393,0.9969173,0.9967929,0.9966659,0.9965365,0.9964047,0.9962704,0.9961336,0.9959944,0.9958527,0.9957086,0.9955620,0.9954129,0.9952614,0.9951074,0.9949510,0.9947921,0.9946308,0.9944670,0.9943008,0.9941321,0.9939610,0.9937874,0.9936113,0.9934328,0.9932519,0.9930685,0.9928826,0.9926943,0.9925036,0.9923104,0.9921147,0.9919166,0.9917161,0.9915131,0.9913076,0.9910997,0.9908894,0.9906766,0.9904614,0.9902438,0.9900237,0.9898011,0.9895761,0.9893487,0.9891188,0.9888865,0.9886517,0.9884146,0.9881749,0.9879328,0.9876883,0.9874414,0.9871920,0.9869402,0.9866859,0.9864293,0.9861701,0.9859086,0.9856446,0.9853782,0.9851093,0.9848380,0.9845643,0.9842882,0.9840096,0.9837286,0.9834452,0.9831594,0.9828711,0.9825804,0.9822873,0.9819917,0.9816937,0.9813933,0.9810905,0.9807853,0.9804776,0.9801675,0.9798551,0.9795401,0.9792228,0.9789031,0.9785809,0.9782563,0.9779293,0.9775999,0.9772681,0.9769339,0.9765973,0.9762582,0.9759168,0.9755729,0.9752266,0.9748780,0.9745269,0.9741734,0.9738175,0.9734592,0.9730985,0.9727354,0.9723699,0.9720020,0.9716317,0.9712590,0.9708840,0.9705065,0.9701266,0.9697443,0.9693597,0.9689726,0.9685832,0.9681913,0.9677971,0.9674005,0.9670015,0.9666001,0.9661963,0.9657902,0.9653816,0.9649707,0.9645574,0.9641417,0.9637237,0.9633032,0.9628804,0.9624552,0.9620277,0.9615977,0.9611654,0.9607307,0.9602937,0.9598543,0.9594125,0.9589683,0.9585218,0.9580729,0.9576216,0.9571680,0.9567121,0.9562537,0.9557930,0.9553300,0.9548645,0.9543968,0.9539267,0.9534542,0.9529793,0.9525022,0.9520226,0.9515407,0.9510565,0.9505699,0.9500810,0.9495898,0.9490961,0.9486002,0.9481019,0.9476013,0.9470983,0.9465930,0.9460854,0.9455754,0.9450631,0.9445484,0.9440315,0.9435122,0.9429905,0.9424666,0.9419403,0.9414117,0.9408808,0.9403475,0.9398120,0.9392741,0.9387339,0.9381913,0.9376465,0.9370993,0.9365499,0.9359981,0.9354440,0.9348876,0.9343289,0.9337679,0.9332046,0.9326390,0.9320711,0.9315009,0.9309284,0.9303536,0.9297765,0.9291971,0.9286154,0.9280314,0.9274452,0.9268566,0.9262658,0.9256726,0.9250772,0.9244795,0.9238795,0.9232773,0.9226727,0.9220659,0.9214568,0.9208455,0.9202318,0.9196159,0.9189978,0.9183773,0.9177546,0.9171297,0.9165024,0.9158729,0.9152412,0.9146072,0.9139709,0.9133324,0.9126916,0.9120486,0.9114033,0.9107557,0.9101060,0.9094539,0.9087997,0.9081432,0.9074844,0.9068234,0.9061602,0.9054947,0.9048271,0.9041571,0.9034850,0.9028106,0.9021340,0.9014551,0.9007741,0.9000908,0.8994053,0.8987175,0.8980276,0.8973354,0.8966410,0.8959444,0.8952456,0.8945446,0.8938414,0.8931360,0.8924284,0.8917186,0.8910065,0.8902923,0.8895759,0.8888573,0.8881364,0.8874134,0.8866883,0.8859609,0.8852313,0.8844996,0.8837656,0.8830295,0.8822912,0.8815508,0.8808081,0.8800633,0.8793163,0.8785672,0.8778158,0.8770623,0.8763067,0.8755489,0.8747889,0.8740267,0.8732625,0.8724960,0.8717274,0.8709567,0.8701838,0.8694087,0.8686315,0.8678522,0.8670707,0.8662871,0.8655013,0.8647134,0.8639234,0.8631313,0.8623370,0.8615406,0.8607420,0.8599414,0.8591386,0.8583337,0.8575267,0.8567175,0.8559063,0.8550929,0.8542774,0.8534599,0.8526402,0.8518184,0.8509945,0.8501685,0.8493404,0.8485102,0.8476779,0.8468436,0.8460071,0.8451686,0.8443279,0.8434852,0.8426404,0.8417935,0.8409446,0.8400936,0.8392405,0.8383853,0.8375280,0.8366687,0.8358074,0.8349439,0.8340784,0.8332109,0.8323413,0.8314696,0.8305959,0.8297201,0.8288423,0.8279625,0.8270806,0.8261966,0.8253107,0.8244226,0.8235326,0.8226405,0.8217464,0.8208503,0.8199521,0.8190519,0.8181497,0.8172455,0.8163393,0.8154310,0.8145207,0.8136084,0.8126942,0.8117779,0.8108596,0.8099393,0.8090170,0.8080927,0.8071664,0.8062381,0.8053079,0.8043756,0.8034414,0.8025052,0.8015670,0.8006268,0.7996847,0.7987405,0.7977944,0.7968464,0.7958963,0.7949444,0.7939904,0.7930345,0.7920766,0.7911168,0.7901550,0.7891913,0.7882256,0.7872580,0.7862884,0.7853169,0.7843435,0.7833681,0.7823908,0.7814116,0.7804304,0.7794473,0.7784623,0.7774754,0.7764865,0.7754957,0.7745031,0.7735085,0.7725120,0.7715136,0.7705132,0.7695110,0.7685069,0.7675009,0.7664930,0.7654832,0.7644715,0.7634580,0.7624425,0.7614252,0.7604060,0.7593849,0.7583619,0.7573371,0.7563104,0.7552818,0.7542514,0.7532191,0.7521849,0.7511489,0.7501111,0.7490714,0.7480298,0.7469864,0.7459411,0.7448941,0.7438451,0.7427944,0.7417418,0.7406873,0.7396311,0.7385730,0.7375131,0.7364514,0.7353879,0.7343225,0.7332553,0.7321864,0.7311156,0.7300430,0.7289686,0.7278924,0.7268145,0.7257347,0.7246531,0.7235698,0.7224846,0.7213977,0.7203090,0.7192185,0.7181263,0.7170323,0.7159365,0.7148389,0.7137396,0.7126385,0.7115357,0.7104311,0.7093247,0.7082166,0.7071068,0.7059952,0.7048819,0.7037668,0.7026500,0.7015314,0.7004112,0.6992891,0.6981654,0.6970400,0.6959128,0.6947839,0.6936533,0.6925210,0.6913870,0.6902512,0.6891138,0.6879747,0.6868338,0.6856913,0.6845471,0.6834012,0.6822536,0.6811043,0.6799534,0.6788007,0.6776464,0.6764905,0.6753328,0.6741735,0.6730125,0.6718499,0.6706856,0.6695196,0.6683520,0.6671828,0.6660119,0.6648393,0.6636651,0.6624893,0.6613119,0.6601328,0.6589521,0.6577697,0.6565858,0.6554002,0.6542130,0.6530242,0.6518337,0.6506417,0.6494480,0.6482528,0.6470560,0.6458575,0.6446575,0.6434559,0.6422527,0.6410479,0.6398415,0.6386335,0.6374240,0.6362129,0.6350002,0.6337860,0.6325702,0.6313528,0.6301339,0.6289134,0.6276914,0.6264678,0.6252427,0.6240160,0.6227878,0.6215580,0.6203268,0.6190939,0.6178596,0.6166238,0.6153864,0.6141475,0.6129071,0.6116651,0.6104217,0.6091767,0.6079303,0.6066824,0.6054329,0.6041820,0.6029295,0.6016756,0.6004202,0.5991633,0.5979050,0.5966451,0.5953838,0.5941211,0.5928568,0.5915911,0.5903239,0.5890553,0.5877853,0.5865137,0.5852408,0.5839663,0.5826905,0.5814132,0.5801345,0.5788543,0.5775727,0.5762897,0.5750053,0.5737194,0.5724321,0.5711434,0.5698533,0.5685619,0.5672689,0.5659746,0.5646790,0.5633819,0.5620834,0.5607835,0.5594823,0.5581796,0.5568756,0.5555702,0.5542635,0.5529554,0.5516459,0.5503350,0.5490228,0.5477093,0.5463943,0.5450781,0.5437605,0.5424415,0.5411213,0.5397996,0.5384767,0.5371524,0.5358268,0.5344999,0.5331716,0.5318421,0.5305112,0.5291790,0.5278455,0.5265107,0.5251746,0.5238372,0.5224986,0.5211586,0.5198173,0.5184748,0.5171310,0.5157859,0.5144395,0.5130919,0.5117430,0.5103928,0.5090414,0.5076887,0.5063348,0.5049796,0.5036232,0.5022655,0.5009066,0.4995465,0.4981851,0.4968225,0.4954587,0.4940936,0.4927273,0.4913599,0.4899912,0.4886212,0.4872501,0.4858778,0.4845043,0.4831296,0.4817537,0.4803766,0.4789983,0.4776188,0.4762382,0.4748564,0.4734734,0.4720893,0.4707039,0.4693175,0.4679298,0.4665410,0.4651511,0.4637600,0.4623678,0.4609744,0.4595799,0.4581842,0.4567874,0.4553895,0.4539905,0.4525904,0.4511891,0.4497867,0.4483832,0.4469786,0.4455729,0.4441661,0.4427582,0.4413492,0.4399392,0.4385280,0.4371158,0.4357024,0.4342880,0.4328726,0.4314560,0.4300384,0.4286198,0.4272001,0.4257793,0.4243575,0.4229346,0.4215107,0.4200857,0.4186597,0.4172327,0.4158047,0.4143756,0.4129455,0.4115144,0.4100822,0.4086491,0.4072149,0.4057798,0.4043436,0.4029064,0.4014683,0.4000291,0.3985890,0.3971479,0.3957058,0.3942627,0.3928187,0.3913737,0.3899277,0.3884807,0.3870328,0.3855840,0.3841342,0.3826834,0.3812317,0.3797791,0.3783255,0.3768710,0.3754156,0.3739592,0.3725019,0.3710437,0.3695846,0.3681246,0.3666636,0.3652018,0.3637390,0.3622754,0.3608108,0.3593454,0.3578791,0.3564119,0.3549438,0.3534748,0.3520050,0.3505343,0.3490628,0.3475903,0.3461171,0.3446429,0.3431679,0.3416921,0.3402154,0.3387379,0.3372596,0.3357804,0.3343004,0.3328195,0.3313379,0.3298554,0.3283721,0.3268880,0.3254031,0.3239174,0.3224309,0.3209436,0.3194555,0.3179666,0.3164770,0.3149865,0.3134953,0.3120033,0.3105105,0.3090170,0.3075227,0.3060276,0.3045318,0.3030353,0.3015380,0.3000399,0.2985411,0.2970416,0.2955413,0.2940403,0.2925386,0.2910362,0.2895330,0.2880291,0.2865246,0.2850193,0.2835133,0.2820066,0.2804992,0.2789911,0.2774823,0.2759729,0.2744627,0.2729519,0.2714404,0.2699283,0.2684155,0.2669020,0.2653878,0.2638730,0.2623576,0.2608415,0.2593248,0.2578074,0.2562894,0.2547707,0.2532514,0.2517315,0.2502110,0.2486899,0.2471681,0.2456458,0.2441228,0.2425992,0.2410751,0.2395503,0.2380249,0.2364990,0.2349725,0.2334454,0.2319177,0.2303894,0.2288606,0.2273312,0.2258013,0.2242708,0.2227397,0.2212081,0.2196759,0.2181432,0.2166100,0.2150762,0.2135419,0.2120071,0.2104718,0.2089359,0.2073995,0.2058626,0.2043252,0.2027873,0.2012489,0.1997100,0.1981706,0.1966307,0.1950903,0.1935495,0.1920081,0.1904663,0.1889241,0.1873813,0.1858381,0.1842944,0.1827503,0.1812058,0.1796607,0.1781153,0.1765694,0.1750231,0.1734763,0.1719291,0.1703815,0.1688334,0.1672850,0.1657361,0.1641868,0.1626372,0.1610871,0.1595366,0.1579857,0.1564345,0.1548828,0.1533308,0.1517784,0.1502256,0.1486724,0.1471189,0.1455650,0.1440108,0.1424562,0.1409012,0.1393459,0.1377903,0.1362343,0.1346780,0.1331213,0.1315644,0.1300071,0.1284494,0.1268915,0.1253332,0.1237747,0.1222158,0.1206566,0.1190972,0.1175374,0.1159773,0.1144170,0.1128564,0.1112955,0.1097343,0.1081729,0.1066112,0.1050492,0.1034869,0.1019245,0.1003617,0.0987987,0.0972355,0.0956720,0.0941083,0.0925444,0.0909802,0.0894158,0.0878512,0.0862864,0.0847213,0.0831561,0.0815906,0.0800250,0.0784591,0.0768930,0.0753268,0.0737604,0.0721938,0.0706270,0.0690600,0.0674929,0.0659256,0.0643581,0.0627905,0.0612227,0.0596548,0.0580867,0.0565185,0.0549502,0.0533817,0.0518131,0.0502443,0.0486754,0.0471065,0.0455373,0.0439681,0.0423988,0.0408294,0.0392598,0.0376902,0.0361205,0.0345506,0.0329807,0.0314108,0.0298407,0.0282706,0.0267004,0.0251301,0.0235598,0.0219894,0.0204189,0.0188484,0.0172779,0.0157073,0.0141367,0.0125660,0.0109954,0.0094246,0.0078539,0.0062831,0.0047124,0.0031416,0.0015708,0.0000000,-0.0015708,-0.0031416,-0.0047124,-0.0062831,-0.0078539,-0.0094246,-0.0109954,-0.0125660,-0.0141367,-0.0157073,-0.0172779,-0.0188484,-0.0204189,-0.0219894,-0.0235598,-0.0251301,-0.0267004,-0.0282706,-0.0298407,-0.0314108,-0.0329807,-0.0345506,-0.0361205,-0.0376902,-0.0392598,-0.0408294,-0.0423988,-0.0439681,-0.0455373,-0.0471065,-0.0486754,-0.0502443,-0.0518131,-0.0533817,-0.0549502,-0.0565185,-0.0580867,-0.0596548,-0.0612227,-0.0627905,-0.0643581,-0.0659256,-0.0674929,-0.0690600,-0.0706270,-0.0721938,-0.0737604,-0.0753268,-0.0768930,-0.0784591,-0.0800250,-0.0815906,-0.0831561,-0.0847213,-0.0862864,-0.0878512,-0.0894158,-0.0909802,-0.0925444,-0.0941083,-0.0956720,-0.0972355,-0.0987987,-0.1003617,-0.1019245,-0.1034869,-0.1050492,-0.1066112,-0.1081729,-0.1097343,-0.1112955,-0.1128564,-0.1144170,-0.1159773,-0.1175374,-0.1190972,-0.1206566,-0.1222158,-0.1237747,-0.1253332,-0.1268915,-0.1284494,-0.1300071,-0.1315644,-0.1331213,-0.1346780,-0.1362343,-0.1377903,-0.1393459,-0.1409012,-0.1424562,-0.1440108,-0.1455650,-0.1471189,-0.1486724,-0.1502256,-0.1517784,-0.1533308,-0.1548828,-0.1564345,-0.1579857,-0.1595366,-0.1610871,-0.1626372,-0.1641868,-0.1657361,-0.1672850,-0.1688334,-0.1703815,-0.1719291,-0.1734763,-0.1750231,-0.1765694,-0.1781153,-0.1796607,-0.1812058,-0.1827503,-0.1842944,-0.1858381,-0.1873813,-0.1889241,-0.1904663,-0.1920081,-0.1935495,-0.1950903,-0.1966307,-0.1981706,-0.1997100,-0.2012489,-0.2027873,-0.2043252,-0.2058626,-0.2073995,-0.2089359,-0.2104718,-0.2120071,-0.2135419,-0.2150762,-0.2166100,-0.2181432,-0.2196759,-0.2212081,-0.2227397,-0.2242708,-0.2258013,-0.2273312,-0.2288606,-0.2303894,-0.2319177,-0.2334454,-0.2349725,-0.2364990,-0.2380249,-0.2395503,-0.2410751,-0.2425992,-0.2441228,-0.2456458,-0.2471681,-0.2486899,-0.2502110,-0.2517315,-0.2532514,-0.2547707,-0.2562894,-0.2578074,-0.2593248,-0.2608415,-0.2623576,-0.2638730,-0.2653878,-0.2669020,-0.2684155,-0.2699283,-0.2714404,-0.2729519,-0.2744627,-0.2759729,-0.2774823,-0.2789911,-0.2804992,-0.2820066,-0.2835133,-0.2850193,-0.2865246,-0.2880291,-0.2895330,-0.2910362,-0.2925386,-0.2940403,-0.2955413,-0.2970416,-0.2985411,-0.3000399,-0.3015380,-0.3030353,-0.3045318,-0.3060276,-0.3075227,-0.3090170,-0.3105105,-0.3120033,-0.3134953,-0.3149865,-0.3164770,-0.3179666,-0.3194555,-0.3209436,-0.3224309,-0.3239174,-0.3254031,-0.3268880,-0.3283721,-0.3298554,-0.3313379,-0.3328195,-0.3343004,-0.3357804,-0.3372596,-0.3387379,-0.3402154,-0.3416921,-0.3431679,-0.3446429,-0.3461171,-0.3475903,-0.3490628,-0.3505343,-0.3520050,-0.3534748,-0.3549438,-0.3564119,-0.3578791,-0.3593454,-0.3608108,-0.3622754,-0.3637390,-0.3652018,-0.3666636,-0.3681246,-0.3695846,-0.3710437,-0.3725019,-0.3739592,-0.3754156,-0.3768710,-0.3783255,-0.3797791,-0.3812317,-0.3826834,-0.3841342,-0.3855840,-0.3870328,-0.3884807,-0.3899277,-0.3913737,-0.3928187,-0.3942627,-0.3957058,-0.3971479,-0.3985890,-0.4000291,-0.4014683,-0.4029064,-0.4043436,-0.4057798,-0.4072149,-0.4086491,-0.4100822,-0.4115144,-0.4129455,-0.4143756,-0.4158047,-0.4172327,-0.4186597,-0.4200857,-0.4215107,-0.4229346,-0.4243575,-0.4257793,-0.4272001,-0.4286198,-0.4300384,-0.4314560,-0.4328726,-0.4342880,-0.4357024,-0.4371158,-0.4385280,-0.4399392,-0.4413492,-0.4427582,-0.4441661,-0.4455729,-0.4469786,-0.4483832,-0.4497867,-0.4511891,-0.4525904,-0.4539905,-0.4553895,-0.4567874,-0.4581842,-0.4595799,-0.4609744,-0.4623678,-0.4637600,-0.4651511,-0.4665410,-0.4679298,-0.4693175,-0.4707039,-0.4720893,-0.4734734,-0.4748564,-0.4762382,-0.4776188,-0.4789983,-0.4803766,-0.4817537,-0.4831296,-0.4845043,-0.4858778,-0.4872501,-0.4886212,-0.4899912,-0.4913599,-0.4927273,-0.4940936,-0.4954587,-0.4968225,-0.4981851,-0.4995465,-0.5009066,-0.5022655,-0.5036232,-0.5049796,-0.5063348,-0.5076887,-0.5090414,-0.5103928,-0.5117430,-0.5130919,-0.5144395,-0.5157859,-0.5171310,-0.5184748,-0.5198173,-0.5211586,-0.5224986,-0.5238372,-0.5251746,-0.5265107,-0.5278455,-0.5291790,-0.5305112,-0.5318421,-0.5331716,-0.5344999,-0.5358268,-0.5371524,-0.5384767,-0.5397996,-0.5411213,-0.5424415,-0.5437605,-0.5450781,-0.5463943,-0.5477093,-0.5490228,-0.5503350,-0.5516459,-0.5529554,-0.5542635,-0.5555702,-0.5568756,-0.5581796,-0.5594823,-0.5607835,-0.5620834,-0.5633819,-0.5646790,-0.5659746,-0.5672689,-0.5685619,-0.5698533,-0.5711434,-0.5724321,-0.5737194,-0.5750053,-0.5762897,-0.5775727,-0.5788543,-0.5801345,-0.5814132,-0.5826905,-0.5839663,-0.5852408,-0.5865137,-0.5877853,-0.5890553,-0.5903239,-0.5915911,-0.5928568,-0.5941211,-0.5953838,-0.5966451,-0.5979050,-0.5991633,-0.6004202,-0.6016756,-0.6029295,-0.6041820,-0.6054329,-0.6066824,-0.6079303,-0.6091767,-0.6104217,-0.6116651,-0.6129071,-0.6141475,-0.6153864,-0.6166238,-0.6178596,-0.6190939,-0.6203268,-0.6215580,-0.6227878,-0.6240160,-0.6252427,-0.6264678,-0.6276914,-0.6289134,-0.6301339,-0.6313528,-0.6325702,-0.6337860,-0.6350002,-0.6362129,-0.6374240,-0.6386335,-0.6398415,-0.6410479,-0.6422527,-0.6434559,-0.6446575,-0.6458575,-0.6470560,-0.6482528,-0.6494480,-0.6506417,-0.6518337,-0.6530242,-0.6542130,-0.6554002,-0.6565858,-0.6577697,-0.6589521,-0.6601328,-0.6613119,-0.6624893,-0.6636651,-0.6648393,-0.6660119,-0.6671828,-0.6683520,-0.6695196,-0.6706856,-0.6718499,-0.6730125,-0.6741735,-0.6753328,-0.6764905,-0.6776464,-0.6788007,-0.6799534,-0.6811043,-0.6822536,-0.6834012,-0.6845471,-0.6856913,-0.6868338,-0.6879747,-0.6891138,-0.6902512,-0.6913870,-0.6925210,-0.6936533,-0.6947839,-0.6959128,-0.6970400,-0.6981654,-0.6992891,-0.7004112,-0.7015314,-0.7026500,-0.7037668,-0.7048819,-0.7059952,-0.7071068,-0.7082166,-0.7093247,-0.7104311,-0.7115357,-0.7126385,-0.7137396,-0.7148389,-0.7159365,-0.7170323,-0.7181263,-0.7192185,-0.7203090,-0.7213977,-0.7224846,-0.7235698,-0.7246531,-0.7257347,-0.7268145,-0.7278924,-0.7289686,-0.7300430,-0.7311156,-0.7321864,-0.7332553,-0.7343225,-0.7353879,-0.7364514,-0.7375131,-0.7385730,-0.7396311,-0.7406873,-0.7417418,-0.7427944,-0.7438451,-0.7448941,-0.7459411,-0.7469864,-0.7480298,-0.7490714,-0.7501111,-0.7511489,-0.7521849,-0.7532191,-0.7542514,-0.7552818,-0.7563104,-0.7573371,-0.7583619,-0.7593849,-0.7604060,-0.7614252,-0.7624425,-0.7634580,-0.7644715,-0.7654832,-0.7664930,-0.7675009,-0.7685069,-0.7695110,-0.7705132,-0.7715136,-0.7725120,-0.7735085,-0.7745031,-0.7754957,-0.7764865,-0.7774754,-0.7784623,-0.7794473,-0.7804304,-0.7814116,-0.7823908,-0.7833681,-0.7843435,-0.7853169,-0.7862884,-0.7872580,-0.7882256,-0.7891913,-0.7901550,-0.7911168,-0.7920766,-0.7930345,-0.7939904,-0.7949444,-0.7958963,-0.7968464,-0.7977944,-0.7987405,-0.7996847,-0.8006268,-0.8015670,-0.8025052,-0.8034414,-0.8043756,-0.8053079,-0.8062381,-0.8071664,-0.8080927,-0.8090170,-0.8099393,-0.8108596,-0.8117779,-0.8126942,-0.8136084,-0.8145207,-0.8154310,-0.8163393,-0.8172455,-0.8181497,-0.8190519,-0.8199521,-0.8208503,-0.8217464,-0.8226405,-0.8235326,-0.8244226,-0.8253107,-0.8261966,-0.8270806,-0.8279625,-0.8288423,-0.8297201,-0.8305959,-0.8314696,-0.8323413,-0.8332109,-0.8340784,-0.8349439,-0.8358074,-0.8366687,-0.8375280,-0.8383853,-0.8392405,-0.8400936,-0.8409446,-0.8417935,-0.8426404,-0.8434852,-0.8443279,-0.8451686,-0.8460071,-0.8468436,-0.8476779,-0.8485102,-0.8493404,-0.8501685,-0.8509945,-0.8518184,-0.8526402,-0.8534599,-0.8542774,-0.8550929,-0.8559063,-0.8567175,-0.8575267,-0.8583337,-0.8591386,-0.8599414,-0.8607420,-0.8615406,-0.8623370,-0.8631313,-0.8639234,-0.8647134,-0.8655013,-0.8662871,-0.8670707,-0.8678522,-0.8686315,-0.8694087,-0.8701838,-0.8709567,-0.8717274,-0.8724960,-0.8732625,-0.8740267,-0.8747889,-0.8755489,-0.8763067,-0.8770623,-0.8778158,-0.8785672,-0.8793163,-0.8800633,-0.8808081,-0.8815508,-0.8822912,-0.8830295,-0.8837656,-0.8844996,-0.8852313,-0.8859609,-0.8866883,-0.8874134,-0.8881364,-0.8888573,-0.8895759,-0.8902923,-0.8910065,-0.8917186,-0.8924284,-0.8931360,-0.8938414,-0.8945446,-0.8952456,-0.8959444,-0.8966410,-0.8973354,-0.8980276,-0.8987175,-0.8994053,-0.9000908,-0.9007741,-0.9014551,-0.9021340,-0.9028106,-0.9034850,-0.9041571,-0.9048271,-0.9054947,-0.9061602,-0.9068234,-0.9074844,-0.9081432,-0.9087997,-0.9094539,-0.9101060,-0.9107557,-0.9114033,-0.9120486,-0.9126916,-0.9133324,-0.9139709,-0.9146072,-0.9152412,-0.9158729,-0.9165024,-0.9171297,-0.9177546,-0.9183773,-0.9189978,-0.9196159,-0.9202318,-0.9208455,-0.9214568,-0.9220659,-0.9226727,-0.9232773,-0.9238795,-0.9244795,-0.9250772,-0.9256726,-0.9262658,-0.9268566,-0.9274452,-0.9280314,-0.9286154,-0.9291971,-0.9297765,-0.9303536,-0.9309284,-0.9315009,-0.9320711,-0.9326390,-0.9332046,-0.9337679,-0.9343289,-0.9348876,-0.9354440,-0.9359981,-0.9365499,-0.9370993,-0.9376465,-0.9381913,-0.9387339,-0.9392741,-0.9398120,-0.9403475,-0.9408808,-0.9414117,-0.9419403,-0.9424666,-0.9429905,-0.9435122,-0.9440315,-0.9445484,-0.9450631,-0.9455754,-0.9460854,-0.9465930,-0.9470983,-0.9476013,-0.9481019,-0.9486002,-0.9490961,-0.9495898,-0.9500810,-0.9505699,-0.9510565,-0.9515407,-0.9520226,-0.9525022,-0.9529793,-0.9534542,-0.9539267,-0.9543968,-0.9548645,-0.9553300,-0.9557930,-0.9562537,-0.9567121,-0.9571680,-0.9576216,-0.9580729,-0.9585218,-0.9589683,-0.9594125,-0.9598543,-0.9602937,-0.9607307,-0.9611654,-0.9615977,-0.9620277,-0.9624552,-0.9628804,-0.9633032,-0.9637237,-0.9641417,-0.9645574,-0.9649707,-0.9653816,-0.9657902,-0.9661963,-0.9666001,-0.9670015,-0.9674005,-0.9677971,-0.9681913,-0.9685832,-0.9689726,-0.9693597,-0.9697443,-0.9701266,-0.9705065,-0.9708840,-0.9712590,-0.9716317,-0.9720020,-0.9723699,-0.9727354,-0.9730985,-0.9734592,-0.9738175,-0.9741734,-0.9745269,-0.9748780,-0.9752266,-0.9755729,-0.9759168,-0.9762582,-0.9765973,-0.9769339,-0.9772681,-0.9775999,-0.9779293,-0.9782563,-0.9785809,-0.9789031,-0.9792228,-0.9795401,-0.9798551,-0.9801675,-0.9804776,-0.9807853,-0.9810905,-0.9813933,-0.9816937,-0.9819917,-0.9822873,-0.9825804,-0.9828711,-0.9831594,-0.9834452,-0.9837286,-0.9840096,-0.9842882,-0.9845643,-0.9848380,-0.9851093,-0.9853782,-0.9856446,-0.9859086,-0.9861701,-0.9864293,-0.9866859,-0.9869402,-0.9871920,-0.9874414,-0.9876883,-0.9879328,-0.9881749,-0.9884146,-0.9886517,-0.9888865,-0.9891188,-0.9893487,-0.9895761,-0.9898011,-0.9900237,-0.9902438,-0.9904614,-0.9906766,-0.9908894,-0.9910997,-0.9913076,-0.9915131,-0.9917161,-0.9919166,-0.9921147,-0.9923104,-0.9925036,-0.9926943,-0.9928826,-0.9930685,-0.9932519,-0.9934328,-0.9936113,-0.9937874,-0.9939610,-0.9941321,-0.9943008,-0.9944670,-0.9946308,-0.9947921,-0.9949510,-0.9951074,-0.9952614,-0.9954129,-0.9955620,-0.9957086,-0.9958527,-0.9959944,-0.9961336,-0.9962704,-0.9964047,-0.9965365,-0.9966659,-0.9967929,-0.9969173,-0.9970393,-0.9971589,-0.9972760,-0.9973906,-0.9975028,-0.9976125,-0.9977198,-0.9978245,-0.9979269,-0.9980267,-0.9981241,-0.9982191,-0.9983115,-0.9984016,-0.9984891,-0.9985742,-0.9986568,-0.9987370,-0.9988146,-0.9988899,-0.9989626,-0.9990329,-0.9991008,-0.9991661,-0.9992290,-0.9992895,-0.9993474,-0.9994029,-0.9994560,-0.9995066,-0.9995547,-0.9996003,-0.9996435,-0.9996842,-0.9997224,-0.9997582,-0.9997915,-0.9998224,-0.9998507,-0.9998766,-0.9999001,-0.9999210,-0.9999395,-0.9999556,-0.9999692,-0.9999803,-0.9999889,-0.9999951,-0.9999988,-1.0000000,-0.9999988,-0.9999951,-0.9999889,-0.9999803,-0.9999692,-0.9999556,-0.9999395,-0.9999210,-0.9999001,-0.9998766,-0.9998507,-0.9998224,-0.9997915,-0.9997582,-0.9997224,-0.9996842,-0.9996435,-0.9996003,-0.9995547,-0.9995066,-0.9994560,-0.9994029,-0.9993474,-0.9992895,-0.9992290,-0.9991661,-0.9991008,-0.9990329,-0.9989626,-0.9988899,-0.9988146,-0.9987370,-0.9986568,-0.9985742,-0.9984891,-0.9984016,-0.9983115,-0.9982191,-0.9981241,-0.9980267,-0.9979269,-0.9978245,-0.9977198,-0.9976125,-0.9975028,-0.9973906,-0.9972760,-0.9971589,-0.9970393,-0.9969173,-0.9967929,-0.9966659,-0.9965365,-0.9964047,-0.9962704,-0.9961336,-0.9959944,-0.9958527,-0.9957086,-0.9955620,-0.9954129,-0.9952614,-0.9951074,-0.9949510,-0.9947921,-0.9946308,-0.9944670,-0.9943008,-0.9941321,-0.9939610,-0.9937874,-0.9936113,-0.9934328,-0.9932519,-0.9930685,-0.9928826,-0.9926943,-0.9925036,-0.9923104,-0.9921147,-0.9919166,-0.9917161,-0.9915131,-0.9913076,-0.9910997,-0.9908894,-0.9906766,-0.9904614,-0.9902438,-0.9900237,-0.9898011,-0.9895761,-0.9893487,-0.9891188,-0.9888865,-0.9886517,-0.9884146,-0.9881749,-0.9879328,-0.9876883,-0.9874414,-0.9871920,-0.9869402,-0.9866859,-0.9864293,-0.9861701,-0.9859086,-0.9856446,-0.9853782,-0.9851093,-0.9848380,-0.9845643,-0.9842882,-0.9840096,-0.9837286,-0.9834452,-0.9831594,-0.9828711,-0.9825804,-0.9822873,-0.9819917,-0.9816937,-0.9813933,-0.9810905,-0.9807853,-0.9804776,-0.9801675,-0.9798551,-0.9795401,-0.9792228,-0.9789031,-0.9785809,-0.9782563,-0.9779293,-0.9775999,-0.9772681,-0.9769339,-0.9765973,-0.9762582,-0.9759168,-0.9755729,-0.9752266,-0.9748780,-0.9745269,-0.9741734,-0.9738175,-0.9734592,-0.9730985,-0.9727354,-0.9723699,-0.9720020,-0.9716317,-0.9712590,-0.9708840,-0.9705065,-0.9701266,-0.9697443,-0.9693597,-0.9689726,-0.9685832,-0.9681913,-0.9677971,-0.9674005,-0.9670015,-0.9666001,-0.9661963,-0.9657902,-0.9653816,-0.9649707,-0.9645574,-0.9641417,-0.9637237,-0.9633032,-0.9628804,-0.9624552,-0.9620277,-0.9615977,-0.9611654,-0.9607307,-0.9602937,-0.9598543,-0.9594125,-0.9589683,-0.9585218,-0.9580729,-0.9576216,-0.9571680,-0.9567121,-0.9562537,-0.9557930,-0.9553300,-0.9548645,-0.9543968,-0.9539267,-0.9534542,-0.9529793,-0.9525022,-0.9520226,-0.9515407,-0.9510565,-0.9505699,-0.9500810,-0.9495898,-0.9490961,-0.9486002,-0.9481019,-0.9476013,-0.9470983,-0.9465930,-0.9460854,-0.9455754,-0.9450631,-0.9445484,-0.9440315,-0.9435122,-0.9429905,-0.9424666,-0.9419403,-0.9414117,-0.9408808,-0.9403475,-0.9398120,-0.9392741,-0.9387339,-0.9381913,-0.9376465,-0.9370993,-0.9365499,-0.9359981,-0.9354440,-0.9348876,-0.9343289,-0.9337679,-0.9332046,-0.9326390,-0.9320711,-0.9315009,-0.9309284,-0.9303536,-0.9297765,-0.9291971,-0.9286154,-0.9280314,-0.9274452,-0.9268566,-0.9262658,-0.9256726,-0.9250772,-0.9244795,-0.9238795,-0.9232773,-0.9226727,-0.9220659,-0.9214568,-0.9208455,-0.9202318,-0.9196159,-0.9189978,-0.9183773,-0.9177546,-0.9171297,-0.9165024,-0.9158729,-0.9152412,-0.9146072,-0.9139709,-0.9133324,-0.9126916,-0.9120486,-0.9114033,-0.9107557,-0.9101060,-0.9094539,-0.9087997,-0.9081432,-0.9074844,-0.9068234,-0.9061602,-0.9054947,-0.9048271,-0.9041571,-0.9034850,-0.9028106,-0.9021340,-0.9014551,-0.9007741,-0.9000908,-0.8994053,-0.8987175,-0.8980276,-0.8973354,-0.8966410,-0.8959444,-0.8952456,-0.8945446,-0.8938414,-0.8931360,-0.8924284,-0.8917186,-0.8910065,-0.8902923,-0.8895759,-0.8888573,-0.8881364,-0.8874134,-0.8866883,-0.8859609,-0.8852313,-0.8844996,-0.8837656,-0.8830295,-0.8822912,-0.8815508,-0.8808081,-0.8800633,-0.8793163,-0.8785672,-0.8778158,-0.8770623,-0.8763067,-0.8755489,-0.8747889,-0.8740267,-0.8732625,-0.8724960,-0.8717274,-0.8709567,-0.8701838,-0.8694087,-0.8686315,-0.8678522,-0.8670707,-0.8662871,-0.8655013,-0.8647134,-0.8639234,-0.8631313,-0.8623370,-0.8615406,-0.8607420,-0.8599414,-0.8591386,-0.8583337,-0.8575267,-0.8567175,-0.8559063,-0.8550929,-0.8542774,-0.8534599,-0.8526402,-0.8518184,-0.8509945,-0.8501685,-0.8493404,-0.8485102,-0.8476779,-0.8468436,-0.8460071,-0.8451686,-0.8443279,-0.8434852,-0.8426404,-0.8417935,-0.8409446,-0.8400936,-0.8392405,-0.8383853,-0.8375280,-0.8366687,-0.8358074,-0.8349439,-0.8340784,-0.8332109,-0.8323413,-0.8314696,-0.8305959,-0.8297201,-0.8288423,-0.8279625,-0.8270806,-0.8261966,-0.8253107,-0.8244226,-0.8235326,-0.8226405,-0.8217464,-0.8208503,-0.8199521,-0.8190519,-0.8181497,-0.8172455,-0.8163393,-0.8154310,-0.8145207,-0.8136084,-0.8126942,-0.8117779,-0.8108596,-0.8099393,-0.8090170,-0.8080927,-0.8071664,-0.8062381,-0.8053079,-0.8043756,-0.8034414,-0.8025052,-0.8015670,-0.8006268,-0.7996847,-0.7987405,-0.7977944,-0.7968464,-0.7958963,-0.7949444,-0.7939904,-0.7930345,-0.7920766,-0.7911168,-0.7901550,-0.7891913,-0.7882256,-0.7872580,-0.7862884,-0.7853169,-0.7843435,-0.7833681,-0.7823908,-0.7814116,-0.7804304,-0.7794473,-0.7784623,-0.7774754,-0.7764865,-0.7754957,-0.7745031,-0.7735085,-0.7725120,-0.7715136,-0.7705132,-0.7695110,-0.7685069,-0.7675009,-0.7664930,-0.7654832,-0.7644715,-0.7634580,-0.7624425,-0.7614252,-0.7604060,-0.7593849,-0.7583619,-0.7573371,-0.7563104,-0.7552818,-0.7542514,-0.7532191,-0.7521849,-0.7511489,-0.7501111,-0.7490714,-0.7480298,-0.7469864,-0.7459411,-0.7448941,-0.7438451,-0.7427944,-0.7417418,-0.7406873,-0.7396311,-0.7385730,-0.7375131,-0.7364514,-0.7353879,-0.7343225,-0.7332553,-0.7321864,-0.7311156,-0.7300430,-0.7289686,-0.7278924,-0.7268145,-0.7257347,-0.7246531,-0.7235698,-0.7224846,-0.7213977,-0.7203090,-0.7192185,-0.7181263,-0.7170323,-0.7159365,-0.7148389,-0.7137396,-0.7126385,-0.7115357,-0.7104311,-0.7093247,-0.7082166,-0.7071068,-0.7059952,-0.7048819,-0.7037668,-0.7026500,-0.7015314,-0.7004112,-0.6992891,-0.6981654,-0.6970400,-0.6959128,-0.6947839,-0.6936533,-0.6925210,-0.6913870,-0.6902512,-0.6891138,-0.6879747,-0.6868338,-0.6856913,-0.6845471,-0.6834012,-0.6822536,-0.6811043,-0.6799534,-0.6788007,-0.6776464,-0.6764905,-0.6753328,-0.6741735,-0.6730125,-0.6718499,-0.6706856,-0.6695196,-0.6683520,-0.6671828,-0.6660119,-0.6648393,-0.6636651,-0.6624893,-0.6613119,-0.6601328,-0.6589521,-0.6577697,-0.6565858,-0.6554002,-0.6542130,-0.6530242,-0.6518337,-0.6506417,-0.6494480,-0.6482528,-0.6470560,-0.6458575,-0.6446575,-0.6434559,-0.6422527,-0.6410479,-0.6398415,-0.6386335,-0.6374240,-0.6362129,-0.6350002,-0.6337860,-0.6325702,-0.6313528,-0.6301339,-0.6289134,-0.6276914,-0.6264678,-0.6252427,-0.6240160,-0.6227878,-0.6215580,-0.6203268,-0.6190939,-0.6178596,-0.6166238,-0.6153864,-0.6141475,-0.6129071,-0.6116651,-0.6104217,-0.6091767,-0.6079303,-0.6066824,-0.6054329,-0.6041820,-0.6029295,-0.6016756,-0.6004202,-0.5991633,-0.5979050,-0.5966451,-0.5953838,-0.5941211,-0.5928568,-0.5915911,-0.5903239,-0.5890553,-0.5877853,-0.5865137,-0.5852408,-0.5839663,-0.5826905,-0.5814132,-0.5801345,-0.5788543,-0.5775727,-0.5762897,-0.5750053,-0.5737194,-0.5724321,-0.5711434,-0.5698533,-0.5685619,-0.5672689,-0.5659746,-0.5646790,-0.5633819,-0.5620834,-0.5607835,-0.5594823,-0.5581796,-0.5568756,-0.5555702,-0.5542635,-0.5529554,-0.5516459,-0.5503350,-0.5490228,-0.5477093,-0.5463943,-0.5450781,-0.5437605,-0.5424415,-0.5411213,-0.5397996,-0.5384767,-0.5371524,-0.5358268,-0.5344999,-0.5331716,-0.5318421,-0.5305112,-0.5291790,-0.5278455,-0.5265107,-0.5251746,-0.5238372,-0.5224986,-0.5211586,-0.5198173,-0.5184748,-0.5171310,-0.5157859,-0.5144395,-0.5130919,-0.5117430,-0.5103928,-0.5090414,-0.5076887,-0.5063348,-0.5049796,-0.5036232,-0.5022655,-0.5009066,-0.4995465,-0.4981851,-0.4968225,-0.4954587,-0.4940936,-0.4927273,-0.4913599,-0.4899912,-0.4886212,-0.4872501,-0.4858778,-0.4845043,-0.4831296,-0.4817537,-0.4803766,-0.4789983,-0.4776188,-0.4762382,-0.4748564,-0.4734734,-0.4720893,-0.4707039,-0.4693175,-0.4679298,-0.4665410,-0.4651511,-0.4637600,-0.4623678,-0.4609744,-0.4595799,-0.4581842,-0.4567874,-0.4553895,-0.4539905,-0.4525904,-0.4511891,-0.4497867,-0.4483832,-0.4469786,-0.4455729,-0.4441661,-0.4427582,-0.4413492,-0.4399392,-0.4385280,-0.4371158,-0.4357024,-0.4342880,-0.4328726,-0.4314560,-0.4300384,-0.4286198,-0.4272001,-0.4257793,-0.4243575,-0.4229346,-0.4215107,-0.4200857,-0.4186597,-0.4172327,-0.4158047,-0.4143756,-0.4129455,-0.4115144,-0.4100822,-0.4086491,-0.4072149,-0.4057798,-0.4043436,-0.4029064,-0.4014683,-0.4000291,-0.3985890,-0.3971479,-0.3957058,-0.3942627,-0.3928187,-0.3913737,-0.3899277,-0.3884807,-0.3870328,-0.3855840,-0.3841342,-0.3826834,-0.3812317,-0.3797791,-0.3783255,-0.3768710,-0.3754156,-0.3739592,-0.3725019,-0.3710437,-0.3695846,-0.3681246,-0.3666636,-0.3652018,-0.3637390,-0.3622754,-0.3608108,-0.3593454,-0.3578791,-0.3564119,-0.3549438,-0.3534748,-0.3520050,-0.3505343,-0.3490628,-0.3475903,-0.3461171,-0.3446429,-0.3431679,-0.3416921,-0.3402154,-0.3387379,-0.3372596,-0.3357804,-0.3343004,-0.3328195,-0.3313379,-0.3298554,-0.3283721,-0.3268880,-0.3254031,-0.3239174,-0.3224309,-0.3209436,-0.3194555,-0.3179666,-0.3164770,-0.3149865,-0.3134953,-0.3120033,-0.3105105,-0.3090170,-0.3075227,-0.3060276,-0.3045318,-0.3030353,-0.3015380,-0.3000399,-0.2985411,-0.2970416,-0.2955413,-0.2940403,-0.2925386,-0.2910362,-0.2895330,-0.2880291,-0.2865246,-0.2850193,-0.2835133,-0.2820066,-0.2804992,-0.2789911,-0.2774823,-0.2759729,-0.2744627,-0.2729519,-0.2714404,-0.2699283,-0.2684155,-0.2669020,-0.2653878,-0.2638730,-0.2623576,-0.2608415,-0.2593248,-0.2578074,-0.2562894,-0.2547707,-0.2532514,-0.2517315,-0.2502110,-0.2486899,-0.2471681,-0.2456458,-0.2441228,-0.2425992,-0.2410751,-0.2395503,-0.2380249,-0.2364990,-0.2349725,-0.2334454,-0.2319177,-0.2303894,-0.2288606,-0.2273312,-0.2258013,-0.2242708,-0.2227397,-0.2212081,-0.2196759,-0.2181432,-0.2166100,-0.2150762,-0.2135419,-0.2120071,-0.2104718,-0.2089359,-0.2073995,-0.2058626,-0.2043252,-0.2027873,-0.2012489,-0.1997100,-0.1981706,-0.1966307,-0.1950903,-0.1935495,-0.1920081,-0.1904663,-0.1889241,-0.1873813,-0.1858381,-0.1842944,-0.1827503,-0.1812058,-0.1796607,-0.1781153,-0.1765694,-0.1750231,-0.1734763,-0.1719291,-0.1703815,-0.1688334,-0.1672850,-0.1657361,-0.1641868,-0.1626372,-0.1610871,-0.1595366,-0.1579857,-0.1564345,-0.1548828,-0.1533308,-0.1517784,-0.1502256,-0.1486724,-0.1471189,-0.1455650,-0.1440108,-0.1424562,-0.1409012,-0.1393459,-0.1377903,-0.1362343,-0.1346780,-0.1331213,-0.1315644,-0.1300071,-0.1284494,-0.1268915,-0.1253332,-0.1237747,-0.1222158,-0.1206566,-0.1190972,-0.1175374,-0.1159773,-0.1144170,-0.1128564,-0.1112955,-0.1097343,-0.1081729,-0.1066112,-0.1050492,-0.1034869,-0.1019245,-0.1003617,-0.0987987,-0.0972355,-0.0956720,-0.0941083,-0.0925444,-0.0909802,-0.0894158,-0.0878512,-0.0862864,-0.0847213,-0.0831561,-0.0815906,-0.0800250,-0.0784591,-0.0768930,-0.0753268,-0.0737604,-0.0721938,-0.0706270,-0.0690600,-0.0674929,-0.0659256,-0.0643581,-0.0627905,-0.0612227,-0.0596548,-0.0580867,-0.0565185,-0.0549502,-0.0533817,-0.0518131,-0.0502443,-0.0486754,-0.0471065,-0.0455373,-0.0439681,-0.0423988,-0.0408294,-0.0392598,-0.0376902,-0.0361205,-0.0345506,-0.0329807,-0.0314108,-0.0298407,-0.0282706,-0.0267004,-0.0251301,-0.0235598,-0.0219894,-0.0204189,-0.0188484,-0.0172779,-0.0157073,-0.0141367,-0.0125660,-0.0109954,-0.0094246,-0.0078539,-0.0062831,-0.0047124,-0.0031416,-0.0015708,-0.0000000,0.0015708,0.0031416,0.0047124,0.0062831,0.0078539,0.0094246,0.0109954,0.0125660,0.0141367,0.0157073,0.0172779,0.0188484,0.0204189,0.0219894,0.0235598,0.0251301,0.0267004,0.0282706,0.0298407,0.0314108,0.0329807,0.0345506,0.0361205,0.0376902,0.0392598,0.0408294,0.0423988,0.0439681,0.0455373,0.0471065,0.0486754,0.0502443,0.0518131,0.0533817,0.0549502,0.0565185,0.0580867,0.0596548,0.0612227,0.0627905,0.0643581,0.0659256,0.0674929,0.0690600,0.0706270,0.0721938,0.0737604,0.0753268,0.0768930,0.0784591,0.0800250,0.0815906,0.0831561,0.0847213,0.0862864,0.0878512,0.0894158,0.0909802,0.0925444,0.0941083,0.0956720,0.0972355,0.0987987,0.1003617,0.1019245,0.1034869,0.1050492,0.1066112,0.1081729,0.1097343,0.1112955,0.1128564,0.1144170,0.1159773,0.1175374,0.1190972,0.1206566,0.1222158,0.1237747,0.1253332,0.1268915,0.1284494,0.1300071,0.1315644,0.1331213,0.1346780,0.1362343,0.1377903,0.1393459,0.1409012,0.1424562,0.1440108,0.1455650,0.1471189,0.1486724,0.1502256,0.1517784,0.1533308,0.1548828,0.1564345,0.1579857,0.1595366,0.1610871,0.1626372,0.1641868,0.1657361,0.1672850,0.1688334,0.1703815,0.1719291,0.1734763,0.1750231,0.1765694,0.1781153,0.1796607,0.1812058,0.1827503,0.1842944,0.1858381,0.1873813,0.1889241,0.1904663,0.1920081,0.1935495,0.1950903,0.1966307,0.1981706,0.1997100,0.2012489,0.2027873,0.2043252,0.2058626,0.2073995,0.2089359,0.2104718,0.2120071,0.2135419,0.2150762,0.2166100,0.2181432,0.2196759,0.2212081,0.2227397,0.2242708,0.2258013,0.2273312,0.2288606,0.2303894,0.2319177,0.2334454,0.2349725,0.2364990,0.2380249,0.2395503,0.2410751,0.2425992,0.2441228,0.2456458,0.2471681,0.2486899,0.2502110,0.2517315,0.2532514,0.2547707,0.2562894,0.2578074,0.2593248,0.2608415,0.2623576,0.2638730,0.2653878,0.2669020,0.2684155,0.2699283,0.2714404,0.2729519,0.2744627,0.2759729,0.2774823,0.2789911,0.2804992,0.2820066,0.2835133,0.2850193,0.2865246,0.2880291,0.2895330,0.2910362,0.2925386,0.2940403,0.2955413,0.2970416,0.2985411,0.3000399,0.3015380,0.3030353,0.3045318,0.3060276,0.3075227,0.3090170,0.3105105,0.3120033,0.3134953,0.3149865,0.3164770,0.3179666,0.3194555,0.3209436,0.3224309,0.3239174,0.3254031,0.3268880,0.3283721,0.3298554,0.3313379,0.3328195,0.3343004,0.3357804,0.3372596,0.3387379,0.3402154,0.3416921,0.3431679,0.3446429,0.3461171,0.3475903,0.3490628,0.3505343,0.3520050,0.3534748,0.3549438,0.3564119,0.3578791,0.3593454,0.3608108,0.3622754,0.3637390,0.3652018,0.3666636,0.3681246,0.3695846,0.3710437,0.3725019,0.3739592,0.3754156,0.3768710,0.3783255,0.3797791,0.3812317,0.3826834,0.3841342,0.3855840,0.3870328,0.3884807,0.3899277,0.3913737,0.3928187,0.3942627,0.3957058,0.3971479,0.3985890,0.4000291,0.4014683,0.4029064,0.4043436,0.4057798,0.4072149,0.4086491,0.4100822,0.4115144,0.4129455,0.4143756,0.4158047,0.4172327,0.4186597,0.4200857,0.4215107,0.4229346,0.4243575,0.4257793,0.4272001,0.4286198,0.4300384,0.4314560,0.4328726,0.4342880,0.4357024,0.4371158,0.4385280,0.4399392,0.4413492,0.4427582,0.4441661,0.4455729,0.4469786,0.4483832,0.4497867,0.4511891,0.4525904,0.4539905,0.4553895,0.4567874,0.4581842,0.4595799,0.4609744,0.4623678,0.4637600,0.4651511,0.4665410,0.4679298,0.4693175,0.4707039,0.4720893,0.4734734,0.4748564,0.4762382,0.4776188,0.4789983,0.4803766,0.4817537,0.4831296,0.4845043,0.4858778,0.4872501,0.4886212,0.4899912,0.4913599,0.4927273,0.4940936,0.4954587,0.4968225,0.4981851,0.4995465,0.5009066,0.5022655,0.5036232,0.5049796,0.5063348,0.5076887,0.5090414,0.5103928,0.5117430,0.5130919,0.5144395,0.5157859,0.5171310,0.5184748,0.5198173,0.5211586,0.5224986,0.5238372,0.5251746,0.5265107,0.5278455,0.5291790,0.5305112,0.5318421,0.5331716,0.5344999,0.5358268,0.5371524,0.5384767,0.5397996,0.5411213,0.5424415,0.5437605,0.5450781,0.5463943,0.5477093,0.5490228,0.5503350,0.5516459,0.5529554,0.5542635,0.5555702,0.5568756,0.5581796,0.5594823,0.5607835,0.5620834,0.5633819,0.5646790,0.5659746,0.5672689,0.5685619,0.5698533,0.5711434,0.5724321,0.5737194,0.5750053,0.5762897,0.5775727,0.5788543,0.5801345,0.5814132,0.5826905,0.5839663,0.5852408,0.5865137,0.5877853,0.5890553,0.5903239,0.5915911,0.5928568,0.5941211,0.5953838,0.5966451,0.5979050,0.5991633,0.6004202,0.6016756,0.6029295,0.6041820,0.6054329,0.6066824,0.6079303,0.6091767,0.6104217,0.6116651,0.6129071,0.6141475,0.6153864,0.6166238,0.6178596,0.6190939,0.6203268,0.6215580,0.6227878,0.6240160,0.6252427,0.6264678,0.6276914,0.6289134,0.6301339,0.6313528,0.6325702,0.6337860,0.6350002,0.6362129,0.6374240,0.6386335,0.6398415,0.6410479,0.6422527,0.6434559,0.6446575,0.6458575,0.6470560,0.6482528,0.6494480,0.6506417,0.6518337,0.6530242,0.6542130,0.6554002,0.6565858,0.6577697,0.6589521,0.6601328,0.6613119,0.6624893,0.6636651,0.6648393,0.6660119,0.6671828,0.6683520,0.6695196,0.6706856,0.6718499,0.6730125,0.6741735,0.6753328,0.6764905,0.6776464,0.6788007,0.6799534,0.6811043,0.6822536,0.6834012,0.6845471,0.6856913,0.6868338,0.6879747,0.6891138,0.6902512,0.6913870,0.6925210,0.6936533,0.6947839,0.6959128,0.6970400,0.6981654,0.6992891,0.7004112,0.7015314,0.7026500,0.7037668,0.7048819,0.7059952,0.7071068,0.7082166,0.7093247,0.7104311,0.7115357,0.7126385,0.7137396,0.7148389,0.7159365,0.7170323,0.7181263,0.7192185,0.7203090,0.7213977,0.7224846,0.7235698,0.7246531,0.7257347,0.7268145,0.7278924,0.7289686,0.7300430,0.7311156,0.7321864,0.7332553,0.7343225,0.7353879,0.7364514,0.7375131,0.7385730,0.7396311,0.7406873,0.7417418,0.7427944,0.7438451,0.7448941,0.7459411,0.7469864,0.7480298,0.7490714,0.7501111,0.7511489,0.7521849,0.7532191,0.7542514,0.7552818,0.7563104,0.7573371,0.7583619,0.7593849,0.7604060,0.7614252,0.7624425,0.7634580,0.7644715,0.7654832,0.7664930,0.7675009,0.7685069,0.7695110,0.7705132,0.7715136,0.7725120,0.7735085,0.7745031,0.7754957,0.7764865,0.7774754,0.7784623,0.7794473,0.7804304,0.7814116,0.7823908,0.7833681,0.7843435,0.7853169,0.7862884,0.7872580,0.7882256,0.7891913,0.7901550,0.7911168,0.7920766,0.7930345,0.7939904,0.7949444,0.7958963,0.7968464,0.7977944,0.7987405,0.7996847,0.8006268,0.8015670,0.8025052,0.8034414,0.8043756,0.8053079,0.8062381,0.8071664,0.8080927,0.8090170,0.8099393,0.8108596,0.8117779,0.8126942,0.8136084,0.8145207,0.8154310,0.8163393,0.8172455,0.8181497,0.8190519,0.8199521,0.8208503,0.8217464,0.8226405,0.8235326,0.8244226,0.8253107,0.8261966,0.8270806,0.8279625,0.8288423,0.8297201,0.8305959,0.8314696,0.8323413,0.8332109,0.8340784,0.8349439,0.8358074,0.8366687,0.8375280,0.8383853,0.8392405,0.8400936,0.8409446,0.8417935,0.8426404,0.8434852,0.8443279,0.8451686,0.8460071,0.8468436,0.8476779,0.8485102,0.8493404,0.8501685,0.8509945,0.8518184,0.8526402,0.8534599,0.8542774,0.8550929,0.8559063,0.8567175,0.8575267,0.8583337,0.8591386,0.8599414,0.8607420,0.8615406,0.8623370,0.8631313,0.8639234,0.8647134,0.8655013,0.8662871,0.8670707,0.8678522,0.8686315,0.8694087,0.8701838,0.8709567,0.8717274,0.8724960,0.8732625,0.8740267,0.8747889,0.8755489,0.8763067,0.8770623,0.8778158,0.8785672,0.8793163,0.8800633,0.8808081,0.8815508,0.8822912,0.8830295,0.8837656,0.8844996,0.8852313,0.8859609,0.8866883,0.8874134,0.8881364,0.8888573,0.8895759,0.8902923,0.8910065,0.8917186,0.8924284,0.8931360,0.8938414,0.8945446,0.8952456,0.8959444,0.8966410,0.8973354,0.8980276,0.8987175,0.8994053,0.9000908,0.9007741,0.9014551,0.9021340,0.9028106,0.9034850,0.9041571,0.9048271,0.9054947,0.9061602,0.9068234,0.9074844,0.9081432,0.9087997,0.9094539,0.9101060,0.9107557,0.9114033,0.9120486,0.9126916,0.9133324,0.9139709,0.9146072,0.9152412,0.9158729,0.9165024,0.9171297,0.9177546,0.9183773,0.9189978,0.9196159,0.9202318,0.9208455,0.9214568,0.9220659,0.9226727,0.9232773,0.9238795,0.9244795,0.9250772,0.9256726,0.9262658,0.9268566,0.9274452,0.9280314,0.9286154,0.9291971,0.9297765,0.9303536,0.9309284,0.9315009,0.9320711,0.9326390,0.9332046,0.9337679,0.9343289,0.9348876,0.9354440,0.9359981,0.9365499,0.9370993,0.9376465,0.9381913,0.9387339,0.9392741,0.9398120,0.9403475,0.9408808,0.9414117,0.9419403,0.9424666,0.9429905,0.9435122,0.9440315,0.9445484,0.9450631,0.9455754,0.9460854,0.9465930,0.9470983,0.9476013,0.9481019,0.9486002,0.9490961,0.9495898,0.9500810,0.9505699,0.9510565,0.9515407,0.9520226,0.9525022,0.9529793,0.9534542,0.9539267,0.9543968,0.9548645,0.9553300,0.9557930,0.9562537,0.9567121,0.9571680,0.9576216,0.9580729,0.9585218,0.9589683,0.9594125,0.9598543,0.9602937,0.9607307,0.9611654,0.9615977,0.9620277,0.9624552,0.9628804,0.9633032,0.9637237,0.9641417,0.9645574,0.9649707,0.9653816,0.9657902,0.9661963,0.9666001,0.9670015,0.9674005,0.9677971,0.9681913,0.9685832,0.9689726,0.9693597,0.9697443,0.9701266,0.9705065,0.9708840,0.9712590,0.9716317,0.9720020,0.9723699,0.9727354,0.9730985,0.9734592,0.9738175,0.9741734,0.9745269,0.9748780,0.9752266,0.9755729,0.9759168,0.9762582,0.9765973,0.9769339,0.9772681,0.9775999,0.9779293,0.9782563,0.9785809,0.9789031,0.9792228,0.9795401,0.9798551,0.9801675,0.9804776,0.9807853,0.9810905,0.9813933,0.9816937,0.9819917,0.9822873,0.9825804,0.9828711,0.9831594,0.9834452,0.9837286,0.9840096,0.9842882,0.9845643,0.9848380,0.9851093,0.9853782,0.9856446,0.9859086,0.9861701,0.9864293,0.9866859,0.9869402,0.9871920,0.9874414,0.9876883,0.9879328,0.9881749,0.9884146,0.9886517,0.9888865,0.9891188,0.9893487,0.9895761,0.9898011,0.9900237,0.9902438,0.9904614,0.9906766,0.9908894,0.9910997,0.9913076,0.9915131,0.9917161,0.9919166,0.9921147,0.9923104,0.9925036,0.9926943,0.9928826,0.9930685,0.9932519,0.9934328,0.9936113,0.9937874,0.9939610,0.9941321,0.9943008,0.9944670,0.9946308,0.9947921,0.9949510,0.9951074,0.9952614,0.9954129,0.9955620,0.9957086,0.9958527,0.9959944,0.9961336,0.9962704,0.9964047,0.9965365,0.9966659,0.9967929,0.9969173,0.9970393,0.9971589,0.9972760,0.9973906,0.9975028,0.9976125,0.9977198,0.9978245,0.9979269,0.9980267,0.9981241,0.9982191,0.9983115,0.9984016,0.9984891,0.9985742,0.9986568,0.9987370,0.9988146,0.9988899,0.9989626,0.9990329,0.9991008,0.9991661,0.9992290,0.9992895,0.9993474,0.9994029,0.9994560,0.9995066,0.9995547,0.9996003,0.9996435,0.9996842,0.9997224,0.9997582,0.9997915,0.9998224,0.9998507,0.9998766,0.9999001,0.9999210,0.9999395,0.9999556,0.9999692,0.9999803,0.9999889,0.9999951,0.9999988];
diff --git a/lime/src/node.js b/lime/src/node.js
index cc70a243..1eca40e4 100644
--- a/lime/src/node.js
+++ b/lime/src/node.js
@@ -8,6 +8,7 @@ goog.require('goog.math.Size');
goog.require('goog.math.Vec2');
goog.require('lime');
goog.require('lime.DirtyObject');
+goog.require('lime.math.TrigTable');
goog.require('lime.Renderer.CANVAS');
goog.require('lime.Renderer.DOM');
@@ -26,19 +27,6 @@ lime.Node = function() {
this.parent_ = null;
- /** type {Object.} */
- this.transitionsAdd_ = {};
- this.transitionsActive_ = {};
- this.transitionsActiveSet_ = {};
- /** type {Object.} */
- this.transitionsClear_ = {};
-
- /**
- * Allow translate3d and other css optimizations
- * @type {boolean}
- */
- this.allow3DCSSTransform_ = true;
-
/**
* Node has been added to DOM tree
* @type {boolean}
@@ -257,7 +245,6 @@ lime.Node.prototype.setScale = function(value, opt_y) {
else {
this.scale_ = value;
}
- if (this.transitionsActive_[lime.Transition.SCALE]) return this;
return this.setDirty(lime.Dirty.SCALE);
};
@@ -282,7 +269,7 @@ lime.Node.prototype.setPosition = function(value, opt_y) {
else {
this.position_ = value;
}
- if (this.transitionsActive_[lime.Transition.POSITION]) return this;
+
return this.setDirty(lime.Dirty.POSITION);
};
@@ -360,8 +347,6 @@ lime.Node.prototype.setRotation = function(value) {
this.rotation_ = value;
- if (this.transitionsActive_[lime.Transition.ROTATION]) return this;
-
return this.setDirty(lime.Dirty.POSITION);
};
@@ -476,28 +461,6 @@ lime.Node.prototype.setAutoResize = function(value) {
return this.setDirty(lime.Dirty.ALL);
};
-/**
- * Sets css 3d transforms rule (for DOM renderer).
- * XXX: This hack is required to fix a mobile Safari rendering bug.
- * It should only be used on nodes that are affected by the bug!
- * 3D acceleration in css transforms is enabled by default and applied
- * for iOS and Playbook.
- *
- * @param {boolean} value allow(true) or disable(false).
- * @return {lime.Node} object itself.
- */
-lime.Node.prototype.setAllow3DCSSTransforms = function(value) {
- this.allow3DCSSTransform_ = value;
- return this;
-};
-
-/**
- * Returns css 3d transforms flag
- * @return {boolean}
- */
-lime.Node.prototype.getCSS3DTransformsAllowed = function() {
- return this.allow3DCSSTransform_;
-};
/**
* Convert screen coordinate to node coordinate space
@@ -528,9 +491,9 @@ lime.Node.prototype.parentToLocal = function(coord) {
if (this.rotation_ != 0) {
var c2 = coord.clone(),
- rot = this.rotation_ * Math.PI / 180,
- cos = Math.cos(rot),
- sin = Math.sin(rot);
+ //rot = this.rotation_ * Math.PI / 180,
+ cos = lime.math.TrigTable.getCosine(this.rotation_),
+ sin = lime.math.TrigTable.getSine(this.rotation_);
coord.x = cos * c2.x - sin * c2.y;
coord.y = cos * c2.y + sin * c2.x;
}
@@ -560,9 +523,9 @@ lime.Node.prototype.localToParent = function(coord) {
var newcoord = coord.clone();
if (this.rotation_ != 0) {
- var rot = -this.rotation_ * Math.PI / 180,
- cos = Math.cos(rot),
- sin = Math.sin(rot);
+ //var rot = -this.rotation_ * Math.PI / 180,
+ var cos = lime.math.TrigTable.getCosine(-this.rotation_),
+ sin = lime.math.TrigTable.getSine(-this.rotation_);
newcoord.x = cos * coord.x - sin * coord.y;
newcoord.y = cos * coord.y + sin * coord.x;
}
@@ -615,10 +578,6 @@ lime.Node.prototype.setOpacity = function(value) {
this.setHidden(false);
}
- if (goog.isDef(this.transitionsActive_[lime.Transition.OPACITY])){
- return this;
- }
-
this.setDirty(lime.Dirty.ALPHA);
return this;
};
@@ -714,102 +673,13 @@ lime.Node.prototype.updateLayout = function() {
* @param {number=} opt_pass Pass number.
*/
lime.Node.prototype.update = function(opt_pass) {
- // if (!this.renderer) return;
- var property,
- value;
+
var pass = opt_pass || 0;
- var uid = goog.getUid(this);
if (this.dirty_ & lime.Dirty.LAYOUT) {
this.updateLayout();
}
- var do_draw = this.renderer.getType() == lime.Renderer.DOM || pass;
-
- if (do_draw) {
-
- //clear transitions in the queue
- for (var i in this.transitionsClear_) {
- delete this.transitionsActive_[i];
- delete this.transitionsActiveSet_[i];
- property = lime.Node.getPropertyForTransition(parseInt(i, 10));
- lime.style.clearTransition(this.domElement, property);
- if (this.domElement != this.containerElement) {
- lime.style.clearTransition(this.continerElement, property);
- }
- }
-
- // predraw is a check that elements are correctly drawn before the
- // transition. if not then transition is started in the next frame not now.
- var only_predraw = 0;
- for (i in this.transitionsAdd_) {
- value = this.transitionsAdd_[i];
-
- // 3rd is an "already_activated" flag
- if (!value[3]) {
- value[3] = 1;
-
- if (i == lime.Transition.POSITION &&
- this.positionDrawn_ != this.position_) {
- this.setDirty(lime.Dirty.POSITION, 0, true);
- only_predraw = 1;
- }
-
- if (i == lime.Transition.SCALE &&
- this.scaleDrawn_ != this.scale_) {
- this.setDirty(lime.Dirty.SCALE, 0, true);
- only_predraw = 1;
- }
-
- if (i == lime.Transition.OPACITY &&
- this.opacityDrawn_ != this.opacity_) {
- this.setDirty(lime.Dirty.ALPHA, 0, true);
- only_predraw = 1;
- }
- if (i == lime.Transition.ROTATION &&
- this.rotationDrawn_ != this.rotation_) {
- this.setDirty(lime.Dirty.ROTATION, 0, true);
- only_predraw = 1;
- }
-
- }
- }
-
- // activate the transitions
- if(!only_predraw)
- for (i in this.transitionsAdd_) {
- value = this.transitionsAdd_[i];
- property = lime.Node.getPropertyForTransition(parseInt(i, 10));
-
- if(this.renderer.getType()==lime.Renderer.DOM || property!='opacity'){
-
- this.transitionsActive_[i] = value[0];
- lime.style.setTransition(this.domElement,
- property, value[1], value[2]);
-
- if (this.domElement != this.containerElement &&
- property == lime.style.transformProperty) {
-
- lime.style.setTransition(this.containerElement,
- property, value[1], value[2]);
-
- }
- }
- delete this.transitionsAdd_[i];
- }
-
- // cache last drawn values to for predraw check
- this.positionDrawn_ = this.position_;
- this.scaleDrawn_ = this.scale_;
- this.opacityDrawn_ = this.opacity_;
- this.rotationDrawn_ = this.rotation_;
-
-
- this.transitionsClear_ = {};
-
- }
-
-
if (pass) {
this.renderer.drawCanvas.call(this);
}
@@ -828,14 +698,6 @@ lime.Node.prototype.update = function(opt_pass) {
}
- // set flags that transitions have been draw.
- if(do_draw)
- for (i in this.transitionsActive_) {
- if (this.transitionsActive_[i]) {
- this.transitionsActiveSet_[i] = true;
- }
- }
-
if(this.dependencies_){
for(var i=0;i