parseInt的坑和Matrix矩陣

1.parseInt的坑

parseInt是把字符串轉(zhuǎn)化為整數(shù)提澎,有時(shí)候我們直接這樣使用。

parseInt("12.23");
parseInt("0.00008");
parseInt(0.0000008);

但是坦报,當(dāng)很小的數(shù)時(shí)候郎哭,比如parseInt(0.0000008);會(huì)得到8,這肯定不是我們要的結(jié)果躏结,所以需要對(duì)數(shù)優(yōu)先判斷下是否小于1却盘。

function myparseInt(x){
            var k=parseFloat(x);
            if(k<1){
                return 0;
            }
            return parseInt(x);
        }

2.Matrix矩陣

function Matrix(a, b, c, d, x, y) {
            this.a = (a != null) ? a : 1;
            this.b = b || 0;
            this.c = c || 0;
            this.d = (d != null) ? d : 1;
            this.x = x || 0;
            this.y = y || 0;
        }

        Matrix.temp = new Matrix();

        Matrix.prototype.toString = function() {
            return "matrix(" + this.a + "," + this.b + "," + this.c + "," + this.d + "," + this.x + "," + this.y + ")";
        };

        Matrix.prototype.equals = function(m) {
            if(this.a === m.a && this.b === m.b && this.c === m.c && this.d === m.d && this.x === m.x && this.y === m.y) {
                return true;
            }
            return false;
        };

        Matrix.prototype.identity = function() {
            this.a = 1;
            this.b = 0;
            this.c = 0;
            this.d = 1;
            this.x = 0;
            this.y = 0;
        };

        Matrix.prototype.clone = function() {
            return new Matrix(
                this.a,
                this.b,
                this.c,
                this.d,
                this.x,
                this.y
            );
        };

        Matrix.prototype.copyFrom = function(m) {
            this.a = m.a;
            this.b = m.b;
            this.c = m.c;
            this.d = m.d;
            this.x = m.x;
            this.y = m.y;
        };

        Matrix.prototype.rotate = function(angle) {
            var u = Math.cos(angle);
            var v = Math.sin(angle);

            var temp = this.a;
            this.a = u * this.a - v * this.b;
            this.b = v * temp + u * this.b;
            temp = this.c;
            this.c = u * this.c - v * this.d;
            this.d = v * temp + u * this.d;
            temp = this.x;
            this.x = u * this.x - v * this.y;
            this.y = v * temp + u * this.y;
        };

        Matrix.prototype.translate = function(x, y) {
            this.x += x;
            this.y += y;
        };

        Matrix.prototype.concat = function(m) {
            var a = this.a * m.a;
            var b = 0;
            var c = 0;
            var d = this.d * m.d;
            var x = this.x * m.a + m.x;
            var y = this.y * m.d + m.y;

            if(this.b !== 0 || this.c !== 0 || m.b !== 0 || m.c !== 0) {
                a += this.b * m.c;
                d += this.c * m.b;
                b += this.a * m.b + this.b * m.d;
                c += this.c * m.a + this.d * m.c;
                x += this.y * m.c;
                y += this.x * m.b;
            }

            this.a = a;
            this.b = b;
            this.c = c;
            this.d = d;
            this.x = x;
            this.y = y;
        };

        Matrix.prototype.invert = function() {
            if(this.b === 0 && this.c === 0 && this.a !== 0 && this.d !== 0) {

                this.a = 1 / this.a;
                this.d = 1 / this.d;
                this.b = 0;
                this.c = 0;
                this.x = -this.a * this.x;
                this.y = -this.d * this.y;

            } else {

                var det = this.a * this.d - this.b * this.c;
                if(det === 0) {
                    this.identity();
                    return;
                }
                det = 1 / det;

                var temp = this.a;
                this.a = this.d * det;
                this.b = -this.b * det;
                this.c = -this.c * det;
                this.d = temp * det;

                temp = this.y;
                this.y = -(this.b * this.x + this.d * this.y);
                this.x = -(this.a * this.x + this.c * temp);
            }
        };

        Matrix.prototype.getRotationX = function() {
            return Math.atan2(this.b, this.a);
        };

        Matrix.prototype.getRotationY = function() {
            return Math.atan2(this.c, this.d);
        };

        Matrix.prototype.getTransformedX = function(x, y) {
            return this.x + this.a * x + this.c * y;
        };

        Matrix.prototype.getTransformedY = function(x, y) {
            return this.y + this.d * y + this.b * x;
        };

        Matrix.prototype.scale = function(x, y) {
            this.a *= x;
            this.b *= y;
            this.c *= x;
            this.d *= y;
            this.x *= x;
            this.y *= y;
        };

        Matrix.prototype.resolveFloat = function() {
            var mat = this.clone();
            var r = {};
            r.x = mat.x;
            r.y = mat.y;
            //      mat.x=0;
            //      mat.y=0;
            var hd = mat.getRotationX();
            r.radian = hd;
            var du = hd * 180 / Math.PI;
            if(du < 0) {
                du = du + 360;
            }
            r.rotation = du;
            mat.rotate(-hd);
            r.scaleX = mat.a;
            r.scaleY = mat.d;
            return r;
        };

