Dies ist das Repository meines kleinen Portfolios.
Im Hintergrund läuft eine Planetensimulation, geschrieben in JavaScript und Three.js.
Die zu sehenden Texturen stammen von:
https://www.solarsystemscope.com/textures/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.2 KiB
66 lines
1.2 KiB
import { |
|
Object3D, |
|
Quaternion, |
|
Vector3 |
|
} from 'three'; |
|
|
|
const _translationObject = new Vector3(); |
|
const _quaternionObject = new Quaternion(); |
|
const _scaleObject = new Vector3(); |
|
|
|
const _translationWorld = new Vector3(); |
|
const _quaternionWorld = new Quaternion(); |
|
const _scaleWorld = new Vector3(); |
|
|
|
class Gyroscope extends Object3D { |
|
|
|
constructor() { |
|
|
|
super(); |
|
|
|
} |
|
|
|
updateMatrixWorld( force ) { |
|
|
|
this.matrixAutoUpdate && this.updateMatrix(); |
|
|
|
// update matrixWorld |
|
|
|
if ( this.matrixWorldNeedsUpdate || force ) { |
|
|
|
if ( this.parent !== null ) { |
|
|
|
this.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix ); |
|
|
|
this.matrixWorld.decompose( _translationWorld, _quaternionWorld, _scaleWorld ); |
|
this.matrix.decompose( _translationObject, _quaternionObject, _scaleObject ); |
|
|
|
this.matrixWorld.compose( _translationWorld, _quaternionObject, _scaleWorld ); |
|
|
|
|
|
} else { |
|
|
|
this.matrixWorld.copy( this.matrix ); |
|
|
|
} |
|
|
|
|
|
this.matrixWorldNeedsUpdate = false; |
|
|
|
force = true; |
|
|
|
} |
|
|
|
// update children |
|
|
|
for ( let i = 0, l = this.children.length; i < l; i ++ ) { |
|
|
|
this.children[ i ].updateMatrixWorld( force ); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
export { Gyroscope };
|
|
|