three 原始碼解析之 Euler

2021-08-15 09:53:20 字數 2591 閱讀 7350

// 尤拉角

functioneuler

( x,y,

z,order )

euler

.rotationorders

= ['xyz'

,'yzx'

,'zxy'

,'xzy'

,'yxz'

,'zyx'];

euler

.defaultorder

='xyz'

;object.

defineproperties

(euler

.prototype,,

set:function( value ) },

y: ,set

:function( value ) },

z: ,set

:function( value ) },

order: ,

set:function( value )

}} );

object.

assign

(euler

.prototype,,

//   重新例項化物件 ,  這裡巧妙的利用了 this.constructor

clone

:function()

,//   複製另外乙個 euler 物件的值

copy

:function( euler )

,//  m : 是乙個4 * 4 的矩陣,,前面的 3*3矩陣必須是乙個旋轉矩陣,通過旋轉矩陣來控制旋轉。具體演算法可以參考                             

setfromrotationmatrix

:function( m

,order

,update )else

}else if( order ===

'yxz'

)else

}else if( order ===

'zxy'

)else

}else if( order ===

'zyx'

)else

}else if( order ===

'yzx'

)else

}else if( order ===

'xzy'

)else

}else

this.

_order

= order

;if( update !==false)this.

onchangecallback();

return this;},

setfromquaternion

:function()

;}()

,setfromvector3

:function( v

,order )

,reorder

:function()

;}()

,//  判斷兩個尤拉角是否完全相同

equals

:function( euler )

,//   設定尤拉角通過陣列賦值,,陣列可以省略order

fromarray

:function( array )

,//   轉化為陣列,,可以傳入陣列,並且返回該陣列,也可以不傳,,offset,,指從哪個位置開始賦值

toarray

:function( array

,offset )

,// 可以傳入乙個vector3,並且返回該verctor3,否則返回乙個新的vector3,傳入的是位址

tovector3

:function( optionalresult )else},

//  通過onchange 指定onchangecallback的函式結果

onchange

:function( callback )

,onchangecallback

:function() {}

} );

Spring原始碼解析之 Aop原始碼解析(2)

spring aop 更多的是oop開發模式的乙個補充,幫助oop以更好的方式來解決對於需要解決業務功能模組之上統一管理 的功能 以一副圖來做為aop功能的說明更直觀些。對於類似系統的安全檢查,系統日誌,事務管理等相關功能,物件導向的開發方法並沒有更好的解決方法 aop引入了一些概念。更多的是spr...

原始碼解析 JDK原始碼之LinkedHashMap

linkedhashmap原始碼,基於 jdk1.6.43 他繼承了hashmap,並且實現了插入和訪問的有序功能 public class linkedhashmapextends hashmapimplements map 其也有乙個entry內部類,繼承了 hashmap 的entry 內部類...

hive原始碼解析之語法解析

hive語法解析器是根據 上次分享的 詞法分析 生成的語法樹為基礎,進行語法解析。根據語法token的情況實現了五個具體的語法解析器。在你生成語法器的時候,semanticanalyze ctory分別針對不同的情況生成對應的某個語法器,如下 semanticanalyze ctory類 現在有五個...