Matrix矩陣表示:
| a | c | x|
| b | d | y|
| 0 | 0 | 1 |
單位矩陣時(shí) a b c d 為 1,0媳拴,0黄橘,1

矩陣滿足

  1. 乘法結(jié)合律: (AB)C=A(BC)
  2. 乘法左分配律:(A+B)C=AC+BC
  3. 乘法右分配律:C(A+B)=CA+CB
  4. 對(duì)數(shù)乘的結(jié)合性k(AB)=(kA)B=A(kB**)
  5. 轉(zhuǎn)置 (AB)T=BTAT

在html顯示對(duì)象使用矩陣相乘
假如 AB=ab矩陣相等,求其中任意一個(gè)矩陣.

ABBT=abBT //同時(shí)乘一個(gè)BT
A=abBT屈溉;

ATAB=ATab; ///同時(shí)乘一個(gè)AT
B=ATab;
同理 a b .所以如下

A=abBT塞关;

B=ATab;

a=ABbT

b=aTAB子巾;

其他同理帆赢。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末小压,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子椰于,更是在濱河造成了極大的恐慌怠益,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件廉羔,死亡現(xiàn)場離奇詭異溉痢,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)憋他,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門孩饼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人竹挡,你說我怎么就攤上這事镀娶。” “怎么了揪罕?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵梯码,是天一觀的道長。 經(jīng)常有香客問我好啰,道長轩娶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任框往,我火速辦了婚禮鳄抒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘椰弊。我一直安慰自己许溅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布秉版。 她就那樣靜靜地躺著贤重,像睡著了一般。 火紅的嫁衣襯著肌膚如雪清焕。 梳的紋絲不亂的頭發(fā)上并蝗,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音秸妥,去河邊找鬼借卧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛筛峭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播陪每,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼影晓,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼镰吵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起挂签,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤疤祭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后饵婆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體勺馆,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年侨核,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了草穆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡搓译,死狀恐怖悲柱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情些己,我是刑警寧澤豌鸡,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站段标,受9級(jí)特大地震影響涯冠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜逼庞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一蛇更、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧往堡,春花似錦械荷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至穆咐,卻和暖如春颤诀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背对湃。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國打工崖叫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拍柒。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓心傀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親拆讯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子脂男,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 專業(yè)考題類型管理運(yùn)行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項(xiàng)A選項(xiàng)B選項(xiàng)C選項(xiàng)D選項(xiàng)E選項(xiàng)F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 8,985評(píng)論 0 13
  • 【轉(zhuǎn)載】線性代數(shù)基礎(chǔ)知識(shí) 原文地址:http://blog.csdn.net/longxinchen_ml/art...
    劉卡卡愛吃烤土豆閱讀 1,225評(píng)論 0 0
  • 基礎(chǔ)篇NumPy的主要對(duì)象是同種元素的多維數(shù)組养叛。這是一個(gè)所有的元素都是一種類型、通過一個(gè)正整數(shù)元組索引的元素表格(...
    oyan99閱讀 5,124評(píng)論 0 18
  • 本文旨在介紹基于automatic installer的PALM model system (后面簡稱PALM) ...
    小鹿HIT閱讀 633評(píng)論 0 2
  • 從今天起 卸掉滿是廣告 與花邊新聞的手機(jī)瀏覽器 要用就下載一個(gè) 夸克 吧 界面干干凈凈 界面沒有廣告和新聞干擾 不...
    劉軍_00ee閱讀 186評(píng)論 0 0