Przeglądaj źródła

Typos (#30119)

Co-authored-by: Samuel Rigaud <srigaud@duodisplay.com>
Samuel Rigaud 1 rok temu
rodzic
commit
53711ab0c3
81 zmienionych plików z 186 dodań i 186 usunięć
  1. 1 1
      docs/api/en/animation/AnimationObjectGroup.html
  2. 2 2
      docs/api/fr/constants/Textures.html
  3. 14 14
      docs/api/it/textures/Texture.html
  4. 1 1
      docs/examples/en/controls/ArcballControls.html
  5. 1 1
      editor/js/Sidebar.Project.Materials.js
  6. 4 4
      examples/jsm/controls/ArcballControls.js
  7. 1 1
      examples/jsm/effects/OutlineEffect.js
  8. 2 2
      examples/jsm/exporters/PLYExporter.js
  9. 2 2
      examples/jsm/lights/LightProbeGenerator.js
  10. 1 1
      examples/jsm/loaders/BVHLoader.js
  11. 5 5
      examples/jsm/loaders/ColladaLoader.js
  12. 1 1
      examples/jsm/loaders/GCodeLoader.js
  13. 1 1
      examples/jsm/loaders/LDrawLoader.js
  14. 1 1
      examples/jsm/loaders/LottieLoader.js
  15. 1 1
      examples/jsm/loaders/NRRDLoader.js
  16. 1 1
      examples/jsm/loaders/PVRLoader.js
  17. 2 2
      examples/jsm/loaders/SVGLoader.js
  18. 1 1
      examples/jsm/loaders/TDSLoader.js
  19. 4 4
      examples/jsm/loaders/lwo/IFFParser.js
  20. 1 1
      examples/jsm/math/ConvexHull.js
  21. 1 1
      examples/jsm/misc/Volume.js
  22. 2 2
      examples/jsm/modifiers/SimplifyModifier.js
  23. 2 2
      examples/jsm/objects/Sky.js
  24. 2 2
      examples/jsm/objects/SkyMesh.js
  25. 1 1
      examples/jsm/objects/Water2.js
  26. 2 2
      examples/jsm/postprocessing/BloomPass.js
  27. 1 1
      examples/jsm/postprocessing/SSAOPass.js
  28. 1 1
      examples/jsm/postprocessing/SSRPass.js
  29. 1 1
      examples/jsm/shaders/BokehShader2.js
  30. 3 3
      examples/jsm/shaders/GodRaysShader.js
  31. 1 1
      examples/jsm/shaders/SobelOperatorShader.js
  32. 1 1
      examples/jsm/tsl/display/SobelOperatorNode.js
  33. 1 1
      examples/webgl_buffergeometry_instancing_billboards.html
  34. 1 1
      examples/webgl_geometry_extrude_splines.html
  35. 1 1
      examples/webgl_materials_modified.html
  36. 1 1
      examples/webgl_materials_texture_rotation.html
  37. 1 1
      examples/webgl_postprocessing_godrays.html
  38. 12 12
      examples/webgpu_compute_birds.html
  39. 2 2
      examples/webgpu_parallax_uv.html
  40. 19 19
      examples/webgpu_tsl_compute_attractors_particles.html
  41. 1 1
      examples/webgpu_tsl_editor.html
  42. 1 1
      examples/webgpu_tsl_interoperability.html
  43. 1 1
      examples/webxr_vr_layers.html
  44. 1 1
      examples/webxr_xr_controls_transform.html
  45. 1 1
      examples/webxr_xr_haptics.html
  46. 1 1
      manual/resources/threejs-textures.js
  47. 1 1
      manual/resources/tools/geo-picking/shapefile.js
  48. 3 3
      playground/Nodes.json
  49. 1 1
      src/extras/Earcut.js
  50. 1 1
      src/nodes/accessors/BufferNode.js
  51. 1 1
      src/nodes/accessors/Camera.js
  52. 2 2
      src/nodes/accessors/MaterialNode.js
  53. 5 5
      src/nodes/accessors/SkinningNode.js
  54. 2 2
      src/nodes/accessors/StorageTextureNode.js
  55. 1 1
      src/nodes/accessors/TextureNode.js
  56. 1 1
      src/nodes/lighting/BasicEnvironmentNode.js
  57. 1 1
      src/nodes/lighting/EnvironmentNode.js
  58. 1 1
      src/nodes/lighting/PointShadowNode.js
  59. 1 1
      src/nodes/lighting/ShadowNode.js
  60. 2 2
      src/nodes/lighting/SpotLightNode.js
  61. 1 1
      src/nodes/math/OperatorNode.js
  62. 2 2
      src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js
  63. 7 7
      src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js
  64. 1 1
      src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js
  65. 1 1
      test/e2e/deterministic-injection.js
  66. 3 3
      test/e2e/puppeteer.js
  67. 2 2
      test/unit/README.md
  68. 1 1
      test/unit/src/animation/AnimationAction.tests.js
  69. 1 1
      test/unit/src/animation/AnimationClip.tests.js
  70. 1 1
      test/unit/src/animation/AnimationObjectGroup.tests.js
  71. 1 1
      test/unit/src/core/InterleavedBufferAttribute.tests.js
  72. 2 2
      test/unit/src/core/Object3D.tests.js
  73. 1 1
      test/unit/src/extras/DataUtils.tests.js
  74. 4 4
      test/unit/src/loaders/ImageBitmapLoader.tests.js
  75. 1 1
      test/unit/src/math/Box3.tests.js
  76. 7 7
      test/unit/src/math/MathUtils.tests.js
  77. 5 5
      test/unit/src/math/Ray.tests.js
  78. 6 6
      test/unit/src/objects/Mesh.tests.js
  79. 4 4
      test/unit/src/renderers/webgl/WebGLExtensions.tests.js
  80. 2 2
      test/unit/src/utils.tests.js
  81. 1 1
      test/unit/utils/qunit-utils.js

+ 1 - 1
docs/api/en/animation/AnimationObjectGroup.html

@@ -53,7 +53,7 @@
 
 		<h3>[property:Object stats]</h3>
 		<p>
-			An object that contains some informations of this `AnimationObjectGroup`
+			An object that contains information of this `AnimationObjectGroup`
 			(total number, number in use, number of bindings per object)
 		</p>
 

+ 2 - 2
docs/api/fr/constants/Textures.html

@@ -48,12 +48,12 @@
 		Ces constantes définissent les propriétés des textures [page:Texture.wrapS wrapS] et [page:Texture.wrapT wrapT],
 		qui définissent l'emballage de texture horizontal et vertical.<br /><br />
 
-		Avec [page:constant RepeatWrapping] la texure se répétera simplement à l'infini.<br /><br />
+		Avec [page:constant RepeatWrapping] la texture se répétera simplement à l'infini.<br /><br />
 
 		[page:constant ClampToEdgeWrapping] est la valeur par défaut.
 		Le dernier pixel de la texture s'étend jusqu'au bord du maillage.<br /><br />
 
-		Avec [page:constant MirroredRepeatWrapping] la texure se répétera à l'infini avec un effet miroir à chaque répétition.
+		Avec [page:constant MirroredRepeatWrapping] la texture se répétera à l'infini avec un effet miroir à chaque répétition.
 		</p>
 
 		<h2>Filtres de grossissement</h2>

+ 14 - 14
docs/api/it/textures/Texture.html

@@ -14,7 +14,7 @@
 		</p>
 
 		<p>
-			Nota: Dopo l'utilizzo iniziale di una texture, le sue dimensioni, formato, e il tipo non possono essere cambiati. 
+			Nota: Dopo l'utilizzo iniziale di una texture, le sue dimensioni, formato, e il tipo non possono essere cambiati.
 			Invece, chiama [page:.dispose]() sulla texture e creane una nuova.
 		</p>
 
@@ -61,8 +61,8 @@
 			Questo può essere qualsiasi tipo di immagine (e.g., PNG, JPG, GIF, DDS) o video (e.g., MP4, OGG/OGV) supportato da three.js.<br /><br />
 
 			Per utilizzare il video come texture è necessario disporre di un elemento video HTML5
-			in riproduzione come sorgente per l'immagine della texture e aggiornare 
-			continuamente questa texture finchè il video è in riproduzione - 
+			in riproduzione come sorgente per l'immagine della texture e aggiornare
+			continuamente questa texture finchè il video è in riproduzione -
 			la classe [page:VideoTexture VideoTexture] gestisce questa operazione automaticamente.
 		</p>
 
@@ -88,7 +88,7 @@
 		<p>
 			Questo definisce come la texture è wrappata orizzontalmente e corrisponde a *U* nel mapping UV.<br />
 			L'impostazione predefinita è [page:Textures THREE.ClampToEdgeWrapping], dove il bordo è fissato ai texel del bordo esterno.
-			Le altre due scelte sono [page:Textures THREE.RepeatWrapping] e [page:Textures THREE.MirroredRepeatWrapping]. 
+			Le altre due scelte sono [page:Textures THREE.RepeatWrapping] e [page:Textures THREE.MirroredRepeatWrapping].
 			Vedi la pagina [page:Textures texture constants] per i dettagli.
 		</p>
 
@@ -122,7 +122,7 @@
 		<h3>[property:number anisotropy]</h3>
 		<p>
 			Il numero di campioni prelevati lungo l'asse attravero il pixel che ha la densità di texel più alta.
-		Per impostazione predefinita, questo valore è 1. Un valore più alto fornisce un risultato meno sfuocato rispetto ad una mipmap di base, 
+		Per impostazione predefinita, questo valore è 1. Un valore più alto fornisce un risultato meno sfuocato rispetto ad una mipmap di base,
 		a costo di utilizzare più campioni di texture. Usa [page:WebGLRenderer.capabilities renderer.capabilities.getMaxAnisotropy]()
 		per trovare il valore di anisotropia massimo valido per la GPU; questo valore è solitamente una potenza di 2.
 		</p>
@@ -160,7 +160,7 @@
 
 		<h3>[property:Vector2 repeat]</h3>
 		<p>
-			Quante volte la texture è ripetuta sulla superficie, in ogni direzione U e V. Se la proprietà ripeat è 
+			Quante volte la texture è ripetuta sulla superficie, in ogni direzione U e V. Se la proprietà ripeat è
 			impostata su un valore maggiore di 1 in entrambe le direzioni, anche il parametro Wrap corrispondente
 			deve essere impostato su [page:Textures THREE.RepeatWrapping] o [page:Textures THREE.MirroredRepeatWrapping] per ottenere l'effetto
 			di piastrellatura desiderato.
@@ -174,14 +174,14 @@
 
 		<h3>[property:Vector2 center]</h3>
 		<p>
-			Il punto attorno al quale avviene la rotazione. Un valore (0.5, 0.5) che corrisponde al centro della texture. Il 
+			Il punto attorno al quale avviene la rotazione. Un valore (0.5, 0.5) che corrisponde al centro della texture. Il
 			valore predefinito è (0, 0), in basso a sinistra.
 		</p>
 
 		<h3>[property:Boolean matrixAutoUpdate]</h3>
 		<p>
 			Indica se aggiornare la [page:Texture.matrix .matrix] uv-transform della texture dalle proprietà della texture
-			[page:Texture.offset .offset], [page:Texture.repeat .repeat], [page:Texture.rotation .rotation], e [page:Texture.center .center]. 
+			[page:Texture.offset .offset], [page:Texture.repeat .repeat], [page:Texture.rotation .rotation], e [page:Texture.center .center].
 			Il valore predefinito è `true`.
 			Impostalo a `false` se stai specificando la matrice uv-transform direttamente.
 		</p>
@@ -196,13 +196,13 @@
 
 		<h3>[property:Boolean generateMipmaps]</h3>
 		<p>
-			Indica se generare mipmap (se possibile) per una texure. Il valore predefinito è `true`.
+			Indica se generare mipmap (se possibile) per una texture. Il valore predefinito è `true`.
 			Impostalo a false se stai creando il mipmap manualmente.
 		</p>
 
 		<h3>[property:Boolean premultiplyAlpha]</h3>
 		<p>
-		Se impostato a `true`, il canale alfa, se presente, viene moltiplicato nei canali del colore 
+		Se impostato a `true`, il canale alfa, se presente, viene moltiplicato nei canali del colore
 		quando la texture viene caricata sulla GPU. Il valore predefinito è `false`.<br /><br />
 
 		Si noti che questa proprietà non ha effetto per [link:https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap ImageBitmap].
@@ -220,7 +220,7 @@
 		<h3>[property:number unpackAlignment]</h3>
 		<p>
 			Il valore predefinito è 4. Specifica i requisiti di allineamento per l'inizio di ogni riga di pixel in memoria.
-			I valori consentiti sono 1 (allineamento di byte), 2 (righe allineate a byte pari), 4 (allineamento di parole) 
+			I valori consentiti sono 1 (allineamento di byte), 2 (righe allineate a byte pari), 4 (allineamento di parole)
 			e 8 (le righe iniziano su limiti di doppia parola).
 			Vedi [link:http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml glPixelStorei] per maggiori informazioni.
 		</p>
@@ -250,8 +250,8 @@
 
 		<h3>[property:Object userData]</h3>
 		<p>
-			Un oggetto che può essere utilizzato per memorizzare dati personalizzati della texture. 
-			Non deve contenere riferimenti a funzioni poiché queste non verranno clonate. 
+			Un oggetto che può essere utilizzato per memorizzare dati personalizzati della texture.
+			Non deve contenere riferimenti a funzioni poiché queste non verranno clonate.
 		</p>
 
 		<h3>[property:Source source]</h3>
@@ -286,7 +286,7 @@
 
 		<h3>[method:undefined dispose]()</h3>
 		<p>
-			Libera le risorse relative alla GPU allocate da questa istanza. 
+			Libera le risorse relative alla GPU allocate da questa istanza.
 			Chiama questo metodo ogni volta che questa istanza non viene più utilizzata dall'applicazione.
 		</p>
 

+ 1 - 1
docs/examples/en/controls/ArcballControls.html

@@ -248,7 +248,7 @@
 
 		<h3>[method:undefined setTbRadius] ( [param:Float value] )</h3>
 		<p>
-			Update the `radiusFactor` value, redraw the gizmo and send a `changeEvent` to visualise the changes.
+			Update the `radiusFactor` value, redraw the gizmo and send a `changeEvent` to visualize the changes.
 		</p>
 
 		<h3>[method:Boolean setMouseAction] ( [param:String operation], mouse, key )</h3>

+ 1 - 1
editor/js/Sidebar.Project.Materials.js

@@ -31,7 +31,7 @@ function SidebarProjectMaterials( editor ) {
 
 			const oldMaterial = selectedObject.material;
 
-			// only assing materials to objects with a material property (e.g. avoid assigning material to THREE.Group)
+			// only passing materials to objects with a material property (e.g. avoid assigning material to THREE.Group)
 
 			if ( oldMaterial !== undefined ) {
 

+ 4 - 4
examples/jsm/controls/ArcballControls.js

@@ -1183,7 +1183,7 @@ class ArcballControls extends Controls {
 	 * Remove a mouse action by specifying its mouse/key combination
 	 * @param {*} mouse A mouse button (0, 1, 2) or 'WHEEL' for wheel notches
 	 * @param {*} key The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed
-	 * @returns {Boolean} True if the operation has been succesfully removed, false otherwise
+	 * @returns {Boolean} True if the operation has been successfully removed, false otherwise
 	 */
 	unsetMouseAction( mouse, key = null ) {
 
@@ -1452,7 +1452,7 @@ class ArcballControls extends Controls {
 	}
 
 	/**
-	 * Calculate the trackball radius so that gizmo's diamater will be 2/3 of the minimum side of the camera frustum
+	 * Calculate the trackball radius so that gizmo's diameter will be 2/3 of the minimum side of the camera frustum
 	 * @param {Camera} camera
 	 * @returns {Number} The trackball radius
 	 */
@@ -2225,7 +2225,7 @@ class ArcballControls extends Controls {
 
 	/**
 	 * Set camera fov
-	 * @param {Number} value fov to be setted
+	 * @param {Number} value fov to be set
 	 */
 	setFov( value ) {
 
@@ -2585,7 +2585,7 @@ class ArcballControls extends Controls {
 	/**
 	 * Update the trackball FSA
 	 * @param {STATE} newState New state of the FSA
-	 * @param {Boolean} updateMatrices If matriices state should be updated
+	 * @param {Boolean} updateMatrices If matrices state should be updated
 	 */
 	updateTbState( newState, updateMatrices ) {
 

+ 1 - 1
examples/jsm/effects/OutlineEffect.js

@@ -367,7 +367,7 @@ class OutlineEffect {
 
 			let keys;
 
-			// clear originialMaterials
+			// clear originalMaterials
 			keys = Object.keys( originalMaterials );
 
 			for ( let i = 0, il = keys.length; i < il; i ++ ) {

+ 2 - 2
examples/jsm/exporters/PLYExporter.js

@@ -124,7 +124,7 @@ class PLYExporter {
 		if ( includeIndices && faceCount !== Math.floor( faceCount ) ) {
 
 			// point cloud meshes will not have an index array and may not have a
-			// number of vertices that is divisble by 3 (and therefore representable
+			// number of vertices that is divisible by 3 (and therefore representable
 			// as triangles)
 			console.error(
 
@@ -206,7 +206,7 @@ class PLYExporter {
 			// 2 uv values at 4 bytes
 			const vertexListLength = vertexCount * ( 4 * 3 + ( includeNormals ? 4 * 3 : 0 ) + ( includeColors ? 3 : 0 ) + ( includeUVs ? 4 * 2 : 0 ) );
 
-			// 1 byte shape desciptor
+			// 1 byte shape descriptor
 			// 3 vertex indices at ${indexByteCount} bytes
 			const faceListLength = includeIndices ? faceCount * ( indexByteCount * 3 + 1 ) : 0;
 			const output = new DataView( new ArrayBuffer( headerBin.length + vertexListLength + faceListLength ) );

+ 2 - 2
examples/jsm/lights/LightProbeGenerator.js

@@ -99,7 +99,7 @@ class LightProbeGenerator {
 				// evaluate SH basis functions in direction dir
 				SphericalHarmonics3.getBasisAt( dir, shBasis );
 
-				// accummuulate
+				// accumulate
 				for ( let j = 0; j < 9; j ++ ) {
 
 					shCoefficients[ j ].x += shBasis[ j ] * color.r * weight;
@@ -242,7 +242,7 @@ class LightProbeGenerator {
 				// evaluate SH basis functions in direction dir
 				SphericalHarmonics3.getBasisAt( dir, shBasis );
 
-				// accummuulate
+				// accumulate
 				for ( let j = 0; j < 9; j ++ ) {
 
 					shCoefficients[ j ].x += shBasis[ j ] * color.r * weight;

+ 1 - 1
examples/jsm/loaders/BVHLoader.js

@@ -204,7 +204,7 @@ class BVHLoader extends Loader {
 		}
 
 		/*
-		 Recursively parses the HIERACHY section of the BVH file
+		 Recursively parses the HIERARCHY section of the BVH file
 
 		 - lines: all lines of the file. lines are consumed as we go along.
 		 - firstline: line containing the node type and name e.g. 'JOINT hip'

+ 5 - 5
examples/jsm/loaders/ColladaLoader.js

@@ -299,7 +299,7 @@ class ColladaLoader extends Loader {
 
 			if ( hasChildren === false ) {
 
-				// since 'id' attributes can be optional, it's necessary to generate a UUID for unqiue assignment
+				// since 'id' attributes can be optional, it's necessary to generate a UUID for unique assignment
 
 				library.animations[ xml.getAttribute( 'id' ) || MathUtils.generateUUID() ] = data;
 
@@ -977,7 +977,7 @@ class ColladaLoader extends Loader {
 				}
 
 				// we sort the joints in descending order based on the weights.
-				// this ensures, we only procced the most important joints of the vertex
+				// this ensures, we only proceed the most important joints of the vertex
 
 				vertexSkinData.sort( descending );
 
@@ -1593,7 +1593,7 @@ class ColladaLoader extends Loader {
 
 				}
 
-				// create texture if image is avaiable
+				// create texture if image is available
 
 				if ( image !== null ) {
 
@@ -2392,7 +2392,7 @@ class ColladaLoader extends Loader {
 						break;
 
 					default:
-						console.warn( 'THREE.ColladaLoader: Unknow primitive type:', primitive.type );
+						console.warn( 'THREE.ColladaLoader: Unknown primitive type:', primitive.type );
 
 				}
 
@@ -3434,7 +3434,7 @@ class ColladaLoader extends Loader {
 			let i, j, data;
 
 			// a skeleton can have multiple root bones. collada expresses this
-			// situtation with multiple "skeleton" tags per controller instance
+			// situation with multiple "skeleton" tags per controller instance
 
 			for ( i = 0; i < skeletons.length; i ++ ) {
 

+ 1 - 1
examples/jsm/loaders/GCodeLoader.js

@@ -123,7 +123,7 @@ class GCodeLoader extends Loader {
 			const tokens = lines[ i ].split( ' ' );
 			const cmd = tokens[ 0 ].toUpperCase();
 
-			//Argumments
+			//Arguments
 			const args = {};
 			tokens.splice( 1 ).forEach( function ( token ) {
 

+ 1 - 1
examples/jsm/loaders/LDrawLoader.js

@@ -2266,7 +2266,7 @@ class LDrawLoader extends Loader {
 
 			if ( this.ConditionalLineMaterial === null ) {
 
-				throw new Error( 'THREE.LDrawLoader: ConditionalLineMaterial type must be specificed via .setConditionalLineMaterial().' );
+				throw new Error( 'THREE.LDrawLoader: ConditionalLineMaterial type must be specified via .setConditionalLineMaterial().' );
 
 			}
 

+ 1 - 1
examples/jsm/loaders/LottieLoader.js

@@ -33,7 +33,7 @@ class LottieLoader extends Loader {
 
 			const data = JSON.parse( text );
 
-			// lottie uses container.offetWidth and offsetHeight
+			// lottie uses container.offsetWidth and offsetHeight
 			// to define width/height
 
 			const container = document.createElement( 'div' );

+ 1 - 1
examples/jsm/loaders/NRRDLoader.js

@@ -232,7 +232,7 @@ class NRRDLoader extends Loader {
 
 		}
 
-		//parse the data when registred as one of this type : 'text', 'ascii', 'txt'
+		//parse the data when registered as one of this type : 'text', 'ascii', 'txt'
 		function parseDataAsText( data, start, end ) {
 
 			let number = '';

+ 1 - 1
examples/jsm/loaders/PVRLoader.js

@@ -160,7 +160,7 @@ function _parseV2( pvrDatas ) {
 	pvrDatas.numMipmaps = numMipmaps + 1;
 
 	// guess cubemap type seems tricky in v2
-	// it juste a pvr containing 6 surface (no explicit cubemap type)
+	// it's just a pvr containing 6 surface (no explicit cubemap type)
 	pvrDatas.isCubemap 	= ( numSurfs === 6 );
 
 	return _extract( pvrDatas );

+ 2 - 2
examples/jsm/loaders/SVGLoader.js

@@ -1633,7 +1633,7 @@ class SVGLoader extends Loader {
 					( curve.aEndAngle - curve.aStartAngle ) % ( 2 * Math.PI ) < Number.EPSILON;
 
 				// Do not touch angles of a full ellipse because after transformation they
-				// would converge to a sinle value effectively removing the whole curve
+				// would converge to a single value effectively removing the whole curve
 
 				if ( ! isFullEllipse ) {
 
@@ -2124,7 +2124,7 @@ class SVGLoader extends Loader {
 
 				// check if the center of the bounding box is in the bounding box of the paths.
 				// this is a pruning method to limit the search of intersections in paths that can't envelop of the current path.
-				// if a path envelops another path. The center of that oter path, has to be inside the bounding box of the enveloping path.
+				// if a path envelops another path. The center of that other path, has to be inside the bounding box of the enveloping path.
 				if ( path.boundingBox.containsPoint( center ) ) {
 
 					const intersections = getIntersections( scanline, path.points );

+ 1 - 1
examples/jsm/loaders/TDSLoader.js

@@ -398,7 +398,7 @@ class TDSLoader extends Loader {
 
 			} else if ( next.id === MESH_MATRIX ) {
 
-				this.debugMessage( '   Tranformation Matrix (TODO)' );
+				this.debugMessage( '   Transformation Matrix (TODO)' );
 
 				const values = [];
 				for ( let i = 0; i < 12; i ++ ) {

+ 4 - 4
examples/jsm/loaders/lwo/IFFParser.js

@@ -463,7 +463,7 @@ class IFFParser {
 	}
 
 	// holds various data about texture node image state
-	// Data other thanmipMapLevel unknown
+	// Data other than mipMapLevel unknown
 	parseImageStateForm() {
 
 		this.reader.skip( 8 ); // unknown
@@ -577,7 +577,7 @@ class IFFParser {
 			fileName: ''
 		};
 
-		// seach STIL block
+		// search STIL block
 		while ( true ) {
 
 			var tag = this.reader.getIDTag();
@@ -653,11 +653,11 @@ class IFFParser {
 
 		var number = this.reader.getUint16();
 		var flags = this.reader.getUint16(); // If the least significant bit of flags is set, the layer is hidden.
-		var pivot = this.reader.getFloat32Array( 3 ); // Note: this seems to be superflous, as the geometry is translated when pivot is present
+		var pivot = this.reader.getFloat32Array( 3 ); // Note: this seems to be superfluous, as the geometry is translated when pivot is present
 		var layer = {
 			number: number,
 			flags: flags, // If the least significant bit of flags is set, the layer is hidden.
-			pivot: [ - pivot[ 0 ], pivot[ 1 ], pivot[ 2 ] ], // Note: this seems to be superflous, as the geometry is translated when pivot is present
+			pivot: [ - pivot[ 0 ], pivot[ 1 ], pivot[ 2 ] ], // Note: this seems to be superfluous, as the geometry is translated when pivot is present
 			name: this.reader.getString(),
 		};
 

+ 1 - 1
examples/jsm/math/ConvexHull.js

@@ -698,7 +698,7 @@ class ConvexHull {
 
 			let eyeVertex, maxDistance = 0;
 
-			// grap the first available face and start with the first visible vertex of that face
+			// grab the first available face and start with the first visible vertex of that face
 
 			const eyeFace = this.assigned.first().face;
 			let vertex = eyeFace.outside;

+ 1 - 1
examples/jsm/misc/Volume.js

@@ -7,7 +7,7 @@ import { VolumeSlice } from '../misc/VolumeSlice.js';
 
 /**
  * This class had been written to handle the output of the NRRD loader.
- * It contains a volume of data and informations about it.
+ * It contains a volume of data and information about it.
  * For now it only handles 3 dimensional data.
  * See the webgl_loader_nrrd.html example and the loaderNRRD.js file to see how to use this class.
  * @class

+ 2 - 2
examples/jsm/modifiers/SimplifyModifier.js

@@ -29,7 +29,7 @@ class SimplifyModifier {
 		delete geometry.morphAttributes.normal;
 		const attributes = geometry.attributes;
 
-		// this modifier can only process indexed and non-indexed geomtries with at least a position attribute
+		// this modifier can only process indexed and non-indexed geometries with at least a position attribute
 
 		for ( const name in attributes ) {
 
@@ -584,7 +584,7 @@ class Vertex {
 
 		// these will be computed in computeEdgeCostAtVertex()
 		this.collapseCost = 0; // cost of collapsing this vertex, the less the better. aka objdist
-		this.collapseNeighbor = null; // best candinate for collapsing
+		this.collapseNeighbor = null; // best candidate for collapsing
 
 	}
 

+ 2 - 2
examples/jsm/objects/Sky.js

@@ -77,7 +77,7 @@ Sky.SkyShader = {
 
 		// wavelength of used primaries, according to preetham
 		const vec3 lambda = vec3( 680E-9, 550E-9, 450E-9 );
-		// this pre-calcuation replaces older TotalRayleigh(vec3 lambda) function:
+		// this pre-calculation replaces older TotalRayleigh(vec3 lambda) function:
 		// (8.0 * pow(pi, 3.0) * pow(pow(n, 2.0) - 1.0, 2.0) * (6.0 + 3.0 * pn)) / (3.0 * N * pow(lambda, vec3(4.0)) * (6.0 - 7.0 * pn))
 		const vec3 totalRayleigh = vec3( 5.804542996261093E-6, 1.3562911419845635E-5, 3.0265902468824876E-5 );
 
@@ -120,7 +120,7 @@ Sky.SkyShader = {
 
 			float rayleighCoefficient = rayleigh - ( 1.0 * ( 1.0 - vSunfade ) );
 
-			// extinction (absorbtion + out scattering)
+			// extinction (absorption + out scattering)
 			// rayleigh coefficients
 			vBetaR = totalRayleigh * rayleighCoefficient;
 

+ 2 - 2
examples/jsm/objects/SkyMesh.js

@@ -47,7 +47,7 @@ class SkyMesh extends Mesh {
 
 			// wavelength of used primaries, according to preetham
 			// const lambda = vec3( 680E-9, 550E-9, 450E-9 );
-			// this pre-calcuation replaces older TotalRayleigh(vec3 lambda) function:
+			// this pre-calculation replaces older TotalRayleigh(vec3 lambda) function:
 			// (8.0 * pow(pi, 3.0) * pow(pow(n, 2.0) - 1.0, 2.0) * (6.0 + 3.0 * pn)) / (3.0 * N * pow(lambda, vec3(4.0)) * (6.0 - 7.0 * pn))
 			const totalRayleigh = vec3( 5.804542996261093E-6, 1.3562911419845635E-5, 3.0265902468824876E-5 );
 
@@ -85,7 +85,7 @@ class SkyMesh extends Mesh {
 
 			const rayleighCoefficient = this.rayleigh.sub( float( 1.0 ).mul( float( 1.0 ).sub( vSunfade ) ) );
 
-			// extinction (absorbtion + out scattering)
+			// extinction (absorption + out scattering)
 			// rayleigh coefficients
 			varyingProperty( 'vec3', 'vBetaR' ).assign( totalRayleigh.mul( rayleighCoefficient ) );
 

+ 1 - 1
examples/jsm/objects/Water2.js

@@ -132,7 +132,7 @@ class Water extends Mesh {
 		this.material.uniforms[ 'reflectivity' ].value = reflectivity;
 		this.material.uniforms[ 'textureMatrix' ].value = textureMatrix;
 
-		// inital values
+		// initial values
 
 		this.material.uniforms[ 'config' ].value.x = 0; // flowMapOffset0
 		this.material.uniforms[ 'config' ].value.y = halfCycle; // flowMapOffset1

+ 2 - 2
examples/jsm/postprocessing/BloomPass.js

@@ -71,7 +71,7 @@ class BloomPass extends Pass {
 
 		if ( maskActive ) renderer.state.buffers.stencil.setTest( false );
 
-		// Render quad with blured scene into texture (convolution pass 1)
+		// Render quad with blurred scene into texture (convolution pass 1)
 
 		this.fsQuad.material = this.materialConvolution;
 
@@ -83,7 +83,7 @@ class BloomPass extends Pass {
 		this.fsQuad.render( renderer );
 
 
-		// Render quad with blured scene into texture (convolution pass 2)
+		// Render quad with blurred scene into texture (convolution pass 2)
 
 		this.convolutionUniforms[ 'tDiffuse' ].value = this.renderTargetX.texture;
 		this.convolutionUniforms[ 'uImageIncrement' ].value = BloomPass.blurY;

+ 1 - 1
examples/jsm/postprocessing/SSAOPass.js

@@ -167,7 +167,7 @@ class SSAOPass extends Pass {
 		this.copyMaterial.dispose();
 		this.depthRenderMaterial.dispose();
 
-		// dipsose full screen quad
+		// dispose full screen quad
 
 		this.fsQuad.dispose();
 

+ 1 - 1
examples/jsm/postprocessing/SSRPass.js

@@ -335,7 +335,7 @@ class SSRPass extends Pass {
 		this.copyMaterial.dispose();
 		this.depthRenderMaterial.dispose();
 
-		// dipsose full screen quad
+		// dispose full screen quad
 
 		this.fsQuad.dispose();
 

+ 1 - 1
examples/jsm/shaders/BokehShader2.js

@@ -104,7 +104,7 @@ const BokehShader = {
 
 		float vignout = 1.3; // vignetting outer border
 		float vignin = 0.0; // vignetting inner border
-		float vignfade = 22.0; // f-stops till vignete fades
+		float vignfade = 22.0; // f-stops till vignette fades
 
 		uniform bool shaderFocus;
 		// disable if you use external focalDepth value

+ 3 - 3
examples/jsm/shaders/GodRaysShader.js

@@ -12,7 +12,7 @@ import {
  * sample count to produce a blur filter with large support.
  *
  * My implementation performs 3 passes, similar to the implementation from Sousa. I found
- * just 6 samples per pass produced acceptible results. The blur is applied three times,
+ * just 6 samples per pass produced acceptable results. The blur is applied three times,
  * with decreasing filter support. The result is equivalent to a single pass with
  * 6*6*6 = 216 samples.
  *
@@ -136,12 +136,12 @@ const GodRaysGenerateShader = {
 		//	- see http://code.google.com/p/chromium/issues/detail?id=153105
 
 		/*
-		// Unrolling didnt do much on my hardware (ATI Mobility Radeon 3450),
+		// Unrolling didn't do much on my hardware (ATI Mobility Radeon 3450),
 		// so i've just left the loop
 
 		"for ( float i = 0.0; i < TAPS_PER_PASS; i += 1.0 ) {",
 
-		// Accumulate samples, making sure we dont walk past the light source.
+		// Accumulate samples, making sure we don't walk past the light source.
 
 		// The check for uv.y < 1 would not be necessary with "border" UV wrap
 		// mode, with a black border color. I don't think this is currently

+ 1 - 1
examples/jsm/shaders/SobelOperatorShader.js

@@ -79,7 +79,7 @@ const SobelOperatorShader = {
 				Gy[0][1] * tx0y1 + Gy[1][1] * tx1y1 + Gy[2][1] * tx2y1 +
 				Gy[0][2] * tx0y2 + Gy[1][2] * tx1y2 + Gy[2][2] * tx2y2;
 
-		// magnitute of the total gradient
+		// magnitude of the total gradient
 
 			float G = sqrt( ( valueGx * valueGx ) + ( valueGy * valueGy ) );
 

+ 1 - 1
examples/jsm/tsl/display/SobelOperatorNode.js

@@ -140,7 +140,7 @@ class SobelOperatorNode extends TempNode {
 				Gy[ 2 ][ 2 ].mul( tx2y2 )
 			);
 
-			// magnitute of the total gradient
+			// magnitude of the total gradient
 
 			const G = valueGx.mul( valueGx ).add( valueGy.mul( valueGy ) ).sqrt();
 

+ 1 - 1
examples/webgl_buffergeometry_instancing_billboards.html

@@ -47,7 +47,7 @@
 		varying vec2 vUv;
 		varying float vScale;
 
-		// HSL to RGB Convertion helpers
+		// HSL to RGB Conversion helpers
 		vec3 HUEtoRGB(float H){
 			H = mod(H,1.0);
 			float R = abs(H * 6.0 - 3.0) - 1.0;

+ 1 - 1
examples/webgl_geometry_extrude_splines.html

@@ -328,7 +328,7 @@
 				splineCamera.position.copy( position );
 				cameraEye.position.copy( position );
 
-				// using arclength for stablization in look ahead
+				// using arclength for stabilization in look ahead
 
 				tubeGeometry.parameters.path.getPointAt( ( t + 30 / tubeGeometry.parameters.path.getLength() ) % 1, lookAt );
 				lookAt.multiplyScalar( params.scale );

+ 1 - 1
examples/webgl_materials_modified.html

@@ -104,7 +104,7 @@
 
 				};
 
-				// Make sure WebGLRenderer doesnt reuse a single program
+				// Make sure WebGLRenderer doesn't reuse a single program
 
 				material.customProgramCacheKey = function () {
 

+ 1 - 1
examples/webgl_materials_texture_rotation.html

@@ -128,7 +128,7 @@
 					texture.matrix
 					    .identity()
 					    .translate( - API.centerX, - API.centerY )
-					    .rotate( API.rotation )					// I don't understand how rotation can preceed scale, but it seems to be required...
+					    .rotate( API.rotation )					// I don't understand how rotation can precede scale, but it seems to be required...
 					    .scale( API.repeatX, API.repeatY )
 					    .translate( API.centerX, API.centerY )
 					    .translate( API.offsetX, API.offsetY );

+ 1 - 1
examples/webgl_postprocessing_godrays.html

@@ -272,7 +272,7 @@
 
 					screenSpacePosition.x = ( clipPosition.x + 1 ) / 2; // transform from [-1,1] to [0,1]
 					screenSpacePosition.y = ( clipPosition.y + 1 ) / 2; // transform from [-1,1] to [0,1]
-					screenSpacePosition.z = clipPosition.z; // needs to stay in clip space for visibilty checks
+					screenSpacePosition.z = clipPosition.z; // needs to stay in clip space for visibility checks
 
 					// Give it to the god-ray and sun shaders
 

+ 12 - 12
examples/webgpu_compute_birds.html

@@ -179,7 +179,7 @@
 				controls.connect( /* renderer.domElement */ );
 
 				// Initialize position, velocity, and phase values
-			
+
 				const positionArray = new Float32Array( BIRDS * 3 );
 				const velocityArray = new Float32Array( BIRDS * 3 );
 				const phaseArray = new Float32Array( BIRDS );
@@ -220,7 +220,7 @@
 				phaseStorage.setPBO( true );
 
 				// Define Uniforms. Uniforms only need to be defined once rather than per shader.
-			
+
 				effectController = {
 					separation: uniform( 15.0 ).label( 'separation' ),
 					alignment: uniform( 20.0 ).label( 'alignment' ),
@@ -233,12 +233,12 @@
 				};
 
 				// Create geometry
-			
+
 				const birdGeometry = new BirdGeometry();
 				const birdMaterial = new THREE.NodeMaterial();
 
 				// Animate bird mesh within vertex shader, then apply position offset to vertices.
-			
+
 				const birdVertexTSL = Fn( () => {
 
 					const reference = attribute( 'reference' );
@@ -247,12 +247,12 @@
 					const position = positionLocal.toVar();
 					const newPhase = phaseStorage.element( reference ).toVar();
 					const newVelocity = normalize( velocityStorage.element( reference ) ).toVar();
-			
+
 					If( birdVertex.equal( 4 ).or( birdVertex.equal( 7 ) ), () => {
 
 						// flap wings
 						position.y = sin( newPhase ).mul( 5.0 );
-			
+
 					} );
 
 					const newPosition = modelWorldMatrix.mul( position );
@@ -267,7 +267,7 @@
 
 					const cosrz = x.div( xyz );
 					const sinrz = newVelocity.y.div( xyz ).toVar();
-			
+
 					// Nodes must be negated with negate(). Using '-', their values will resolve to NaN.
 					const maty = mat3(
 						cosry, 0, negate( sinry ),
@@ -301,7 +301,7 @@
 				// Shaders are computationally identical to their GLSL counterparts outside of texture destructuring.
 
 				computeVelocity = Fn( () => {
-			
+
 					// Define consts
 					const PI = float( 3.141592653589793 );
 					const PI_2 = PI.mul( 2.0 );
@@ -351,7 +351,7 @@
 						const dirToBird = birdPosition.sub( position );
 						const distToBird = length( dirToBird );
 
-						// Don't apply any changes to velocity if the distance to this bird is negligable.
+						// Don't apply any changes to velocity if the distance to this bird is negligible.
 						If( distToBird.lessThan( 0.0001 ), () => {
 
 							Continue();
@@ -372,7 +372,7 @@
 						const percent = distToBirdSq.div( zoneRadiusSq );
 
 						If( percent.lessThan( separationThresh ), () => {
-			
+
 							// Separation - Move apart for comfort
 							const velocityAdjust = ( separationThresh.div( percent ).sub( 1.0 ) ).mul( deltaTime );
 							velocity.subAssign( normalize( dirToBird ).mul( velocityAdjust ) );
@@ -404,13 +404,13 @@
 							velocity.addAssign( normalize( dirToBird ).mul( velocityAdjust ) );
 
 						} );
-			
+
 					} );
 
 					If( length( velocity ).greaterThan( limit ), () => {
 
 						velocity.assign( normalize( velocity ).mul( limit ) );
-			
+
 					} );
 
 				} )().compute( BIRDS );

+ 2 - 2
examples/webgpu_parallax_uv.html

@@ -11,7 +11,7 @@
 		<div id="info">
 			<a href="https://threejs.org" target="_blank" rel="noopener">three.js</a> webgpu - parallax uv<br />
 			Textures by <a href="https://ambientcg.com/view?id=Ice002" target="_blank" rel="noopener">ambientCG</a><br />
-			
+
 		</div>
 
 		<script type="importmap">
@@ -82,7 +82,7 @@
 				bottomTexture.wrapS = THREE.RepeatWrapping;
 				bottomTexture.wrapT = THREE.RepeatWrapping;
 
-				// paralax effect
+				// parallax effect
 
 				const parallaxScale = .3;
 				const offsetUV = texture( displaceTexture ).mul( parallaxScale );

+ 19 - 19
examples/webgpu_tsl_compute_attractors_particles.html

@@ -120,22 +120,22 @@
 					attractor.controls.visible = true;
 					attractor.controls.enabled = attractor.controls.visible;
 					scene.add( attractor.controls.getHelper() );
-			
+
 					attractor.controls.addEventListener( 'dragging-changed', ( event ) => {
 
 						controls.enabled = ! event.value;
-			
+
 					} );
-			
+
 					attractor.controls.addEventListener( 'change', () => {
 
 						attractor.position.copy( attractor.reference.position );
 						attractor.orientation.copy( new THREE.Vector3( 0, 1, 0 ).applyQuaternion( attractor.reference.quaternion ) );
-			
+
 					} );
 
 					attractors.push( attractor );
-			
+
 				}
 
 				// particles
@@ -167,7 +167,7 @@
 						cos( phi ),
 						sinPhiRadius.mul( cos( theta ) )
 					);
-			
+
 				} );
 
 				// init compute
@@ -188,7 +188,7 @@
 					const theta = hash( instanceIndex.add( uint( Math.random() * 0xffffff ) ) ).mul( PI );
 					const baseVelocity = sphericalToVec3( phi, theta ).mul( 0.05 );
 					velocity.assign( baseVelocity );
-			
+
 				} );
 
 				const initCompute = init().compute( count );
@@ -196,7 +196,7 @@
 				const reset = () => {
 
 					renderer.computeAsync( initCompute );
-			
+
 				};
 
 				reset();
@@ -209,7 +209,7 @@
 				const update = Fn( () => {
 
 					// const delta = timerDelta().mul( timeScale ).min( 1 / 30 ).toVar();
-					const delta = float( 1 / 60 ).mul( timeScale ).toVar(); // uses fixed delta to consistant result
+					const delta = float( 1 / 60 ).mul( timeScale ).toVar(); // uses fixed delta to consistent result
 					const position = positionBuffer.element( instanceIndex );
 					const velocity = velocityBuffer.element( instanceIndex );
 
@@ -234,7 +234,7 @@
 						const spinningForce = attractorRotationAxis.mul( gravityStrength ).mul( spinningStrength );
 						const spinningVelocity = spinningForce.cross( toAttractor );
 						force.addAssign( spinningVelocity );
-			
+
 					} );
 
 					// velocity
@@ -244,7 +244,7 @@
 					If( speed.greaterThan( maxSpeed ), () => {
 
 						velocity.assign( velocity.normalize().mul( maxSpeed ) );
-			
+
 					} );
 					velocity.mulAssign( velocityDamping.oneMinus() );
 
@@ -256,7 +256,7 @@
 
 					const halfHalfExtent = boundHalfExtent.div( 2 ).toVar();
 					position.assign( mod( position.add( halfHalfExtent ), boundHalfExtent ).sub( halfHalfExtent ) );
-			
+
 				} );
 				updateCompute = update().compute( count );
 
@@ -272,7 +272,7 @@
 					const finalColor = mix( colorA, colorB, colorMix );
 
 					return vec4( finalColor, 1 );
-			
+
 				} )();
 
 				material.scaleNode = particleMassMultiplier.mul( scale );
@@ -307,17 +307,17 @@
 
 								attractor.controls.visible = false;
 								attractor.controls.enabled = false;
-			
+
 							} else {
 
 								attractor.controls.visible = true;
 								attractor.controls.enabled = true;
 								attractor.controls.mode = value;
-			
+
 							}
-			
+
 						}
-			
+
 					} );
 
 				gui
@@ -326,7 +326,7 @@
 
 						for ( const attractor of attractors )
 							attractor.helper.visible = value;
-			
+
 					} );
 
 				gui.add( { reset }, 'reset' );
@@ -343,7 +343,7 @@
 			}
 
 			async function animate() {
-			
+
 				controls.update();
 
     			renderer.compute( updateCompute );

+ 1 - 1
examples/webgpu_tsl_editor.html

@@ -60,7 +60,7 @@
 
 			function init() {
 
-				// add the depedencies
+				// add the dependencies
 
 				const width = 200;
 				const height = 200;

+ 1 - 1
examples/webgpu_tsl_interoperability.html

@@ -82,7 +82,7 @@
 
 				// Only wgsl vertex shaders take varyings arguments when defined.
 				// For a wgsl fragment shader, pass the varyingProperty node to the
-				// fragment shader's constructor to acess the varying value computed
+				// fragment shader's constructor to access the varying value computed
 				// by the vertex shader.
 				const wgslFragmentShader = wgslFn( `
 					fn crtFragment(

+ 1 - 1
examples/webxr_vr_layers.html

@@ -196,7 +196,7 @@
 				eyeCharts.add( snellenMeshMipMap );
 
 				// The layers don't participate depth testing between each other. Since the projection
-				// layer is rendered last, any 3D object will incorrecly overlap layers. To avoid this,
+				// layer is rendered last, any 3D object will incorrectly overlap layers. To avoid this,
 				// invisible quads can be placed into the scene to participate in depth testing when the
 				// projection layer is rendered.
 				const dummyMeshLeft = new THREE.Mesh(

+ 1 - 1
examples/webxr_xr_controls_transform.html

@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <html lang="en">
 	<head>
-		<title>three.js xr - controls - trasnform</title>
+		<title>three.js xr - controls - transform</title>
 		<meta charset="utf-8">
 		<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
 		<link type="text/css" rel="stylesheet" href="main.css">

+ 1 - 1
examples/webxr_xr_haptics.html

@@ -39,7 +39,7 @@
 			let controls, group;
 			let audioCtx = null;
 
-			// minor pentatonic scale, so whichever notes is striked would be more pleasant
+			// minor pentatonic scale, so whichever notes is stricken would be more pleasant
 			const musicScale = [ 0, 3, 5, 7, 10 ];
 
 			init();

+ 1 - 1
manual/resources/threejs-textures.js

@@ -196,7 +196,7 @@ import { threejsLessonUtils } from './threejs-lesson-utils.js';
 				// but no checks for mipmaps I'm guessing. It seems like
 				// they shouldn't be checking for same image, the should be
 				// checking for same WebGLTexture. Given there is more than
-				// WebGL to support maybe they need to abtract WebGLTexture to
+				// WebGL to support maybe they need to abstract WebGLTexture to
 				// PlatformTexture or something?
 
 				const meshInfos = [

+ 1 - 1
manual/resources/tools/geo-picking/shapefile.js

@@ -97,7 +97,7 @@ var slice_slice = function(length) {
   return (function read() {
     return that._source.read().then(function(result) {
 
-      // When done, it’s possible the request wasn’t fully fullfilled!
+      // When done, it’s possible the request wasn’t fully fulfilled!
       // If so, the pre-allocated array is too big and needs slicing.
       if (result.done) {
         that._array = empty;

+ 3 - 3
playground/Nodes.json

@@ -1222,7 +1222,7 @@
 						{
 							"name": "Max",
 							"icon": "math-function",
-							"description": "Returns the maximun of the two parameters.",
+							"description": "Returns the maximum of the two parameters.",
 							"shaderNode": "max",
 							"nodeType": "node",
 							"properties": [
@@ -1369,7 +1369,7 @@
 									"name": "bNode",
 									"nodeType": "node",
 									"label": "y",
-									"description": "Specify the value to whitch to raise x."
+									"description": "Specify the value to raise x."
 								}
 							]
 						},
@@ -1531,7 +1531,7 @@
 									"name": "aNode",
 									"nodeType": "node",
 									"label": "x",
-									"description": "Specify the value from wich to extract the sign."
+									"description": "Specify the value from which to extract the sign."
 								}
 							]
 						},

+ 1 - 1
src/extras/Earcut.js

@@ -591,7 +591,7 @@ function pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {
 // check if a diagonal between two polygon nodes is valid (lies in polygon interior)
 function isValidDiagonal( a, b ) {
 
-	return a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges
+	return a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // doesn't intersect other edges
            ( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible
             ( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors
             equals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case

+ 1 - 1
src/nodes/accessors/BufferNode.js

@@ -12,7 +12,7 @@ import { nodeObject } from '../tsl/TSLBase.js';
  * const bufferNode = buffer( array, 'mat4', count );
  * const matrixNode = bufferNode.element( index ); // access a matrix from the buffer
  * ```
- * In general, it is recommened to use the more managed {@link UniformArrayNode}
+ * In general, it is recommended to use the more managed {@link UniformArrayNode}
  * since it handles more input types and automatically cares about buffer paddings.
  *
  * @augments module:UniformNode~UniformNode

+ 1 - 1
src/nodes/accessors/Camera.js

@@ -54,7 +54,7 @@ export const cameraWorldMatrix = /*@__PURE__*/ uniform( 'mat4' ).label( 'cameraW
 export const cameraNormalMatrix = /*@__PURE__*/ uniform( 'mat3' ).label( 'cameraNormalMatrix' ).setGroup( renderGroup ).onRenderUpdate( ( { camera } ) => camera.normalMatrix );
 
 /**
- * TSL object that represents the positon in world space of the camera used for the current render.
+ * TSL object that represents the position in world space of the camera used for the current render.
  *
  * @type {UniformNode<vec3>}
  */

+ 2 - 2
src/nodes/accessors/MaterialNode.js

@@ -590,7 +590,7 @@ export const materialSheen = /*@__PURE__*/ nodeImmutable( MaterialNode, Material
 export const materialSheenRoughness = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.SHEEN_ROUGHNESS );
 
 /**
- * TSL object that represents the anisotriopy of the current material.
+ * TSL object that represents the anisotropy of the current material.
  *
  * @type {Node<vec2>}
  */
@@ -720,7 +720,7 @@ export const materialLightMap = /*@__PURE__*/ nodeImmutable( MaterialNode, Mater
 export const materialAOMap = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.AO_MAP );
 
 /**
- * TSL object that represents the anisotriopy vector of the current material.
+ * TSL object that represents the anisotropy vector of the current material.
  *
  * @type {Node<vec2>}
  */

+ 5 - 5
src/nodes/accessors/SkinningNode.js

@@ -107,14 +107,14 @@ class SkinningNode extends Node {
 		this.bindMatrixInverseNode = bindMatrixInverseNode;
 
 		/**
-		 * The bind martices as a uniform buffer node.
+		 * The bind matrices as a uniform buffer node.
 		 *
 		 * @type {Node}
 		 */
 		this.boneMatricesNode = boneMatricesNode;
 
 		/**
-		 * The previous bind martices as a uniform buffer node.
+		 * The previous bind matrices as a uniform buffer node.
 		 * Required for computing motion vectors.
 		 *
 		 * @type {Node?}
@@ -125,7 +125,7 @@ class SkinningNode extends Node {
 	}
 
 	/**
-	 * Transfroms the given vertex position via skinning.
+	 * Transforms the given vertex position via skinning.
 	 *
 	 * @param {Node} [boneMatrices=this.boneMatricesNode] - The bone matrices
 	 * @param {Node<vec3>} [position=positionLocal] - The vertex position in local space.
@@ -156,7 +156,7 @@ class SkinningNode extends Node {
 	}
 
 	/**
-	 * Transfroms the given vertex normal via skinning.
+	 * Transforms the given vertex normal via skinning.
 	 *
 	 * @param {Node} [boneMatrices=this.boneMatricesNode] - The bone matrices
 	 * @param {Node<vec3>} [normal=normalLocal] - The vertex normal in local space.
@@ -187,7 +187,7 @@ class SkinningNode extends Node {
 	}
 
 	/**
-	 * Transfroms the given vertex normal via skinning.
+	 * Transforms the given vertex normal via skinning.
 	 *
 	 * @param {NodeBuilder} builder - The current node builder.
 	 * @return {Node<vec3>} The skinned position from the previous frame.

+ 2 - 2
src/nodes/accessors/StorageTextureNode.js

@@ -72,7 +72,7 @@ class StorageTextureNode extends TextureNode {
 		this.isStorageTextureNode = true;
 
 		/**
-		 * The acces type of the texture node.
+		 * The access type of the texture node.
 		 *
 		 * @type {String}
 		 * @default 'writeOnly'
@@ -212,7 +212,7 @@ export const storageTexture = /*@__PURE__*/ nodeProxy( StorageTextureNode );
 
 
 /**
- * TODO: Explain differnece to `storageTexture()`.
+ * TODO: Explain difference to `storageTexture()`.
  *
  * @function
  * @param {StorageTexture} value - The storage texture.

+ 1 - 1
src/nodes/accessors/TextureNode.js

@@ -248,7 +248,7 @@ class TextureNode extends UniformNode {
 	/**
 	 * Transforms the given uv node with the texture transformation matrix.
 	 *
-	 * @param {Node} uvNode - The uv node to transfrom.
+	 * @param {Node} uvNode - The uv node to transform.
 	 * @return {Node} The transformed uv node.
 	 */
 	getTransformedUV( uvNode ) {

+ 1 - 1
src/nodes/lighting/BasicEnvironmentNode.js

@@ -3,7 +3,7 @@ import { cubeMapNode } from '../utils/CubeMapNode.js';
 
 /**
  * Represents a basic model for Image-based lighting (IBL). The environment
- * is defined via environment maps in the equirectanular or cube map format.
+ * is defined via environment maps in the equirectangular or cube map format.
  * `BasicEnvironmentNode` is intended for non-PBR materials like {@link MeshBasicNodeMaterial}
  * or {@link MeshPhongNodeMaterial}.
  *

+ 1 - 1
src/nodes/lighting/EnvironmentNode.js

@@ -13,7 +13,7 @@ const _envNodeCache = new WeakMap();
 
 /**
  * Represents a physical model for Image-based lighting (IBL). The environment
- * is defined via environment maps in the equirectanular, cube map or cubeUV (PMREM) format.
+ * is defined via environment maps in the equirectangular, cube map or cubeUV (PMREM) format.
  * `EnvironmentNode` is intended for PBR materials like {@link MeshStandardNodeMaterial}.
  *
  * @augments LightingNode

+ 1 - 1
src/nodes/lighting/PointShadowNode.js

@@ -234,7 +234,7 @@ class PointShadowNode extends ShadowNode {
 	 * Overwrites the default implementation with point light specific
 	 * rendering code.
 	 *
-	 * @param {NodeFrme} frame - A reference to the current node frame.
+	 * @param {NodeFrame} frame - A reference to the current node frame.
 	 */
 	renderShadow( frame ) {
 

+ 1 - 1
src/nodes/lighting/ShadowNode.js

@@ -640,7 +640,7 @@ class ShadowNode extends ShadowBaseNode {
 	/**
 	 * Updates the shadow.
 	 *
-	 * @param {NodeFrme} frame - A reference to the current node frame.
+	 * @param {NodeFrame} frame - A reference to the current node frame.
 	 */
 	updateShadow( frame ) {
 

+ 2 - 2
src/nodes/lighting/SpotLightNode.js

@@ -30,14 +30,14 @@ class SpotLightNode extends AnalyticLightNode {
 		super( light );
 
 		/**
-		 * Uniform node representing the cone cosinus.
+		 * Uniform node representing the cone cosine.
 		 *
 		 * @type {UniformNode<float>}
 		 */
 		this.coneCosNode = uniform( 0 ).setGroup( renderGroup );
 
 		/**
-		 * Uniform node representing the penumbra cosinus.
+		 * Uniform node representing the penumbra cosine.
 		 *
 		 * @type {UniformNode<float>}
 		 */

+ 1 - 1
src/nodes/math/OperatorNode.js

@@ -317,7 +317,7 @@ export default OperatorNode;
 export const add = /*@__PURE__*/ nodeProxy( OperatorNode, '+' );
 
 /**
- * Returns the subraction of two or more value.
+ * Returns the subtraction of two or more value.
  *
  * @function
  * @param {Node} aNode - The first input.

+ 2 - 2
src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js

@@ -286,7 +286,7 @@ vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in m
 	float result = LTC_ClippedSphereFormFactor( vectorFormFactor );
 
 /*
-	// alternate method of adjusting for horizon clipping (see referece)
+	// alternate method of adjusting for horizon clipping (see reference)
 	// refactoring required
 	float len = length( vectorFormFactor );
 	float z = vectorFormFactor.z / len;
@@ -351,7 +351,7 @@ vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 no
 
 #endif
 
-// This is a curve-fit approxmation to the "Charlie sheen" BRDF integrated over the hemisphere from 
+// This is a curve-fit approximation to the "Charlie sheen" BRDF integrated over the hemisphere from
 // Estevez and Kulla 2017, "Production Friendly Microfacet Sheen BRDF". The analysis can be found
 // in the Sheen section of https://drive.google.com/file/d/1T0D1VSyR4AllqIJTQAraEIzjlb5h4FKH/view?usp=sharing
 float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {

+ 7 - 7
src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js

@@ -123,7 +123,7 @@ export default /* glsl */`
 		// Direction of refracted light.
 		vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );
 
-		// Compute rotation-independant scaling of the model matrix.
+		// Compute rotation-independent scaling of the model matrix.
 		vec3 modelScale;
 		modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );
 		modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );
@@ -184,13 +184,13 @@ export default /* glsl */`
 
 				vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix );
 				vec3 refractedRayExit = position + transmissionRay;
-		
+
 				// Project refracted vector on the framebuffer, while mapping to normalized device coordinates.
 				vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );
 				vec2 refractionCoords = ndcPos.xy / ndcPos.w;
 				refractionCoords += 1.0;
 				refractionCoords /= 2.0;
-		
+
 				// Sample framebuffer to get pixel the refracted ray hits.
 				vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] );
 				transmittedLight[ i ] = transmissionSample[ i ];
@@ -201,9 +201,9 @@ export default /* glsl */`
 			}
 
 			transmittedLight.a /= 3.0;
-		
+
 		#else
-		
+
 			vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
 			vec3 refractedRayExit = position + transmissionRay;
 
@@ -216,7 +216,7 @@ export default /* glsl */`
 			// Sample framebuffer to get pixel the refracted ray hits.
 			transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );
 			transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );
-		
+
 		#endif
 
 		vec3 attenuatedColor = transmittance * transmittedLight.rgb;
@@ -224,7 +224,7 @@ export default /* glsl */`
 		// Get the specular component.
 		vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );
 
-		// As less light is transmitted, the opacity should be increased. This simple approximation does a decent job 
+		// As less light is transmitted, the opacity should be increased. This simple approximation does a decent job
 		// of modulating a CSS background, and has no effect when the buffer is opaque, due to a solid object or clear color.
 		float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;
 

+ 1 - 1
src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js

@@ -141,7 +141,7 @@ class WebGLAttributeUtils {
 
 		if ( attribute.isStorageBufferAttribute || attribute.isStorageInstancedBufferAttribute ) {
 
-			// create buffer for tranform feedback use
+			// create buffer for transform feedback use
 			const bufferGPUDual = this._createBuffer( gl, bufferType, array, usage );
 			attributeData = new DualAttributeData( attributeData, bufferGPUDual );
 

+ 1 - 1
test/e2e/deterministic-injection.js

@@ -59,7 +59,7 @@
 
 	};
 
-	/* Semi-determitistic video */
+	/* Semi-deterministic video */
 
 	const play = HTMLVideoElement.prototype.play;
 

+ 3 - 3
test/e2e/puppeteer.js

@@ -50,7 +50,7 @@ const exceptionList = [
 
 	'webaudio_visualizer', // audio can't be analyzed without proper audio hook
 
-	// WebXR also isn't determinstic enough?
+	// WebXR also isn't deterministic enough?
 	'webxr_ar_lighting',
 	'webxr_vr_sandbox',
 	'webxr_vr_video',
@@ -328,11 +328,11 @@ async function main() {
 
 		console.red( 'List of failed screenshots: ' + list );
 		console.red( `If you are sure that everything is correct, try to run "npm run make-screenshot ${ list }". If this does not help, try increasing idleTime and parseTime variables in /test/e2e/puppeteer.js file. If this also does not help, add remaining screenshots to the exception list.` );
-		console.red( `${ failedScreenshots.length } from ${ files.length } screenshots have not generated succesfully.` );
+		console.red( `${ failedScreenshots.length } from ${ files.length } screenshots have not generated successfully.` );
 
 	} else if ( isMakeScreenshot && ! failedScreenshots.length ) {
 
-		console.green( `${ files.length } screenshots succesfully generated.` );
+		console.green( `${ files.length } screenshots successfully generated.` );
 
 	} else if ( failedScreenshots.length ) {
 

+ 2 - 2
test/unit/README.md

@@ -7,7 +7,7 @@
 You can run the unit tests in two environments:
 
 - Node.js: Execute `npm run test-unit` from the root folder
-- Browser: Execute `npx servez -p 8080 --ssl` (or run any other local web sever) from the root folder and access `https://localhost:8080/test/unit/UnitTests.html` in a web browser. 
+- Browser: Execute `npx servez -p 8080 --ssl` (or run any other local web sever) from the root folder and access `https://localhost:8080/test/unit/UnitTests.html` in a web browser.
 
 See [Installation](https://threejs.org/docs/#manual/introduction/Installation) for more information.
 
@@ -15,7 +15,7 @@ See [Installation](https://threejs.org/docs/#manual/introduction/Installation) f
 
 A small number of tests can only be run in a browser environment.
 
-For browser tests, futher changes to the library will not be reflected until the page is refreshed.
+For browser tests, further changes to the library will not be reflected until the page is refreshed.
 
 ## Troubleshooting
 

+ 1 - 1
test/unit/src/animation/AnimationAction.tests.js

@@ -64,7 +64,7 @@ export default QUnit.module( 'Animation', () => {
 			const clip = new AnimationClip( 'nonname', - 1, [] );
 
 			const animationAction = new AnimationAction( mixer, clip );
-			assert.ok( animationAction, 'animationAction instanciated' );
+			assert.ok( animationAction, 'animationAction instantiated' );
 
 		} );
 

+ 1 - 1
test/unit/src/animation/AnimationClip.tests.js

@@ -10,7 +10,7 @@ export default QUnit.module( 'Animation', () => {
 		QUnit.test( 'Instancing', ( assert ) => {
 
 			const clip = new AnimationClip( 'clip1', 1000, [ {} ] );
-			assert.ok( clip, 'AnimationClip can be instanciated' );
+			assert.ok( clip, 'AnimationClip can be instantiated' );
 
 		} );
 

+ 1 - 1
test/unit/src/animation/AnimationObjectGroup.tests.js

@@ -27,7 +27,7 @@ export default QUnit.module( 'Animation', () => {
 			const groupA = new AnimationObjectGroup();
 			assert.ok(
 				groupA instanceof AnimationObjectGroup,
-				'AnimationObjectGroup can be instanciated'
+				'AnimationObjectGroup can be instantiated'
 			);
 
 		} );

+ 1 - 1
test/unit/src/core/InterleavedBufferAttribute.tests.js

@@ -117,7 +117,7 @@ export default QUnit.module( 'Core', () => {
 			instance.setX( 0, 123 );
 			instance.setX( 1, 321 );
 
-			// the offset was defined as 1, so go one step futher in the array
+			// the offset was defined as 1, so go one step further in the array
 			assert.ok( instance.data.array[ 1 ] === 123 &&
 				instance.data.array[ 4 ] === 321, 'x was calculated correct based on index and default offset' );
 

+ 2 - 2
test/unit/src/core/Object3D.tests.js

@@ -723,7 +723,7 @@ export default QUnit.module( 'Core', () => {
 			parent.add( childName, childNothing );
 
 			assert.strictEqual( parent.getObjectsByProperty( 'name', 'foo' ).length, 3, 'Count the number of children with name "foo"' );
-			assert.strictEqual( parent.getObjectsByProperty( 'name', 'foo' ).some( obj => obj.name !== 'foo' ), false, 'Get all childs by name "foo"' );
+			assert.strictEqual( parent.getObjectsByProperty( 'name', 'foo' ).some( obj => obj.name !== 'foo' ), false, 'Get all children with name "foo"' );
 
 		} );
 
@@ -1323,7 +1323,7 @@ export default QUnit.module( 'Core', () => {
 			assert.strictEqual( a, undefined, 'Undefined pre-clone()' );
 
 			a = b.clone();
-			assert.notStrictEqual( a, b, 'Defined but seperate instances post-clone()' );
+			assert.notStrictEqual( a, b, 'Defined but separate instances post-clone()' );
 
 			a.uuid = b.uuid;
 			assert.deepEqual( a, b, 'But identical properties' );

+ 1 - 1
test/unit/src/extras/DataUtils.tests.js

@@ -13,7 +13,7 @@ export default QUnit.module( 'Extras', () => {
 
 			assert.ok( DataUtils.toHalfFloat( 0 ) === 0, 'Passed!' );
 
-			// surpress the following console message during testing
+			// suppress the following console message during testing
 			// THREE.DataUtils.toHalfFloat(): Value out of range.
 
 			console.level = CONSOLE_LEVEL.OFF;

+ 4 - 4
test/unit/src/loaders/ImageBitmapLoader.tests.js

@@ -12,7 +12,7 @@ export default QUnit.module( 'Loaders', () => {
 		// INHERITANCE
 		QUnit.test( 'Extending', ( assert ) => {
 
-			// surpress the following console message when testing
+			// suppress the following console message when testing
 			// THREE.ImageBitmapLoader: createImageBitmap() not supported.
 
 			console.level = CONSOLE_LEVEL.OFF;
@@ -29,7 +29,7 @@ export default QUnit.module( 'Loaders', () => {
 		// INSTANCING
 		QUnit.test( 'Instancing', ( assert ) => {
 
-			// surpress the following console message when testing
+			// suppress the following console message when testing
 			// THREE.ImageBitmapLoader: createImageBitmap() not supported.
 
 			console.level = CONSOLE_LEVEL.OFF;
@@ -43,7 +43,7 @@ export default QUnit.module( 'Loaders', () => {
 		// PROPERTIES
 		QUnit.test( 'options', ( assert ) => {
 
-			// surpress the following console message when testing in node
+			// suppress the following console message when testing in node
 			// THREE.ImageBitmapLoader: createImageBitmap() not supported.
 
 			console.level = CONSOLE_LEVEL.OFF;
@@ -58,7 +58,7 @@ export default QUnit.module( 'Loaders', () => {
 		// PUBLIC
 		QUnit.test( 'isImageBitmapLoader', ( assert ) => {
 
-			// surpress the following console message when testing in node
+			// suppress the following console message when testing in node
 			// THREE.ImageBitmapLoader: createImageBitmap() not supported.
 
 			console.level = CONSOLE_LEVEL.OFF;

+ 1 - 1
test/unit/src/math/Box3.tests.js

@@ -367,7 +367,7 @@ export default QUnit.module( 'Maths', () => {
 			assert.ok( a.max.equals( new Vector3( 1, 1, 1 ) ), 'Smaller box: correct new maximum' );
 
 			//
-			assert.ok( new Box3().expandByObject( new Mesh() ).isEmpty() === true, 'The AABB of a mesh with inital geometry is empty.' );
+			assert.ok( new Box3().expandByObject( new Mesh() ).isEmpty() === true, 'The AABB of a mesh with initial geometry is empty.' );
 
 		} );
 

+ 7 - 7
test/unit/src/math/MathUtils.tests.js

@@ -29,11 +29,11 @@ export default QUnit.module( 'Maths', () => {
 		QUnit.test( 'euclideanModulo', ( assert ) => {
 
 			assert.ok( isNaN( MathUtils.euclideanModulo( 6, 0 ) ), 'Division by zero returns NaN' );
-			assert.strictEqual( MathUtils.euclideanModulo( 6, 1 ), 0, 'Divison by trivial divisor' );
-			assert.strictEqual( MathUtils.euclideanModulo( 6, 2 ), 0, 'Divison by non-trivial divisor' );
-			assert.strictEqual( MathUtils.euclideanModulo( 6, 5 ), 1, 'Divison by itself - 1' );
-			assert.strictEqual( MathUtils.euclideanModulo( 6, 6 ), 0, 'Divison by itself' );
-			assert.strictEqual( MathUtils.euclideanModulo( 6, 7 ), 6, 'Divison by itself + 1' );
+			assert.strictEqual( MathUtils.euclideanModulo( 6, 1 ), 0, 'Division by trivial divisor' );
+			assert.strictEqual( MathUtils.euclideanModulo( 6, 2 ), 0, 'Division by non-trivial divisor' );
+			assert.strictEqual( MathUtils.euclideanModulo( 6, 5 ), 1, 'Division by itself - 1' );
+			assert.strictEqual( MathUtils.euclideanModulo( 6, 6 ), 0, 'Division by itself' );
+			assert.strictEqual( MathUtils.euclideanModulo( 6, 7 ), 6, 'Division by itself + 1' );
 
 		} );
 
@@ -85,7 +85,7 @@ export default QUnit.module( 'Maths', () => {
 			assert.strictEqual( MathUtils.smoothstep( 1, 0, 2 ), 0.5, 'Value within limits' );
 			assert.strictEqual( MathUtils.smoothstep( 1.5, 0, 2 ), 0.84375, 'Value within limits' );
 			assert.strictEqual( MathUtils.smoothstep( 2, 0, 2 ), 1, 'Value equal to maximum' );
-			assert.strictEqual( MathUtils.smoothstep( 3, 0, 2 ), 1, 'Value highter than maximum' );
+			assert.strictEqual( MathUtils.smoothstep( 3, 0, 2 ), 1, 'Value higher than maximum' );
 
 		} );
 
@@ -97,7 +97,7 @@ export default QUnit.module( 'Maths', () => {
 			assert.strictEqual( MathUtils.smootherstep( 1, 0, 2 ), 0.5, 'Value within limits' );
 			assert.strictEqual( MathUtils.smootherstep( 1.5, 0, 2 ), 0.896484375, 'Value within limits' );
 			assert.strictEqual( MathUtils.smootherstep( 2, 0, 2 ), 1, 'Value equal to maximum' );
-			assert.strictEqual( MathUtils.smootherstep( 3, 0, 2 ), 1, 'Value highter than maximum' );
+			assert.strictEqual( MathUtils.smootherstep( 3, 0, 2 ), 1, 'Value higher than maximum' );
 
 		} );
 

+ 5 - 5
test/unit/src/math/Ray.tests.js

@@ -302,17 +302,17 @@ export default QUnit.module( 'Maths', () => {
 			a.intersectPlane( c, point.copy( posInf3 ) );
 			assert.ok( point.equals( posInf3 ), 'Passed!' );
 
-			// parallel plane infront
+			// parallel plane in front
 			const d = new Plane().setFromNormalAndCoplanarPoint( new Vector3( 0, 0, 1 ), new Vector3( 1, 1, 1 ) );
 			a.intersectPlane( d, point.copy( posInf3 ) );
 			assert.ok( point.equals( a.origin ), 'Passed!' );
 
-			// perpendical ray that overlaps exactly
+			// perpendicular ray that overlaps exactly
 			const e = new Plane().setFromNormalAndCoplanarPoint( new Vector3( 1, 0, 0 ), one3 );
 			a.intersectPlane( e, point.copy( posInf3 ) );
 			assert.ok( point.equals( a.origin ), 'Passed!' );
 
-			// perpendical ray that doesn't overlap
+			// perpendicular ray that doesn't overlap
 			const f = new Plane().setFromNormalAndCoplanarPoint( new Vector3( 1, 0, 0 ), zero3 );
 			a.intersectPlane( f, point.copy( posInf3 ) );
 			assert.ok( point.equals( posInf3 ), 'Passed!' );
@@ -335,11 +335,11 @@ export default QUnit.module( 'Maths', () => {
 			const d = new Plane().setFromNormalAndCoplanarPoint( new Vector3( 0, 0, 1 ), one3.clone().sub( new Vector3( 0, 0, 1 ) ) );
 			assert.ok( ! a.intersectsPlane( d ), 'Passed!' );
 
-			// perpendical ray that overlaps exactly
+			// perpendicular ray that overlaps exactly
 			const e = new Plane().setFromNormalAndCoplanarPoint( new Vector3( 1, 0, 0 ), one3 );
 			assert.ok( a.intersectsPlane( e ), 'Passed!' );
 
-			// perpendical ray that doesn't overlap
+			// perpendicular ray that doesn't overlap
 			const f = new Plane().setFromNormalAndCoplanarPoint( new Vector3( 1, 0, 0 ), zero3 );
 			assert.ok( ! a.intersectsPlane( f ), 'Passed!' );
 

+ 6 - 6
test/unit/src/objects/Mesh.tests.js

@@ -120,12 +120,12 @@ export default QUnit.module( 'Objects', () => {
 
 			const intersection = intersections[ 0 ];
 
-			assert.equal( intersection.object, mesh, 'intersction object' );
-			assert.equal( intersection.distance, 1, 'intersction distance' );
-			assert.equal( intersection.faceIndex, 1, 'intersction face index' );
-			assert.deepEqual( intersection.face, { a: 0, b: 2, c: 1 }, 'intersction vertex indices' );
-			assert.deepEqual( intersection.point, new Vector3( 0.25, 0.25, 0 ), 'intersction point' );
-			assert.deepEqual( intersection.uv, new Vector2( 0.75, 0.75 ), 'intersction uv' );
+			assert.equal( intersection.object, mesh, 'intersection object' );
+			assert.equal( intersection.distance, 1, 'intersection distance' );
+			assert.equal( intersection.faceIndex, 1, 'intersection face index' );
+			assert.deepEqual( intersection.face, { a: 0, b: 2, c: 1 }, 'intersection vertex indices' );
+			assert.deepEqual( intersection.point, new Vector3( 0.25, 0.25, 0 ), 'intersection point' );
+			assert.deepEqual( intersection.uv, new Vector2( 0.75, 0.75 ), 'intersection uv' );
 
 		} );
 

+ 4 - 4
test/unit/src/renderers/webgl/WebGLExtensions.tests.js

@@ -49,7 +49,7 @@ export default QUnit.module( 'Renderers', () => {
 
 			} );
 
-			QUnit.test( 'has (with aliasses)', ( assert ) => {
+			QUnit.test( 'has (with aliases)', ( assert ) => {
 
 				const gl = new WebglContextMock( [ 'WEBKIT_WEBGL_depth_texture' ] );
 				const extensions = new WebGLExtensions( gl );
@@ -68,7 +68,7 @@ export default QUnit.module( 'Renderers', () => {
 				assert.ok( extensions.get( 'Extension2' ) );
 				assert.ok( extensions.get( 'Extension1' ) );
 
-				// surpress the following console message when testing
+				// suppress the following console message when testing
 				// THREE.WebGLRenderer: NonExistingExtension extension not supported.
 
 				console.level = CONSOLE_LEVEL.OFF;
@@ -77,14 +77,14 @@ export default QUnit.module( 'Renderers', () => {
 
 			} );
 
-			QUnit.test( 'get (with aliasses)', ( assert ) => {
+			QUnit.test( 'get (with aliases)', ( assert ) => {
 
 				const gl = new WebglContextMock( [ 'WEBKIT_WEBGL_depth_texture' ] );
 				const extensions = new WebGLExtensions( gl );
 				assert.ok( extensions.get( 'WEBGL_depth_texture' ) );
 				assert.ok( extensions.get( 'WEBKIT_WEBGL_depth_texture' ) );
 
-				// surpress the following console message when testing
+				// suppress the following console message when testing
 				// THREE.WebGLRenderer: EXT_texture_filter_anisotropic extension not supported.
 				// THREE.WebGLRenderer: NonExistingExtension extension not supported.
 

+ 2 - 2
test/unit/src/utils.tests.js

@@ -6,7 +6,7 @@ QUnit.module( 'utils', () => {
 
 	QUnit.test( 'arrayMin', ( assert ) => {
 
-		assert.equal( arrayMin( [] ), Infinity, 'Empty array return positive infinit' );
+		assert.equal( arrayMin( [] ), Infinity, 'Empty array return positive infinity' );
 		assert.equal( arrayMin( [ 5 ] ), 5, 'Single valued array should return the unique value as minimum' );
 		assert.equal( arrayMin( [ 1, 5, 10 ] ), 1, 'The array [ 1, 5, 10 ] return 1' );
 		assert.equal( arrayMin( [ 5, 1, 10 ] ), 1, 'The array [ 5, 1, 10 ] return 1' );
@@ -18,7 +18,7 @@ QUnit.module( 'utils', () => {
 
 	QUnit.test( 'arrayMax', ( assert ) => {
 
-		assert.equal( arrayMax( [] ), - Infinity, 'Empty array return negative infinit' );
+		assert.equal( arrayMax( [] ), - Infinity, 'Empty array return negative infinity' );
 		assert.equal( arrayMax( [ 5 ] ), 5, 'Single valued array should return the unique value as maximum' );
 		assert.equal( arrayMax( [ 10, 5, 1 ] ), 10, 'The array [ 10, 5, 1 ] return 10' );
 		assert.equal( arrayMax( [ 1, 10, 5 ] ), 10, 'The array [ 1, 10, 5 ] return 10' );

+ 1 - 1
test/unit/utils/qunit-utils.js

@@ -141,7 +141,7 @@ function checkGeometryJsonWriting( geom, json ) {
 
 	}
 
-	// All parameters from json should be transfered to the geometry.
+	// All parameters from json should be transferred to the geometry.
 	// json is flat. Ignore first level json properties that are not parameters.
 	const notParameters = [ 'metadata', 'uuid', 'type' ];
 	keys = Object.keys( json );

粤ICP备19079148号