Browse Source

Merge branch 'dev' into renderTargetNames

Mr.doob 8 years ago
parent
commit
6d2656766c
100 changed files with 4040 additions and 3421 deletions
  1. 2 1
      .gitignore
  2. 1 1
      LICENSE
  3. 1 1
      README.md
  4. 0 26
      bower.json
  5. 121 131
      build/three.js
  6. 340 342
      build/three.min.js
  7. 121 131
      build/three.module.js
  8. 2 2
      docs/api/Polyfills.html
  9. 2 2
      docs/api/animation/AnimationUtils.html
  10. 24 23
      docs/api/cameras/Camera.html
  11. 12 2
      docs/api/cameras/OrthographicCamera.html
  12. 12 2
      docs/api/cameras/PerspectiveCamera.html
  13. 1 1
      docs/api/constants/Core.html
  14. 0 13
      docs/api/constants/Materials.html
  15. 0 39
      docs/api/constants/Textures.html
  16. 34 8
      docs/api/core/Object3D.html
  17. 1 1
      docs/api/core/bufferAttributeTypes/BufferAttributeTypes.html
  18. 49 32
      docs/api/deprecated/DeprecatedList.html
  19. 1 1
      docs/api/extras/CurveUtils.html
  20. 1 1
      docs/api/extras/core/ShapePath.html
  21. 0 66
      docs/api/extras/curves/SplineCurve3.html
  22. 1 1
      docs/api/geometries/BoxBufferGeometry.html
  23. 1 1
      docs/api/geometries/CircleBufferGeometry.html
  24. 1 1
      docs/api/geometries/ConeBufferGeometry.html
  25. 1 1
      docs/api/geometries/CylinderBufferGeometry.html
  26. 1 1
      docs/api/geometries/DodecahedronBufferGeometry.html
  27. 4 21
      docs/api/geometries/EdgesGeometry.html
  28. 1 1
      docs/api/geometries/IcosahedronBufferGeometry.html
  29. 1 1
      docs/api/geometries/LatheBufferGeometry.html
  30. 1 1
      docs/api/geometries/OctahedronBufferGeometry.html
  31. 1 1
      docs/api/geometries/ParametricBufferGeometry.html
  32. 1 1
      docs/api/geometries/PlaneBufferGeometry.html
  33. 1 1
      docs/api/geometries/PolyhedronBufferGeometry.html
  34. 1 1
      docs/api/geometries/RingBufferGeometry.html
  35. 1 1
      docs/api/geometries/ShapeBufferGeometry.html
  36. 1 1
      docs/api/geometries/SphereBufferGeometry.html
  37. 1 1
      docs/api/geometries/TetrahedronBufferGeometry.html
  38. 138 137
      docs/api/geometries/TextGeometry.html
  39. 1 1
      docs/api/geometries/TorusBufferGeometry.html
  40. 1 1
      docs/api/geometries/TorusKnotBufferGeometry.html
  41. 12 13
      docs/api/geometries/TubeBufferGeometry.html
  42. 11 12
      docs/api/geometries/TubeGeometry.html
  43. 1 1
      docs/api/helpers/ArrowHelper.html
  44. 1 1
      docs/api/helpers/AxisHelper.html
  45. 1 1
      docs/api/helpers/BoxHelper.html
  46. 2 3
      docs/api/helpers/CameraHelper.html
  47. 1 1
      docs/api/helpers/DirectionalLightHelper.html
  48. 1 1
      docs/api/helpers/FaceNormalsHelper.html
  49. 1 1
      docs/api/helpers/GridHelper.html
  50. 1 1
      docs/api/helpers/HemisphereLightHelper.html
  51. 1 1
      docs/api/helpers/PointLightHelper.html
  52. 1 1
      docs/api/helpers/PolarGridHelper.html
  53. 1 1
      docs/api/helpers/RectAreaLightHelper.html
  54. 1 1
      docs/api/helpers/SkeletonHelper.html
  55. 1 1
      docs/api/helpers/SpotLightHelper.html
  56. 1 1
      docs/api/helpers/VertexNormalsHelper.html
  57. 32 13
      docs/api/lights/AmbientLight.html
  58. 85 30
      docs/api/lights/DirectionalLight.html
  59. 0 33
      docs/api/lights/DirectionalLightShadow.html
  60. 54 19
      docs/api/lights/HemisphereLight.html
  61. 31 15
      docs/api/lights/Light.html
  62. 0 75
      docs/api/lights/LightShadow.html
  63. 65 39
      docs/api/lights/PointLight.html
  64. 157 0
      docs/api/lights/RectAreaLight.html
  65. 101 52
      docs/api/lights/SpotLight.html
  66. 0 38
      docs/api/lights/SpotLightShadow.html
  67. 97 0
      docs/api/lights/shadows/DirectionalLightShadow.html
  68. 141 0
      docs/api/lights/shadows/LightShadow.html
  69. 54 0
      docs/api/lights/shadows/RectAreaLightShadow.html
  70. 97 0
      docs/api/lights/shadows/SpotLightShadow.html
  71. 0 62
      docs/api/loaders/BinaryTextureLoader.html
  72. 47 2
      docs/api/loaders/DataTextureLoader.html
  73. 1 1
      docs/api/loaders/MaterialLoader.html
  74. 2 2
      docs/api/loaders/managers/DefaultLoadingManager.html
  75. 3 3
      docs/api/loaders/managers/LoadingManager.html
  76. 1 1
      docs/api/materials/LineBasicMaterial.html
  77. 1 1
      docs/api/materials/LineDashedMaterial.html
  78. 1 1
      docs/api/materials/Material.html
  79. 1 1
      docs/api/materials/MeshStandardMaterial.html
  80. 7 7
      docs/api/materials/MultiMaterial.html
  81. 2 2
      docs/api/materials/PointsMaterial.html
  82. 114 127
      docs/api/math/Box2.html
  83. 161 167
      docs/api/math/Box3.html
  84. 167 142
      docs/api/math/Color.html
  85. 24 15
      docs/api/math/Cylindrical.html
  86. 114 63
      docs/api/math/Euler.html
  87. 63 46
      docs/api/math/Frustum.html
  88. 58 68
      docs/api/math/Line3.html
  89. 54 81
      docs/api/math/Math.html
  90. 116 79
      docs/api/math/Matrix3.html
  91. 300 148
      docs/api/math/Matrix4.html
  92. 105 115
      docs/api/math/Plane.html
  93. 174 110
      docs/api/math/Quaternion.html
  94. 107 101
      docs/api/math/Ray.html
  95. 61 81
      docs/api/math/Sphere.html
  96. 23 18
      docs/api/math/Spherical.html
  97. 0 69
      docs/api/math/Spline.html
  98. 57 76
      docs/api/math/Triangle.html
  99. 196 178
      docs/api/math/Vector2.html
  100. 244 298
      docs/api/math/Vector3.html

+ 2 - 1
.gitignore

@@ -2,4 +2,5 @@
 *.swp
 .project
 node_modules
-.idea/
+.idea/
+npm-debug.log

+ 1 - 1
LICENSE

@@ -1,6 +1,6 @@
 The MIT License
 
-Copyright © 2010-2016 three.js authors
+Copyright © 2010-2017 three.js authors
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal

+ 1 - 1
README.md

@@ -13,7 +13,7 @@ The aim of the project is to create an easy to use, lightweight, 3D library. The
 [Examples](http://threejs.org/examples/) —
 [Documentation](http://threejs.org/docs/) —
 [Wiki](https://github.com/mrdoob/three.js/wiki) —
-[Migrating](https://github.com/mrdoob/three.js/wiki/Migration) —
+[Migrating](https://github.com/mrdoob/three.js/wiki/Migration-Guide) —
 [Help](http://stackoverflow.com/questions/tagged/three.js)
 
 ### Usage ###

+ 0 - 26
bower.json

@@ -1,26 +0,0 @@
-{
-	"name": "three.js",
-	"homepage": "http://threejs.org/",
-	"description": "JavaScript 3D library",
-	"main": "build/three.js",
-	"keywords": [
-		"three",
-		"threejs",
-		"three.js",
-		"3D",
-		"webgl"
-	],
-	"license": "MIT",
-	"ignore": [
-		"**/.*",
-		"*.md",
-		"/docs",
-		"/editor",
-		"/examples/*",
-		"!/examples/js",
-		"/src",
-		"/test",
-		"/utils",
-		"/LICENSE"
-	]
-}

File diff suppressed because it is too large
+ 121 - 131
build/three.js


File diff suppressed because it is too large
+ 340 - 342
build/three.min.js


File diff suppressed because it is too large
+ 121 - 131
build/three.module.js


+ 2 - 2
docs/api/Polyfills.html

@@ -11,7 +11,7 @@
 
 		<h1>Polyfills</h1>
 
-		<div class="desc">Three includes polyfills for the following functions and constants.</div>
+		<div class="desc">Three.js includes polyfills for the following functions and constants.</div>
 
 		<h3>[page:Number.EPSILON Number.EPSILON]</h3>
 		<div>
@@ -41,6 +41,6 @@
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/polyfills.js src/polyfills.js]
 	</body>
 </html>

+ 2 - 2
docs/api/animation/AnimationUtils.html

@@ -18,12 +18,12 @@
 
     <h3>[method:Array arraySlice]( array, from, to )</h3>
     <div>
-    Convert an array to a specific type.
+    This is the same as  Array.prototype.slice, but also works on typed arrays.
     </div>
 
     <h3>[method:Array convertArray]( array, type, forceClone )</h3>
     <div>
-    This is the same as  Array.prototype.slice, but also works on typed arrays.
+    Convert an array to a specific type.
     </div>
 
     <h3>[method:Boolean isTypedArray]( object )</h3>

+ 24 - 23
docs/api/cameras/Camera.html

@@ -12,7 +12,9 @@
 
 		<h1>[name]</h1>
 
-		<div class="desc">Abstract base class for cameras. This class should always be inherited when you build a new camera.</div>
+		<div class="desc">
+			Abstract base class for cameras. This class should always be inherited when you build a new camera.
+		</div>
 
 
 		<h2>Constructor</h2>
@@ -20,9 +22,8 @@
 
 		<h3>[name]()</h3>
 		<div>
-			This constructor sets the following properties to the correct type:
-			[page:Camera.matrixWorldInverse matrixWorldInverse] and [page:Camera.projectionMatrix projectionMatrix].
-
+			Creates a new [name]. Note that this class is not intended to be called directly;
+			you probably want a [page:PerspectiveCamera] or [page:OrthographicCamera] instead.
 		</div>
 
 
@@ -36,6 +37,15 @@
 			You should not change this, as it used internally by the renderer for optimisation.
 		</div>
 
+		<h3>[property:Layers layers]</h3>
+		<div>
+		The [page:Layers layers] that the camera is a member of. This is an inherited
+		property from [page:Object3D].<br /><br />
+
+		Objects must share at least one layer with the camera to be seen
+		when the camera's viewpoint is rendered.
+		</div>
+
 		<h3>[property:Matrix4 matrixWorldInverse]</h3>
 		<div>
 			This is the inverse of matrixWorld. MatrixWorld contains the Matrix which has
@@ -45,28 +55,27 @@
 		<h3>[property:Matrix4 projectionMatrix]</h3>
 		<div>This is the matrix which contains the projection.</div>
 
-		<h3>[property:Layers layers]</h3>
-		<div>
-		The [page:Layers layers] that the camera is a member of. This is an inherited
-		property from [page:Object3D].<br /><br />
 
-		Objects must share at least one layer with the camera to be seen
-		when the camera's viewpoint is rendered.
+		<h2>Methods</h2>
+		<div>See the base [page:Object3D] class for common methods.</div>
+
+		<h3>[method:Camera clone]( )</h3>
+		<div>
+			Return a new camera with the same properties as this one.
 		</div>
 
-		<h2>Methods</h2>
-		<div>See the base [page:Objct3D] class for common methods.</div>
+		<h3>[method:Camera copy]( [page:Camera source] )</h3>
+		<div>
+		Copy the properties from the source camera into this one.
+		</div>
 
 		<h3>[method:Vector3 getWorldDirection]( [page:Vector3 optionalTarget] )</h3>
 		<div>
-		vector — (optional)<br /><br />
-
 		Returns a vector representing the direction in which the camera is looking,
 		in world space. If the [page:Vector3 optionalTarget] is set, returns a vector representing the direction
 		from the camera's position to the [page:Vector3 optionalTarget].
 		</div>
 
-
 		<h3>[method:null lookAt]( [page:Vector3 target] )</h3>
 		<div>
 		target — position in 3D space for the camera to point towards<br /><br />
@@ -75,14 +84,6 @@
 		the parent of this camera is the scene or at position (0,0,0).
 		</div>
 
-		<h3>[method:Camera clone]( [page:Camera camera] )</h3>
-		<div>
-		camera — camera to clone<br /><br />
-
-		Returns a clone of camera.
-		</div>
-
-
 		<h2>Source</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

+ 12 - 2
docs/api/cameras/OrthographicCamera.html

@@ -64,7 +64,11 @@ scene.add( camera );</code>
 		<div>Camera frustum bottom plane.</div>
 
 		<h3>[property:Float far]</h3>
-		<div>Camera frustum far plane. Default is *2000*.</div>
+		<div>
+		Camera frustum far plane. Default is *2000*.<br /><br />
+
+		The valid range is between the current value of the [page:.near near] plane and infinity.
+		</div>
 
 		<h3>[property:Boolean isOrthographicCamera]</h3>
 		<div>
@@ -77,7 +81,13 @@ scene.add( camera );</code>
 		<div>Camera frustum left plane.</div>
 
 		<h3>[property:Float near]</h3>
-		<div>Camera frustum near plane. Default is *0.1*.</div>
+		<div>
+			Camera frustum near plane. Default is *0.1*.<br /><br />
+
+			The valid range is between 0 and the current value of the [page:.far far] plane.
+			Note that, unlike for the [page:PerspectiveCamera], *0* is a valid value for an
+			OrthographicCamera's near plane.
+		</div>
 
 		<h3>[property:Float right]</h3>
 		<div>Camera frustum right plane.</div>

+ 12 - 2
docs/api/cameras/PerspectiveCamera.html

@@ -54,7 +54,11 @@ scene.add( camera );</code>
 		<div>Camera frustum aspect ratio, usually the canvas width / canvas height. Default is *1* (square canvas).</div>
 
 		<h3>[property:Float far]</h3>
-		<div>Camera frustum far plane. Default is *2000*.</div>
+		<div>
+			Camera frustum far plane. Default is *2000*.<br /><br />
+
+			The valid range is between the current value of the [page:.near near] plane and infinity.
+		</div>
 
 		<h3>[property:Float filmGauge]</h3>
 		<div>Film size used for the larger axis. Default is 35 (millimeters). This parameter does not influence the projection matrix unless .filmOffset is set to a nonzero value.</div>
@@ -80,7 +84,13 @@ scene.add( camera );</code>
 
 
 		<h3>[property:Float near]</h3>
-		<div>Camera frustum near plane. Default is *0.1*.</div>
+		<div>
+			Camera frustum near plane. Default is *0.1*.<br /><br />
+
+			The valid range is greater than 0 and less than the current value of the [page:.far far] plane.
+			Note that, unlike for the [page:OrthographicCamera], *0* is <em>not</em> a valid value
+			for a PerspectiveCamera's near plane.
+		</div>
 
 		<h3>[property:Object view]</h3>
 		<div>

+ 1 - 1
docs/api/constants/Core.html

@@ -17,7 +17,7 @@
 		</code>
 
 		<div id="rev">
-			The current Three.js [link:https://github.com/mrdoob/three.js/releases revision number].
+			The current three.js [link:https://github.com/mrdoob/three.js/releases revision number].
 		</div>
 
     <h2>Mouse Buttons</h2>

+ 0 - 13
docs/api/constants/Materials.html

@@ -61,19 +61,6 @@
 		THREE.CustomBlending
 		</code>
 
-		<div>
-			These can also be accessed using:
-		</div>
-		
-		<code>
-		THREE.BlendingMode.NoBlending
-		THREE.BlendingMode.NormalBlending
-		THREE.BlendingMode.AdditiveBlending
-		THREE.BlendingMode.SubtractiveBlending
-		THREE.BlendingMode.MultiplyBlending
-		THREE.BlendingMode.CustomBlending
-		</code>
-
 
 		<div>
 		These control the source and destination blending equations for the material's RGB and Alpha sent to the WebGLRenderer for use by WebGL.<br />

+ 0 - 39
docs/api/constants/Textures.html

@@ -21,19 +21,6 @@
 		THREE.CubeUVReflectionMapping
 		THREE.CubeUVRefractionMapping
 		</code>
-		<div>
-			These can also be accessed using:
-		</div>
-		<code>
-		THREE.TextureMappingUVMapping
-		THREE.TextureMapping.CubeReflectionMapping
-		THREE.TextureMapping.CubeRefractionMapping
-		THREE.TextureMapping.EquirectangularReflectionMapping
-		THREE.TextureMapping.EquirectangularRefractionMapping
-		THREE.TextureMapping.SphericalReflectionMapping
-		THREE.TextureMapping.CubeUVReflectionMapping
-		THREE.TextureMapping.CubeUVRefractionMapping
-		</code>
 
 		<div>
 		These define the texture's mapping mode.<br />
@@ -60,14 +47,6 @@
 		THREE.ClampToEdgeWrapping
 		THREE.MirroredRepeatWrapping
 		</code>
-		<div>
-			These can also be accessed using:
-		</div>
-		<code>
-		THREE.TextureWrapping.RepeatWrapping
-		THREE.TextureWrapping.ClampToEdgeWrapping
-		THREE.TextureWrapping.MirroredRepeatWrapping
-		</code>
 		<div>
 		These define the texture's [page:Texture.wrapS wrapS] and [page:Texture.wrapT wrapT] properties,
 		which define horizontal and vertical texture wrapping.<br /><br />
@@ -85,13 +64,6 @@
 		THREE.NearestFilter
 		THREE.LinearFilter
 		</code>
-		<div>
-			These can also be accessed using:
-		</div>
-		<code>
-		THREE.TextureFilter.NearestFilter
-		THREE.TextureFilter.LinearFilter
-		</code>
 
 		<div>
 		For use with a texture's [page:Texture.magFilter magFilter]	property,
@@ -116,17 +88,6 @@
 		THREE.LinearMipMapNearestFilter
 		THREE.LinearMipMapLinearFilter
 		</code>
-		<div>
-			These can also be accessed using:
-		</div>
-		<code>
-		THREE.TextureFilter.NearestFilter
-		THREE.TextureFilter.NearestMipMapNearestFilter
-		THREE.TextureFilter.NearestMipMapLinearFilter
-		THREE.TextureFilter.LinearFilter
-		THREE.TextureFilter.LinearMipMapNearestFilter
-		THREE.TextureFilter.LinearMipMapLinearFilter
-		</code>
 
 		<div>
 		For use with a texture's [page:Texture.minFilter minFilter]	property, these define

+ 34 - 8
docs/api/core/Object3D.html

@@ -11,7 +11,7 @@
 		<h1>[name]</h1>
 
 		<div class="desc">
-			This is the base class for most objects in Three and provides a set of properties and methods
+			This is the base class for most objects in three.js and provides a set of properties and methods
 			for manipulating objects in 3D space.<br /><br />
 
 			Note that this can be used for grouping objects via the [page:.add]( object ) method
@@ -64,7 +64,7 @@
 		<h3>[property:Boolean matrixAutoUpdate]</h3>
 		<div>
 		When this is set, it calculates the matrix of position, (rotation or quaternion) and
-		scale every frame and also recalculates the matrixWorld property. Default is *true*.
+		scale every frame and also recalculates the matrixWorld property. Default is [page:Object3D.DefaultMatrixAutoUpdate] (true).
 		</div>
 
 		<h3>[property:Matrix4 matrixWorld]</h3>
@@ -132,7 +132,10 @@
 		</div>
 
 		<h3>[property:Vector3 up]</h3>
-		<div>Up direction. Default is [page:Vector3]( 0, 1, 0 ).</div>
+		<div>
+		This is used by the [page:.lookAt lookAt] method, for example, to determine the orientation of the result.<br />
+		Default is [page:Object3D.DefaultUp] - that is, ( 0, 1, 0 ).
+		</div>
 
 		<h3>[property:object userData]</h3>
 		<div>
@@ -152,7 +155,27 @@
 
 
 
+		<h2>Static Properties</h2>
+		<div>
+			Static properties and methods are defined per class rather than per instance of that class.
+			This means that changing [page:Object3D.DefaultUp] or [page:Object3D.DefaultMatrixAutoUpdate]
+			will change the values of [page:.up up] and [page:.matrixAutoUpdate matrixAutoUpdate] for
+			<em>every</em>	instance of Object3D (or derived classes)	created after the change has
+			been made (already created Object3Ds will not be affected).
+		</div>
+
+		<h3>[property:Vector3 DefaultUp]</h3>
+		<div>
+			The default [page:.up up] direction for objects, also used as the default position for [page:DirectionalLight],
+			[page:HemisphereLight] and [page:Spotlight] (which creates lights shining from the top down).<br />
+			Set to (0, 1, 0) by default.
+		</div>
+
+		<h3>[property:Vector3 DefaultMatrixAutoUpdate]</h3>
+		<div>
+			The default setting for [page.matrixAutoUpdate matrixAutoUpdate] for newly created Object3Ds.<br />
 
+		</div>
 
 
 		<h2>Methods</h2>
@@ -217,29 +240,32 @@
 
 		<h3>[method:Quaternion getWorldQuaternion]( [page:Quaternion optionalTarget] )</h3>
 		<div>
-		optionalTarget — (optional) target to set the result. Otherwise, a new [page:Quaternion] is
-		 instantiated. <br /><br />
+		optionalTarget — (optional) if specified, the result will be copied into this Quaternion,
+		otherwise a new Quaternion will be created. <br /><br />
 
 		Returns a quaternion representing the rotation of the object in world space.
 		</div>
 
 		<h3>[method:Euler getWorldRotation]( [page:Euler optionalTarget] )</h3>
 		<div>
-		optionalTarget — (optional) target to set the result. Otherwise, a new [page:Euler] is instantiated.<br /><br />
+		optionalTarget — (optional) if specified, the result will be copied into this Euler,
+		otherwise a new Euler will be created. <br /><br />
 
 		Returns the euler angles representing the rotation of the object in world space.
 		</div>
 
 		<h3>[method:Vector3 getWorldScale]( [page:Vector3 optionalTarget] )</h3>
 		<div>
-		optionalTarget — (optional) target to set the result. Otherwise, a new [page:Vector3] is instantiated.<br /><br />
+		[page:Vector3 optionalTarget] — (optional) if specified, the result will be copied into this Vector3,
+		otherwise a new Vector3 will be created. <br /><br />
 
 		Returns a vector of the scaling factors applied to the object for each axis in world space.
 		</div>
 
 		<h3>[method:Vector3 getWorldDirection]( [page:Vector3 optionalTarget] )</h3>
 		<div>
-		optionalTarget — (optional) target to set the result. Otherwise, a new [page:Vector3] is instantiated.<br /><br />
+		[page:Vector3 optionalTarget] — (optional) if specified, the result will be copied into this Vector3,
+		otherwise a new Vector3 will be created. <br /><br />
 
 		Returns a vector representing the direction of object's positive z-axis in world space.
 		</div>

+ 1 - 1
docs/api/core/bufferAttributeTypes/BufferAttributeTypes.html

@@ -13,7 +13,7 @@
 		<h1>BufferAttribute Types</h1>
 
 		<div class="desc">
-		There are nine types of [page:BufferAttribute] available in Three. These correspond to the JavaScript
+		There are nine types of [page:BufferAttribute] available in three.js. These correspond to the JavaScript
 		[link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Syntax Typed Arrays].
 		</div>
 

+ 49 - 32
docs/api/deprecated/DeprecatedList.html

@@ -11,7 +11,7 @@
 		<h1>Deprecated API List</h1>
 
 		<div>
-			As Three.js has a rapidly evolving interface, you may come across examples that
+			As three.js has a rapidly evolving interface, you may come across examples that
 			suggest the use of API elements that are no longer part of the core.<br /><br />
 
 			Below is a list of such elements, along with info regarding their replacements.
@@ -34,6 +34,8 @@
 		<h3>[page:AudioAnalyser]</h3>
 		<div>AudioAnalyser.getData() has been renamed to [page:AudioAnalyser.getFrequencyData]().</div>
 
+		<h3>[page:BinaryTextureLoader]</h3>
+		<div>BinaryTextureLoader has been renamed to [page:DataTextureLoader].</div>
 
 
 
@@ -117,7 +119,7 @@
 		<h2>Core</h2>
 
 		<h3>[page:EventDispatcher]</h3>
-		<div>EventDispatcher.apply has been has been removed. Inherit or Object.assign the prototype to mix-in instead.</div>
+		<div>EventDispatcher.apply has been removed. Inherit or Object.assign the prototype to mix-in instead.</div>
 
 		<h3>[page:Raycaster]</h3>
 		<div>Raycaster.params.PointCloud has been renamed to [page:Raycaster.params.Points].</div>
@@ -125,9 +127,9 @@
 
 		<h3>[page:Uniform]</h3>
 		<div>
-			Uniform.dynamic has been has been removed. Use object.onBeforeRender() instead.<br /><br />
+			Uniform.dynamic has been removed. Use object.onBeforeRender() instead.<br /><br />
 
-			Uniform.onUpdate has been has been removed. Use object.onBeforeRender() instead.
+			Uniform.onUpdate has been removed. Use object.onBeforeRender() instead.
 		</div>
 
 
@@ -140,6 +142,8 @@
 		<h3>[page:ClosedSplineCurve3]</h3>
 		<div>ClosedSplineCurve3 has been deprecated. Use [page:CatmullRomCurve3] instead.</div>
 
+		<h3>[page:SplineCurve3]</h3>
+		<div>SplineCurve3 has been deprecated. Use [page:CatmullRomCurve3] instead.</div>
 
 
 
@@ -297,12 +301,16 @@
 
 			Matrix3.multiplyVector3 has been removed. Use vector.applyMatrix3( matrix ) instead.<br /><br />
 
-			Matrix3.multiplyVector3Array has been renamed to [page:Matrix3.applyToVector3Array]( array ).
+			Matrix3.multiplyVector3Array has been renamed to [page:Matrix3.applyToVector3Array]( array ).<br /><br />
+
+			Matrix3.applyToBuffer has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.<br /><br />
+
+			Matrix3.applyToVector3Array has been removed.
 		<div>
 
 		<h3>[page:Matrix4]</h3>
 		<div>
-			Matrix4.flattenToArrayOffset is deprecated. Use [page:Matrix4.toArray]() instead.<br /><br />
+			Matrix4.flattenToArrayOffset() is deprecated. Use [page:Matrix4.toArray]() instead.<br /><br />
 
 			Matrix4.extractPosition() has been renamed to [page:Matrix4.copyPosition]( matrix ).<br /><br />
 
@@ -310,24 +318,29 @@
 
 			Matrix4.setRotationFromQuaternion() has been renamed to [page:Matrix4.makeRotationFromQuaternion]( quaternion ).<br /><br />
 
-			Matrix4.multiplyVector3 has been has been removed. Use vector.applyMatrix4( matrix )
-			or vector.applyProjection( matrix ) instead.<br /><br />
+			Matrix4.multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.<br /><br />
+
+			Matrix4.multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.<br /><br />
+
+			Matrix4.multiplyVector3Array() has been renamed to [page:Matrix4.applyToVector3Array] ( array ).<br /><br />
 
-			Matrix4.multiplyVector4 has been removed. Use vector.applyMatrix4( matrix ) instead.<br /><br />
+			Matrix4.rotateAxis() has been removed. Use [page:Matrix4.transformDirection]( matrix ) instead.<br /><br />
 
-			Matrix4.multiplyVector3Array has been renamed to [page:Matrix4.applyToVector3Array] (array ).<br /><br />
+			Matrix4.crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.<br /><br />
 
-			Matrix4.rotateAxis has been removed. Use [page:Matrix4.transformDirection]( matrix ) instead.<br /><br />
+			Matrix4.rotateX() has been removed.<br /><br />
 
-			Matrix4.crossVector has been removed. Use vector.applyMatrix4( matrix ) instead.<br /><br />
+			Matrix4.rotateY() has been removed.<br /><br />
 
-			Matrix4.rotateX has been removed.<br /><br />
+			Matrix4.rotateZ() has been removed.<br /><br />
 
-			Matrix4.rotateY has been removed.<br /><br />
+			Matrix4.rotateByAxis() has been removed.<br /><br />
 
-			Matrix4.rotateZ has been removed.<br /><br />
+			Matrix4.applyToBuffer() has been removed. Use matrix.applyToBufferAttribute() instead.<br /><br />
 
-			Matrix4.rotateByAxis has been removed.
+			Matrix4.applyToVector3Array() has been removed.<br /><br />
+
+			Matrix4.makeFrustum() has been removed. Use [page:Matrix4.makePerspective]( left, right, top, bottom, near, far ) instead.
 		</div>
 
 
@@ -343,6 +356,10 @@
 			Ray.isIntersectionSphere has been renamed to [page:Ray.intersectsSphere].
 		</div>
 
+		<h3>[page:Vector2]</h3>
+		<div>
+			Vector2.fromAttribute() has been renamed to [page:Vector2.fromBufferAttribute]().
+		</div>
 
 		<h3>[page:Vector3]</h3>
 		<div>
@@ -354,12 +371,24 @@
 
 			Vector3.getScaleFromMatrix() has been renamed to [page:Vector3.setFromMatrixScale]().<br /><br />
 
-			Vector3.getColumnFromMatrix() has been renamed to [page:Vector3.setFromMatrixColumn]().
+			Vector3.getColumnFromMatrix() has been renamed to [page:Vector3.setFromMatrixColumn]().<br /><br />
+
+			Vector3.applyProjection() has been removed. Use [page:Vector3.applyMatrix4]() instead.<br /><br />
+
+			Vector3.fromAttribute() has been renamed to [page:Vector3.fromBufferAttribute]().
+		</div>
+
+		<h3>[page:Vector4]</h3>
+		<div>
+			Vector4.fromAttribute() has been renamed to [page:Vector4.fromBufferAttribute]().
 		</div>
 
 		<h3>[page:Vertex]</h3>
 		<div>Vertex has been removed. Use [page:Vector3] instead.</div>
 
+		<h3>[page:Spline]</h3>
+		<div>Spline has been removed. Use [page:CatmullRomCurve3] instead.</div>
+
 
 
 
@@ -542,21 +571,6 @@
 
 
 
-		<h2>Shaders</h2>
-
-		<h3>[page:UniformsUtils]</h3>
-		<div>
-			UniformsUtils.merge() has been deprecated. Use Object.assign() instead.<br /><br />
-
-			UniformsUtils.clone() has been deprecated.
-		</div>
-
-
-
-
-
-
-
 		<h2>Textures</h2>
 
 		<h3>[page:ImageUtils]</h3>
@@ -571,6 +585,9 @@
 		</div>
 
 
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/Three.Legacy.js src/Three.Legacy.js]
 
 
 		</body>

+ 1 - 1
docs/api/extras/CurveUtils.html

@@ -25,7 +25,7 @@
 		t -- interpolation weight. <br />
 		p0, p1, p2, p4 -- the points defining the spline curve.<br /><br />
 
-		Used internally by [page:SplineCurve SplineCurve] and [page:SplineCurve3 SplineCurve3].
+		Used internally by [page:SplineCurve SplineCurve].
 		</div>
 
 		<h3>[method:Number tangentQuadraticBezier]( t, p0, p1, p2 )</h3>

+ 1 - 1
docs/api/extras/core/ShapePath.html

@@ -86,6 +86,6 @@
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/extras/core/Path.js src/extras/core/Path.js]
 	</body>
 </html>

+ 0 - 66
docs/api/extras/curves/SplineCurve3.html

@@ -1,66 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		[page:Curve] &rarr;
-
-		<h1>[name]</h1>
-
-		<div class="desc">
-			Create a smooth 3d spline curve from a series of points. Internally this uses
-		[page:CurveUtils.interpolate] to create the curve.<br /><br />
-
-		Note that this will be deprecated. Please use a [page:CatmullRomCurve3] instead.
-
-	</div>
-
-		<h2>Example</h2>
-
-		<div>[example:webgl_geometry_extrude_splines geometry / extrude / splines ] (choose PipeSpline)</div>
-
-		<code>
-//Create a closed bent a sine-like wave
-var curve = new THREE.SplineCurve3( [
-	new THREE.Vector3( -10, 0, 10 ),
-	new THREE.Vector3( -5, 5, 5 ),
-	new THREE.Vector3( 0, 0, 0 ),
-	new THREE.Vector3( 5, -5, 5 ),
-	new THREE.Vector3( 10, 0, 10 )
-] );
-
-var geometry = new THREE.Geometry();
-geometry.vertices = curve.getPoints( 50 );
-
-var material = new THREE.LineBasicMaterial( { color : 0xff0000 } );
-
-//Create the final object to add to the scene
-var splineObject = new THREE.Line( geometry, material );
-	</code>
-
-
-
-
-		<h2>Constructor</h2>
-
-
-		<h3>[name]( [page:Array points] )</h3>
-		<div>points – An array of [page:Vector3] points that define the curve.</div>
-
-
-		<h2>Properties</h2>
-
-		<h3>[property:Array points]</h3>
-
-		<h2>Methods</h2>
-
-		<h3>See [page:Curve] for inherited methods</h3>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-	</body>
-</html>

+ 1 - 1
docs/api/geometries/BoxBufferGeometry.html

@@ -67,6 +67,6 @@
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/geometries/BoxGeometry.js src/geometries/BoxGeometry.js]
 	</body>
 </html>

+ 1 - 1
docs/api/geometries/CircleBufferGeometry.html

@@ -53,6 +53,6 @@
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/geometries/CircleGeometry.js src/geometries/CircleGeometry.js]
 	</body>
 </html>

+ 1 - 1
docs/api/geometries/ConeBufferGeometry.html

@@ -61,6 +61,6 @@
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/geometries/ConeGeometry.js src/geometries/ConeGeometry.js]
 	</body>
 </html>

+ 1 - 1
docs/api/geometries/CylinderBufferGeometry.html

@@ -62,6 +62,6 @@
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/geometries/CylinderGeometry.js src/geometries/CylinderGeometry.js]
 	</body>
 </html>

+ 1 - 1
docs/api/geometries/DodecahedronBufferGeometry.html

@@ -49,6 +49,6 @@
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/geometries/DodecahedronGeometry.js src/geometries/DodecahedronGeometry.js]
 	</body>
 </html>

+ 4 - 21
docs/api/geometries/EdgesGeometry.html

@@ -14,24 +14,6 @@
 
 		<div class="desc">This can be used as a helper object to view the edges of a [page:Geometry Geometry] object.</div>
 
-		<!-- <iframe id="scene" src="scenes/geometry-browser.html#EdgeGeometry"></iframe>
-
-		<script>
-
-		// iOS iframe auto-resize workaround
-
-		if ( /(iPad|iPhone|iPod)/g.test( navigator.userAgent ) ) {
-
-			var scene = document.getElementById( 'scene' );
-
-			scene.style.width = getComputedStyle( scene ).width;
-			scene.style.height = getComputedStyle( scene ).height;
-			scene.setAttribute( 'scrolling', 'no' );
-
-		}
-
-		</script> -->
-
 		<h2>Example</h2>
 
 		[example:webgl_helpers helpers]
@@ -39,15 +21,16 @@
 		<code>
 var geometry = new THREE.BoxBufferGeometry( 100, 100, 100 );
 var edges = new THREE.EdgesGeometry( geometry );
-var line = new THREE.LineSegments( edges );
+var line = new THREE.LineSegments( edges, new THREE.LineBasicMaterial( { color: 0xffffff } ) );
 scene.add( line );
 		</code>
 
 		<h2>Constructor</h2>
 
-		<h3>[name]( [page:Geometry geometry] )</h3>
+		<h3>[name]( [page:Geometry geometry], [page:Integer thresholdAngle] )</h3>
 		<div>
-		geometry — any geometry object.
+		geometry — Any geometry object.<br />
+		thresholdAngle — An edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.
 		</div>
 
 		<h2>Source</h2>

+ 1 - 1
docs/api/geometries/IcosahedronBufferGeometry.html

@@ -48,6 +48,6 @@
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/geometries/IcosahedronGeometry.js src/geometries/IcosahedronGeometry.js]
 	</body>
 </html>

+ 1 - 1
docs/api/geometries/LatheBufferGeometry.html

@@ -60,6 +60,6 @@
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/geometries/LatheGeometry.js src/geometries/LatheGeometry.js]
 	</body>
 </html>

+ 1 - 1
docs/api/geometries/OctahedronBufferGeometry.html

@@ -48,6 +48,6 @@
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/geometries/OctahedronGeometry.js src/geometries/OctahedronGeometry.js]
 	</body>
 </html>

+ 1 - 1
docs/api/geometries/ParametricBufferGeometry.html

@@ -55,6 +55,6 @@
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/geometries/ParametricGeometry.js src/geometries/ParametricGeometry.js]
 	</body>
 </html>

+ 1 - 1
docs/api/geometries/PlaneBufferGeometry.html

@@ -58,6 +58,6 @@
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/geometries/PlaneGeometry.js src/geometries/PlaneGeometry.js]
 	</body>
 </html>

+ 1 - 1
docs/api/geometries/PolyhedronBufferGeometry.html

@@ -59,6 +59,6 @@ var geometry = new THREE.PolyhedronBufferGeometry( verticesOfCube, indicesOfFace
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/geometries/PolyhedronGeometry.js src/geometries/PolyhedronGeometry.js]
 	</body>
 </html>

+ 1 - 1
docs/api/geometries/RingBufferGeometry.html

@@ -54,6 +54,6 @@
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/geometries/RingGeometry.js src/geometries/RingGeometry.js]
 	</body>
 </html>

+ 1 - 1
docs/api/geometries/ShapeBufferGeometry.html

@@ -66,6 +66,6 @@
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/geometries/ShapeGeometry.js src/geometries/ShapeGeometry.js]
 	</body>
 </html>

+ 1 - 1
docs/api/geometries/SphereBufferGeometry.html

@@ -66,6 +66,6 @@
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/geometries/SphereGeometry.js src/geometries/SphereGeometry.js]
 	</body>
 </html>

+ 1 - 1
docs/api/geometries/TetrahedronBufferGeometry.html

@@ -49,6 +49,6 @@
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/geometries/TetrahedronGeometry.js src/geometries/TetrahedronGeometry.js]
 	</body>
 </html>

+ 138 - 137
docs/api/geometries/TextGeometry.html

@@ -1,138 +1,139 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
+<!DOCTYPE html>
+<html lang="en">
+	<head>
 		<meta charset="utf-8" />
-		<base href="../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		[page:ExtrudeGeometry] &rarr;
-
-		<h1>[name]</h1>
-
-		<div class="desc">This object creates a 3D object of text as a single object.</div>
-
-		<iframe id="scene" src="scenes/geometry-browser.html#TextGeometry"></iframe>
-
-		<script>
-
-		// iOS iframe auto-resize workaround
-
-		if ( /(iPad|iPhone|iPod)/g.test( navigator.userAgent ) ) {
-
-			var scene = document.getElementById( 'scene' );
-
-			scene.style.width = getComputedStyle( scene ).width;
-			scene.style.height = getComputedStyle( scene ).height;
-			scene.setAttribute( 'scrolling', 'no' );
-
-		}
-
-		</script>
-
-		<h2>Example</h2>
-
-		<div>
-		[example:webgl_geometry_text geometry / text ]<br/>
-		[example:webgl_geometry_text2 geometry / text2 ]
-		</div>
-
-		<h2>Constructor</h2>
-
-		<h3>[name]([page:String text], [page:Object parameters])</h3>
-		<div>
-		text — The text that needs to be shown. <br />
-		parameters — Object that can contains the following parameters.
-		<ul>
-			<li>font — THREE.Font.</li>
-			<li>size — Float. Size of the text.</li>
-			<li>height — Float. Thickness to extrude text.  Default is 50.</li>
-			<li>curveSegments — Integer. Number of points on the curves. Default is 12.</li>
-			<li>bevelEnabled — Boolean. Turn on bevel. Default is False.</li>
-			<li>bevelThickness — Float. How deep into text bevel goes. Default is 10.</li>
-			<li>bevelSize — Float. How far from text outline is bevel. Default is 8.</li>
-		</ul>
-		</div>
-
-		<h2>Available Fonts</h2>
-
-		<div>
-		TextGeometry uses <a href='http://gero3.github.io/facetype.js/' target="_top">typeface.json</a> generated fonts.
-		Some existing fonts can be found located in <b>/examples/fonts</b> and must be included in the page.
-		</div>
-		<table>
-			<tr>
-				<th>Font</th>
-				<th>Weight</th>
-				<th>Style</th>
-				<th>File Path</th>
-			</tr>
-			<tr>
-				<td>helvetiker</td>
-				<td>normal</td>
-				<td>normal</td>
-				<td>/examples/fonts/helvetiker_regular.typeface.json</td>
-			</tr>
-			<tr>
-				<td>helvetiker</td>
-				<td>bold</td>
-				<td>normal</td>
-				<td>/examples/fonts/helvetiker_bold.typeface.json</td>
-			</tr>
-			<tr>
-				<td>optimer</td>
-				<td>normal</td>
-				<td>normal</td>
-				<td>/examples/fonts/optimer_regular.typeface.json</td>
-			</tr>
-			<tr>
-				<td>optimer</td>
-				<td>bold</td>
-				<td>normal</td>
-				<td>/examples/fonts/optimer_bold.typeface.json</td>
-			</tr>
-			<tr>
-				<td>gentilis</td>
-				<td>normal</td>
-				<td>normal</td>
-				<td>/examples/fonts/gentilis_regular.typeface.json</td>
-			</tr>
-			<tr>
-				<td>gentilis</td>
-				<td>bold</td>
-				<td>normal</td>
-				<td>/examples/fonts/gentilis_bold.typeface.json</td>
-			</tr>
-			<tr>
-				<td>droid sans</td>
-				<td>normal</td>
-				<td>normal</td>
-				<td>/examples/fonts/droid/droid_sans_regular.typeface.json</td>
-			</tr>
-			<tr>
-				<td>droid sans</td>
-				<td>bold</td>
-				<td>normal</td>
-				<td>/examples/fonts/droid/droid_sans_bold.typeface.json</td>
-			</tr>
-			<tr>
-				<td>droid serif</td>
-				<td>normal</td>
-				<td>normal</td>
-				<td>/examples/fonts/droid/droid_serif_regular.typeface.json</td>
-			</tr>
-			<tr>
-				<td>droid serif</td>
-				<td>bold</td>
-				<td>normal</td>
-				<td>/examples/fonts/droid/droid_serif_bold.typeface.json</td>
-			</tr>
-		</table>
-
-		<h2>Source</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-	</body>
-</html>
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:ExtrudeGeometry] &rarr;
+
+		<h1>[name]</h1>
+
+		<div class="desc">This object creates a 3D object of text as a single object.</div>
+
+		<iframe id="scene" src="scenes/geometry-browser.html#TextGeometry"></iframe>
+
+		<script>
+
+		// iOS iframe auto-resize workaround
+
+		if ( /(iPad|iPhone|iPod)/g.test( navigator.userAgent ) ) {
+
+			var scene = document.getElementById( 'scene' );
+
+			scene.style.width = getComputedStyle( scene ).width;
+			scene.style.height = getComputedStyle( scene ).height;
+			scene.setAttribute( 'scrolling', 'no' );
+
+		}
+
+		</script>
+
+		<h2>Example</h2>
+
+		<div>
+		[example:webgl_geometry_text geometry / text ]<br/>
+		[example:webgl_geometry_text2 geometry / text2 ]
+		</div>
+
+		<h2>Constructor</h2>
+
+		<h3>[name]([page:String text], [page:Object parameters])</h3>
+		<div>
+		text — The text that needs to be shown. <br />
+		parameters — Object that can contains the following parameters.
+		<ul>
+			<li>font — THREE.Font.</li>
+			<li>size — Float. Size of the text.</li>
+			<li>height — Float. Thickness to extrude text.  Default is 50.</li>
+			<li>curveSegments — Integer. Number of points on the curves. Default is 12.</li>
+			<li>bevelEnabled — Boolean. Turn on bevel. Default is False.</li>
+			<li>bevelThickness — Float. How deep into text bevel goes. Default is 10.</li>
+			<li>bevelSize — Float. How far from text outline is bevel. Default is 8.</li>
+			<li>bevelSegments — Integer. Number of bevel segments. Default is 3.</li>
+		</ul>
+		</div>
+
+		<h2>Available Fonts</h2>
+
+		<div>
+		TextGeometry uses <a href='http://gero3.github.io/facetype.js/' target="_top">typeface.json</a> generated fonts.
+		Some existing fonts can be found located in <b>/examples/fonts</b> and must be included in the page.
+		</div>
+		<table>
+			<tr>
+				<th>Font</th>
+				<th>Weight</th>
+				<th>Style</th>
+				<th>File Path</th>
+			</tr>
+			<tr>
+				<td>helvetiker</td>
+				<td>normal</td>
+				<td>normal</td>
+				<td>/examples/fonts/helvetiker_regular.typeface.json</td>
+			</tr>
+			<tr>
+				<td>helvetiker</td>
+				<td>bold</td>
+				<td>normal</td>
+				<td>/examples/fonts/helvetiker_bold.typeface.json</td>
+			</tr>
+			<tr>
+				<td>optimer</td>
+				<td>normal</td>
+				<td>normal</td>
+				<td>/examples/fonts/optimer_regular.typeface.json</td>
+			</tr>
+			<tr>
+				<td>optimer</td>
+				<td>bold</td>
+				<td>normal</td>
+				<td>/examples/fonts/optimer_bold.typeface.json</td>
+			</tr>
+			<tr>
+				<td>gentilis</td>
+				<td>normal</td>
+				<td>normal</td>
+				<td>/examples/fonts/gentilis_regular.typeface.json</td>
+			</tr>
+			<tr>
+				<td>gentilis</td>
+				<td>bold</td>
+				<td>normal</td>
+				<td>/examples/fonts/gentilis_bold.typeface.json</td>
+			</tr>
+			<tr>
+				<td>droid sans</td>
+				<td>normal</td>
+				<td>normal</td>
+				<td>/examples/fonts/droid/droid_sans_regular.typeface.json</td>
+			</tr>
+			<tr>
+				<td>droid sans</td>
+				<td>bold</td>
+				<td>normal</td>
+				<td>/examples/fonts/droid/droid_sans_bold.typeface.json</td>
+			</tr>
+			<tr>
+				<td>droid serif</td>
+				<td>normal</td>
+				<td>normal</td>
+				<td>/examples/fonts/droid/droid_serif_regular.typeface.json</td>
+			</tr>
+			<tr>
+				<td>droid serif</td>
+				<td>bold</td>
+				<td>normal</td>
+				<td>/examples/fonts/droid/droid_serif_bold.typeface.json</td>
+			</tr>
+		</table>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 1 - 1
docs/api/geometries/TorusBufferGeometry.html

@@ -59,6 +59,6 @@
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/geometries/TorusGeometry.js src/geometries/TorusGeometry.js]
 	</body>
 </html>

+ 1 - 1
docs/api/geometries/TorusKnotBufferGeometry.html

@@ -62,6 +62,6 @@
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/geometries/TorusKnotGeometry.js src/geometries/TorusKnotGeometry.js]
 	</body>
 </html>

+ 12 - 13
docs/api/geometries/TubeBufferGeometry.html

@@ -35,25 +35,24 @@
 		<h2>Example</h2>
 
 		<code>
-		var CustomSinCurve = THREE.Curve.create(
+		function CustomSinCurve( scale ){
 
-			function ( scale ) { //custom curve constructor
+			this.scale = ( scale === undefined ) ? 1 : scale;
 
-				this.scale = ( scale === undefined ) ? 1 : scale;
-
-			},
+		}
 
-			function ( t ) { //getPoint: t is between 0-1
+		CustomSinCurve.prototype = Object.create( THREE.Curve.prototype );
+		CustomSinCurve.prototype.constructor = CustomSinCurve;
 
-				var tx = t * 3 - 1.5;
-				var ty = Math.sin( 2 * Math.PI * t );
-				var tz = 0;
+		CustomSinCurve.prototype.getPoint = function ( t ) {
 
-				return new THREE.Vector3( tx, ty, tz ).multiplyScalar( this.scale );
+			var tx = t * 3 - 1.5;
+			var ty = Math.sin( 2 * Math.PI * t );
+			var tz = 0;
 
-			}
+			return new THREE.Vector3( tx, ty, tz ).multiplyScalar( this.scale );
 
-		);
+		};
 
 		var path = new CustomSinCurve( 10 );
 		var geometry = new THREE.TubeBufferGeometry( path, 20, 2, 8, false );
@@ -99,6 +98,6 @@
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/geometries/TubeGeometry.js src/geometries/TubeGeometry.js]
 	</body>
 </html>

+ 11 - 12
docs/api/geometries/TubeGeometry.html

@@ -35,25 +35,24 @@
 		<h2>Example</h2>
 
 		<code>
-		var CustomSinCurve = THREE.Curve.create(
+		function CustomSinCurve( scale ){
 
-			function ( scale ) { //custom curve constructor
+			this.scale = ( scale === undefined ) ? 1 : scale;
 
-				this.scale = ( scale === undefined ) ? 1 : scale;
-
-			},
+		}
 
-			function ( t ) { //getPoint: t is between 0-1
+		CustomSinCurve.prototype = Object.create( THREE.Curve.prototype );
+		CustomSinCurve.prototype.constructor = CustomSinCurve;
 
-				var tx = t * 3 - 1.5;
-				var ty = Math.sin( 2 * Math.PI * t );
-				var tz = 0;
+		CustomSinCurve.prototype.getPoint = function ( t ) {
 
-				return new THREE.Vector3( tx, ty, tz ).multiplyScalar( this.scale );
+			var tx = t * 3 - 1.5;
+			var ty = Math.sin( 2 * Math.PI * t );
+			var tz = 0;
 
-			}
+			return new THREE.Vector3( tx, ty, tz ).multiplyScalar( this.scale );
 
-		);
+		};
 
 		var path = new CustomSinCurve( 10 );
 		var geometry = new THREE.TubeGeometry( path, 20, 2, 8, false );

+ 1 - 1
docs/api/extras/helpers/ArrowHelper.html → docs/api/helpers/ArrowHelper.html

@@ -2,7 +2,7 @@
 <html lang="en">
 	<head>
 		<meta charset="utf-8" />
-		<base href="../../../" />
+		<base href="../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />

+ 1 - 1
docs/api/extras/helpers/AxisHelper.html → docs/api/helpers/AxisHelper.html

@@ -2,7 +2,7 @@
 <html lang="en">
 	<head>
 		<meta charset="utf-8" />
-		<base href="../../../" />
+		<base href="../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />

+ 1 - 1
docs/api/extras/helpers/BoxHelper.html → docs/api/helpers/BoxHelper.html

@@ -2,7 +2,7 @@
 <html lang="en">
 	<head>
 		<meta charset="utf-8" />
-		<base href="../../../" />
+		<base href="../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />

+ 2 - 3
docs/api/extras/helpers/CameraHelper.html → docs/api/helpers/CameraHelper.html

@@ -2,7 +2,7 @@
 <html lang="en">
 	<head>
 		<meta charset="utf-8" />
-		<base href="../../../" />
+		<base href="../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
@@ -24,8 +24,7 @@
 
 		<code>
 var camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
-
-var helper = new THREE.CameraHelper( cameraPerspective );
+var helper = new THREE.CameraHelper( camera );
 scene.add( helper );
 		</code>
 

+ 1 - 1
docs/api/extras/helpers/DirectionalLightHelper.html → docs/api/helpers/DirectionalLightHelper.html

@@ -2,7 +2,7 @@
 <html lang="en">
 	<head>
 		<meta charset="utf-8" />
-		<base href="../../../" />
+		<base href="../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />

+ 1 - 1
docs/api/extras/helpers/FaceNormalsHelper.html → docs/api/helpers/FaceNormalsHelper.html

@@ -2,7 +2,7 @@
 <html lang="en">
 	<head>
 		<meta charset="utf-8" />
-		<base href="../../../" />
+		<base href="../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />

+ 1 - 1
docs/api/extras/helpers/GridHelper.html → docs/api/helpers/GridHelper.html

@@ -2,7 +2,7 @@
 <html lang="en">
 	<head>
 		<meta charset="utf-8" />
-		<base href="../../../" />
+		<base href="../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />

+ 1 - 1
docs/api/extras/helpers/HemisphereLightHelper.html → docs/api/helpers/HemisphereLightHelper.html

@@ -2,7 +2,7 @@
 <html lang="en">
 	<head>
 		<meta charset="utf-8" />
-		<base href="../../../" />
+		<base href="../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />

+ 1 - 1
docs/api/extras/helpers/PointLightHelper.html → docs/api/helpers/PointLightHelper.html

@@ -2,7 +2,7 @@
 <html lang="en">
 	<head>
 		<meta charset="utf-8" />
-		<base href="../../../" />
+		<base href="../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />

+ 1 - 1
docs/api/extras/helpers/PolarGridHelper.html → docs/api/helpers/PolarGridHelper.html

@@ -2,7 +2,7 @@
 <html lang="en">
 	<head>
 		<meta charset="utf-8" />
-		<base href="../../../" />
+		<base href="../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />

+ 1 - 1
docs/api/extras/helpers/RectAreaLightHelper.html → docs/api/helpers/RectAreaLightHelper.html

@@ -2,7 +2,7 @@
 <html lang="en">
 	<head>
 		<meta charset="utf-8" />
-		<base href="../../../" />
+		<base href="../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />

+ 1 - 1
docs/api/extras/helpers/SkeletonHelper.html → docs/api/helpers/SkeletonHelper.html

@@ -2,7 +2,7 @@
 <html lang="en">
 	<head>
 		<meta charset="utf-8" />
-		<base href="../../../" />
+		<base href="../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />

+ 1 - 1
docs/api/extras/helpers/SpotLightHelper.html → docs/api/helpers/SpotLightHelper.html

@@ -2,7 +2,7 @@
 <html lang="en">
 	<head>
 		<meta charset="utf-8" />
-		<base href="../../../" />
+		<base href="../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />

+ 1 - 1
docs/api/extras/helpers/VertexNormalsHelper.html → docs/api/helpers/VertexNormalsHelper.html

@@ -2,7 +2,7 @@
 <html lang="en">
 	<head>
 		<meta charset="utf-8" />
-		<base href="../../../" />
+		<base href="../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />

+ 32 - 13
docs/api/lights/AmbientLight.html

@@ -13,17 +13,21 @@
 		<h1>[name]</h1>
 
 		<div class="desc">
-			This light's color gets applied to all the objects in the scene globally.
+			This light globally illuminates all objects in the scene equally.<br /><br />
+
+			This light cannot be used to cast shadows as it does not have a direction. 
 		</div>
 
 
 		<h2>Example</h2>
-		<div>[example:canvas_camera_orthographic camera / orthographic ]</div>
-		<div>[example:canvas_interactive_voxelpainter interactive / voxelpainter ]</div>
-		<div>[example:canvas_materials materials ]</div>
-		<div>[example:canvas_sandbox sandbox ]</div>
-		<div>[example:webgl_animation_cloth animation / cloth ]</div>
-		<div>[example:webgl_animation_skinning_blending animation / skinning / blending ]</div>
+		<div>
+			[example:canvas_camera_orthographic camera / orthographic ]<br />
+		  [example:canvas_interactive_voxelpainter interactive / voxelpainter ]<br />
+		  [example:canvas_materials materials ]<br />
+		  [example:canvas_sandbox sandbox ]<br />
+		  [example:webgl_animation_cloth animation / cloth ]<br />
+		  [example:webgl_animation_skinning_blending animation / skinning / blending ]
+		</div>
 
 <code>var light = new THREE.AmbientLight( 0x404040 ); // soft white light
 scene.add( light );</code>
@@ -33,20 +37,35 @@ scene.add( light );</code>
 		<h3>[name]( [page:Integer color], [page:Float intensity] )</h3>
 		<div>
 		[page:Integer color] — Numeric value of the RGB component of the color. <br />
-		[page:Float intensity] -- Numeric value of the light's strength/intensity.
+		[page:Float intensity] -- Numeric value of the light's strength/intensity.<br /><br />
+
+		Creates a new [name].
 		</div>
+
+		<h2>Properties</h2>
 		<div>
-		This creates an Ambientlight with a color and intensity.
+				See the base [page:Light Light] class for common properties.
 		</div>
 
-		<h2>Properties</h2>
+		<h3>[property:Boolean castShadow]</h3>
+		<div>
+			This is set to *undefined* in the constructor as ambient lights cannot cast shadows.
+		</div>
 
-		See the base [page:Light Light] class for common properties.
 
-		<h2>Methods</h2>
+		<h3>[property:Boolean isAmbientLight]</h3>
+		<div>
+			Used to check whether this or derived classes are ambient lights. Default is *true*.<br /><br />
+
+			You should not change this, as it used internally for optimisation.
+		</div>
 
-		See the base [page:Light Light] class for common methods.
 
+
+		<h2>Methods</h2>
+		<div>
+				See the base [page:Light Light] class for common methods.
+		</div>
 		<h2>Source</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

+ 85 - 30
docs/api/lights/DirectionalLight.html

@@ -13,70 +13,125 @@
 		<h1>[name]</h1>
 
 		<div class="desc">
-			Affects objects using [page:MeshLambertMaterial] or [page:MeshPhongMaterial].
+			A light that gets emitted in a specific direction. This light will behave	as though it is
+			infinitely far away and the rays produced from it are all parallel. The common use case
+			for this is to simulate daylight; the sun is far enough away that its position can be
+			considered to be infinite, and all light rays coming from it are parallel.<br /><br />
+
+			This light can cast shadows - see the [page:DirectionalLightShadow] page for details.
+		</div>
+
+		<h2>A Note about Position, Target and rotation</h2>
+		<div>
+			A common point of confusion for directional lights is that setting the rotation has no effect.
+			This is because three.js's DirectionalLight is the equivalent to what is often called a 'Target
+			Direct Light' in other applications.<br /><br />
+
+			This means that its direction is calculated as pointing
+			from the light's [page:Object3D.position position] to	the [page:.target target]'s position
+			(as opposed to a a 'Free Direct Light' that just has a rotation component).<br /><br />
+
+			The reason for this is to allow the light to cast shadows - the [page:.shadow shadow]
+			camera needs a position to calculate shadows from.<br /><br />
+
+			See the [page:.target target] property below for details on updating the target.
 		</div>
 
 
 		<h2>Example</h2>
-		<div>[example:canvas_morphtargets_horse morphtargets / horse ]</div>
-		<div>[example:misc_controls_fly controls / fly ]</div>
-		<div>[example:misc_lights_test lights / test ]</div>
-		<div>[example:vr_cubes cubes ]</div>
-		<div>[example:webgl_effects_parallaxbarrier effects / parallaxbarrier ]</div>
-		<div>[example:webgl_effects_stereo effects / stereo ]</div>
-		<div>[example:webgl_geometry_extrude_splines geometry / extrude / splines ]</div>
-		<div>[example:webgl_materials_bumpmap materials / bumpmap ]</div>
-		<div>[example:webgl_materials_cubemap_balls_reflection materials / cubemap / balls / reflection ]</div>
-
-		<code>// White directional light at half intensity shining from the top.
+		<div>
+			[example:canvas_morphtargets_horse morphtargets / horse ]<br />
+			[example:misc_controls_fly controls / fly ]<br />
+			[example:misc_lights_test lights / test ]<br />
+			[example:vr_cubes cubes ]<br />
+			[example:webgl_effects_parallaxbarrier effects / parallaxbarrier ]<br />
+			[example:webgl_effects_stereo effects / stereo ]<br />
+			[example:webgl_geometry_extrude_splines geometry / extrude / splines ]<br />
+			[example:webgl_materials_bumpmap materials / bumpmap ]<br />
+			[example:webgl_materials_cubemap_balls_reflection materials / cubemap / balls / reflection ]
+		</div>
 
+		<code>
+// White directional light at half intensity shining from the top.
 var directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 );
-directionalLight.position.set( 0, 1, 0 );
-scene.add( directionalLight );</code>
+scene.add( directionalLight );
+	</code>
 
 
 		<h2>Constructor</h2>
 
 		<h3>[name]( [page:Integer hex], [page:Float intensity] )</h3>
 		<div>
-		[page:Integer hex] -- Numeric value of the RGB component of the color. <br />
-		[page:Float intensity] -- Numeric value of the light's strength/intensity.
-		</div>
-		<div>
-		Creates a light that shines from a specific direction not from a specific position.  This light will behave
-		as though it is infinitely far away and the rays produced from it are all parallel.  The best
-		analogy would be a light source that acts like the sun: the sun is so far away that all sunlight
-		hitting objects comes from the same angle.
+			[page:Integer color] - (optional) hexadecimal color of the light. Default is 0xffffff (white).<br />
+			[page:Float intensity] - (optional) numeric value of the light's strength/intensity. Default is 1.<br /><br />
+
+			Creates a new [name].
 		</div>
 
 		<h2>Properties</h2>
 
 		See the base [page:Light Light] class for common properties.
 
-		<h3>[property:Object3D target]</h3>
+		<h3>[property:Boolean castShadow]</h3>
 		<div>
-			Target used for shadow camera orientation.
+			If set to *true* light will cast dynamic shadows. *Warning*: This is expensive and
+			requires tweaking to get shadows looking right. See the [page:DirectionalLightShadow] for details.
+			The default is *false*.
+		</div>
+
+		<h3>[property:Boolean isDirectionalLight]</h3>
+		<div>
+			Used to check whether this or derived classes are dircrectional lights. Default is *true*.<br /><br />
+
+			You should not change this, as it used internally for optimisation.
+		</div>
+
+
+		<h3>[property:Vector3 position]</h3>
+		<div>
+			This is set equal to [page:Object3D.DefaultUp] (0, 1, 0), so that the light shines from the top down.
 		</div>
 
 		<h3>[property:DirectionalLightShadow shadow]</h3>
 		<div>
-			This property stores all relevant information for rendering the shadow of the light.<br />
+			A [page:DirectionalLightShadow] used to calculate shadows for this light.
 		</div>
 
-		<h3>[property:Boolean castShadow]</h3>
+		<h3>[property:Object3D target]</h3>
 		<div>
-			If set to *true* light will cast dynamic shadows. *Warning*: This is expensive and requires tweaking to get shadows looking right.<br />
-			Default — *false*.
+			The DirectionalLight points from its [page:.position position] to target.position. The default
+			position of the target is *(0, 0, 0)*.<br />
+
+			*Note*: For the the target's position to be changed to anything other than the default,
+			it must be added to the [page:Scene scene] using
+			<code>
+				scene.add( light.target );
+			</code>
+
+			This is so that the target's [page:Object3D.matrixWorld matrixWorld] gets automatically
+			updated each frame.<br /><br />
+
+			It is also possible to set the target to be another object in the scene (anything with a
+			[page:Object3D.position position] property), like so:
+			<code>
+	var targetObject = new THREE.Object3D();
+	scene.add(targetObject);
+
+	light.target = targetObject;
+			</code>
+			The directionalLight will now track the target object.
 		</div>
 
+
+
 		<h2>Methods</h2>
 
 		See the base [page:Light Light] class for common methods.
 
 		<h3>[method:DirectionalLight copy]( [page:DirectionalLight source] )</h3>
 		<div>
-		<br />
-		Copies value of *source* to this DirectionalLight object.
+		Copies value of all the properties from the [page:DirectionalLight source] to this
+		DirectionalLight.
 		</div>
 
 		<h2>Source</h2>

+ 0 - 33
docs/api/lights/DirectionalLightShadow.html

@@ -1,33 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		[page:LightShadow] &rarr;
-
-		<h1>[name]</h1>
-
-		<div class="desc">TODO</div>
-
-		<h2>Constructor</h2>
-
-		The constructor creates an [page:OrthographicCamera OrthographicCamera] to manage the shadow's view of the world.
-
-		<h2>Properties</h2>
-
-		See the base [page:LightShadow LightShadow] class for common properties.
-
-		<h2>Methods</h2>
-
-		See the base [page:LightShadow LightShadow] class for common methods.
-
-		<h2>Source</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-	</body>
-</html>

+ 54 - 19
docs/api/lights/HemisphereLight.html

@@ -12,40 +12,75 @@
 
 		<h1>[name]</h1>
 
-		<div class="desc">A light source positioned directly above the scene.</div>
+		<div class="desc">
+			A light source positioned directly above the scene, with color fading from the
+			sky color to the ground color. <br /><br />
+
+			This light cannot be used to cast shadows.
+		</div>
 
 		<h2>Example</h2>
 
-		<div>[example:webgl_lights_hemisphere lights / hemisphere ]</div>
-		<div>[example:misc_controls_pointerlock controls / pointerlock ]</div>
-		<div>[example:webgl_decals decals ]</div>
-		<div>[example:webgl_loader_collada_kinematics loader / collada / kinematics ]</div>
-		<div>[example:webgl_materials_lightmap materials / lightmap ]</div>
-		<div>[example:webgl_shaders_ocean shaders / ocean ]</div>
+		<div>
+			[example:webgl_lights_hemisphere lights / hemisphere ]<br />
+		  [example:misc_controls_pointerlock controls / pointerlock ]<br />
+		  [example:webgl_decals decals ]<br />
+		  [example:webgl_loader_collada_kinematics loader / collada / kinematics ]<br />
+		  [example:webgl_materials_lightmap materials / lightmap ]<br />
+		  [example:webgl_shaders_ocean shaders / ocean ]
+		</div>
 
-<code>var light = new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 );
-scene.add( light );</code>
+<code>
+var light = new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 );
+scene.add( light );
+</code>
 
 		<h2>Constructor</h2>
-
-
 		<h3>[name]( [page:Integer skyColor], [page:Integer groundColor], [page:Float intensity] )</h3>
-        <div>
-		[page:Integer skyColor] — Numeric value of the RGB sky color.<br />
-		[page:Integer groundColor] — Numeric value of the RGB ground color.<br />
-		[page:Float intensity] — Numeric value of the light's strength/intensity.
+    <div>
+		[page:Integer skyColor] - (optional) hexadecimal color of the sky. Default is 0xffffff.<br />
+		[page:Integer groundColor] - (optional) hexadecimal color of the ground. Default is 0xffffff.<br />
+		[page:Float intensity] - (optional) numeric value of the light's strength/intensity. Default is 1.<br /><br />
+
+		Creates a new [name].
 		</div>
 
 		<h2>Properties</h2>
+		<div>
+			See the base [page:Light Light] class for common properties.
+		</div>
+
+		<h3>[property:Boolean castShadow]</h3>
+		<div>
+			This is set to *undefined* in the constructor as hemisphere lights cannot cast shadows.
+		</div>
+
 
-		See the base [page:Light Light] class for common properties.
+		<h3>[property:Float color]</h3>
+		<div>
+			The light's sky color, as passed in the constructor.
+			Default is a new [page:Color] set to white (0xffffff).
+		</div>
 
 		<h3>[property:Float groundColor]</h3>
+		<div>
+			The light's ground color, as passed in the constructor.
+			Default is a new [page:Color] set to white (0xffffff).
+		</div>
 
+		<h3>[property:Boolean isHemisphereLight]</h3>
 		<div>
-			Light's ground color.<br />
+			Used to check whether this or derived classes are hemisphere lights. Default is *true*.<br /><br />
+
+			You should not change this, as it used internally for optimisation.
 		</div>
 
+		<h3>[property:Vector3 position]</h3>
+		<div>
+			This is set equal to [page:Object3D.DefaultUp] (0, 1, 0), so that the light shines from the top down.
+		</div>
+
+
 
 		<h2>Methods</h2>
 
@@ -53,8 +88,8 @@ scene.add( light );</code>
 
 		<h3>[method:HemisphereLight copy]( [page:HemisphereLight source] )</h3>
 		<div>
-		<br />
-		Copies value of *source* to this HemisphereLight object.
+			Copies the value of [page:.color color], [page:.intensity intensity] and
+			[page:.groundColor groundColor] from the [page:Light source] light into this one.
 		</div>
 
 		<h2>Source</h2>

+ 31 - 15
docs/api/lights/Light.html

@@ -12,7 +12,10 @@
 
 		<h1>[name]</h1>
 
-		<div class="desc">Abstract base class for lights.</div>
+		<div class="desc">
+			Abstract base class for lights - all other light types inherit the properties and methods
+			described here.
+		</div>
 
 
 		<h2>Constructor</h2>
@@ -20,37 +23,50 @@
 
 		<h3>[name]( [page:Integer color], [page:float intensity] )</h3>
 		<div>
-		[page:Integer color] — Numeric value of the RGB component of the color.<br />
-		[page:Float intensity] — Numeric value of the light's strength/intensity.
-		</div>
-		<div>
-		This creates a light with color and intensity.<br />
+		[page:Integer color] - (optional) hexadecimal color of the light. Default is 0xffffff (white).<br />
+		[page:Float intensity] - (optional) numeric value of the light's strength/intensity. Default is 1.<br /><br />
+
+		Creates a new [name]. Note that this is not intended to be called directly (use one of <thead>
+			derived classes instead).
+		</thead>)
 		</div>
 
 		<h2>Properties</h2>
-
-		See the base [page:Object3D Object3D] class for common properties.
+		<div>
+			See the base [page:Object3D Object3D] class for common properties.
+		</div>
 
 		<h3>[property:Color color]</h3>
 		<div>
-			Color of the light.<br />
+			Color of the light. Defaults to a new [page:Color] set to white, if not passed in the constructor.<br />
 		</div>
 
 		<h3>[property:Float intensity]</h3>
 		<div>
-			Light's intensity.<br />
-			In "physically correct" mode, the product of color * intensity is interpreted as luminous intensity measured in candela.<br/>
-			Default — *1.0*.
+			The light's intensity, or strength.<br />
+			In [page:WebGLRenderer.physicallyCorrectLights physically correct] mode, the product of
+			[page:.color color] * intensity is interpreted as luminous intensity measured in candela.<br />
+			Default - *1.0*.
 		</div>
 
+		<h3>[property:Boolean isLight]</h3>
+		<div>
+			Used to check whether this or derived classes are lights. Default is *true*.<br /><br />
+
+			You should not change this, as it used internally for optimisation.
+		</div>
+
+
 		<h2>Methods</h2>
+		<div>
+			See the base [page:Object3D Object3D] class for common methods.
+		</div>
 
-		See the base [page:Object3D Object3D] class for common methods.
 
 		<h3>[method:Light copy]( [page:Light source] )</h3>
 		<div>
-		<br />
-		Copies value of *source* to this Light object.
+		Copies the value of [page:.color color] and [page:.intensity intensity] from the
+		[page:Light source] light into this one.
 		</div>
 
 		<h3>[method:JSON toJSON]( [page:String meta] )</h3>

+ 0 - 75
docs/api/lights/LightShadow.html

@@ -1,75 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-
-		<h1>[name]</h1>
-
-		<div class="desc">TODO</div>
-
-		<h2>Constructor</h2>
-
-
-		<h3>[name]( [page:Camera camera] )</h3>
-		<div>
-		[page:Camera camera] — The shadow's view of the world.
-		</div>
-
-		<h2>Properties</h2>
-
-		<h3>[property:Camera camera]</h3>
-		<div>
-			The shadow's view of the world.
-		</div>
-
-		<h3>[property:Float bias]</h3>
-		<div>
-			Shadow map bias, how much to add or subtract from the normalized depth when deciding whether a surface is in shadow.<br />
-			Default — *0*.
-		</div>
-
-		<h3>[property:Float radius]</h3>
-		<div>
-			TODO<br />
-			Default - *0*.
-		</div>
-
-		<h3>[property:Vector2 mapSize]</h3>
-		<div>
-			The width and height of the shadow map stored in a [page:Vector2 Vector2].<br />
-			Default — *( 512, 512 )*.
-		</div>
-
-		<h3>[property:WebGLRenderTarget map]</h3>
-		<div>
-			The depth map generated using the internal camera; a location beyond a pixel's depth is in shadow. Computed internally during rendering.
-		</div>
-
-		<h3>[property:Matrix4 matrix]</h3>
-		<div>
-			Model to shadow camera space, to compute location and depth in shadow map. Stored in a [page:Matrix4 Matrix4]. Computed internally during rendering.
-		</div>
-
-
-		<h2>Methods</h2>
-		<h3>[method:LightShadow copy]( [page:LightShadow source] )</h3>
-		<div>
-		Copies value of *source* to this LightShadow object.
-		</div>
-
-		<h3>[method:LightShadow clone]()</h3>
-		<div>
-		It returns a clone of LightShadow.
-		</div>
-
-		<h2>Source</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-	</body>
-</html>

+ 65 - 39
docs/api/lights/PointLight.html

@@ -13,79 +13,105 @@
 		<h1>[name]</h1>
 
 		<div class="desc">
-			Affects objects using [page:MeshLambertMaterial] or [page:MeshPhongMaterial].
+			A light that gets emitted from a single point in all directions. A common use case for this
+			is to replicate the light emitted from a bare lightbulb.<br /><br />
+
+			 This light can cast shadows - see [page:LightShadow] page for details.
 		</div>
 
 
 		<h2>Example</h2>
 
-		<div>[example:canvas_lights_pointlights lights / pointlights ]</div>
-		<div>[example:webgl_lights_pointlights lights / pointlights ]</div>
-		<div>[example:webgl_lights_pointlights2 lights / pointlights2 ]</div>
-		<div>[example:webgldeferred_animation animation ]</div>
-		<div>[example:webgldeferred_pointlights pointlights ]</div>
-		<div>[example:webgl_effects_anaglyph effects / anaglyph ]</div>
-		<div>[example:webgl_geometry_large_mesh geometry / large / mesh ]</div>
-		<div>[example:webgl_geometry_text geometry / text ]</div>
-		<div>[example:webgl_lensflares lensflares ]</div>
-
-		<code>var light = new THREE.PointLight( 0xff0000, 1, 100 );
+		<div>
+			[example:canvas_lights_pointlights lights / pointlights ]<br />
+			[example:webgl_lights_pointlights lights / pointlights ]<br />
+			[example:webgl_lights_pointlights2 lights / pointlights2 ]<br />
+			[example:webgldeferred_animation animation ]<br />
+			[example:webgldeferred_pointlights pointlights ]<br />
+			[example:webgl_effects_anaglyph effects / anaglyph ]<br />
+			[example:webgl_geometry_large_mesh geometry / large / mesh ]<br />
+			[example:webgl_geometry_text geometry / text ]<br />
+			[example:webgl_lensflares lensflares ]
+		</div>
+
+		<code>
+var light = new THREE.PointLight( 0xff0000, 1, 100 );
 light.position.set( 50, 50, 50 );
-scene.add( light );</code>
+scene.add( light );
+		</code>
 
 
 		<h2>Constructor</h2>
 
-
 		<h3>[name]( [page:Integer color], [page:Float intensity], [page:Number distance], [page:Float decay] )</h3>
 		<div>
-		[page:Integer color] — Numeric value of the RGB component of the color. <br />
-		[page:Float intensity] — Numeric value of the light's strength/intensity. <br />
-		[page:Number distance] -- The distance of the light where the intensity is 0. When distance is 0, then the distance is endless. <br />
-		[page:Float decay] -- The amount the light dims along the distance of the light.
-		</div>
-		<div>
-		Creates a light at a specific position in the scene.  The light shines in all directions (roughly similar to a light bulb.)
-
+			[page:Integer color] - (optional) hexadecimal color of the light. Default is 0xffffff (white).<br />
+			[page:Float intensity] - (optional) numeric value of the light's strength/intensity. Default is 1.<br /><br />
+			[page:Number distance] - The distance from the light where the intensity is 0.
+			When set to 0, then the light never stops. Default is 0.<br />
+			[page:Float decay] - The amount the light dims along the distance of the light. Default is 1.
+			For [page:WebGLRenderer.physicallyCorrectLights physically correct] lighting, set this to 2.<br /><br />
+
+			Creates a new [name].
 		</div>
 
 		<h2>Properties</h2>
+		<div>
+			See the base [page:Light Light] class for common properties.
+		</div>
 
-		See the base [page:Light Light] class for common properties.
-
-		<h3>[property:Float power]</h3>
+		<h3>[property:Float decay]</h3>
 		<div>
-			Light's power.<br />
-			In "physically correct" mode, the luminous power of the light measured in lumens.<br/>
-			Default - *4PI*.
+			The amount the light dims along the distance of the light<br />
+			In [page:WebGLRenderer.physicallyCorrectLights physically correct] mode, decay = 2 leads to physically realistic light falloff.<br/>
+			Default is *1*.
 		</div>
 
 		<h3>[property:Float distance]</h3>
 		<div>
-			If non-zero, light will attenuate linearly from maximum intensity at light *position* down to zero at *distance*.<br />
-			Default — *0.0*.
+			If non-zero, light will attenuate linearly from maximum intensity at the light's
+			position down to zero at this distance from the light. Default is *0.0*.
 		</div>
 
-		<h3>[property:Float decay]</h3>
+		<h3>[property:Boolean isPointLight]</h3>
 		<div>
-			The amount the light dims along the distance of the light<br />
-			In "physically correct" mode, decay = 2 leads to physically realistic light falloff.<br/>
-			Default — *1*.
+			Used to check whether this or derived classes are point lights. Default is *true*.<br /><br />
+
+			You should not change this, as it used internally for optimisation.
+		</div>
+
+		<h3>[property:Float power]</h3>
+		<div>
+			The light's power.<br />
+			In [page:WebGLRenderer.physicallyCorrectLights physically correct] mode, the luminous
+			power of the light measured in lumens. Default - *4PI*. <br /><br />
+
+			This is directly related to the [page:.intensity intensity] in the ratio
+			<code>
+				power = intensity * 4&Pi;
+			</code>
+			and changing this will also change the intensity.
 		</div>
 
 		<h3>[property:LightShadow shadow]</h3>
 		<div>
-			This property stores all relevant information for rendering the shadow of the light.<br />
+			A [page:LightShadow] used to calculate shadows for this light.<br /><br />
+
+			 The lightShadow's [page:LightShadow.camera camera]
+			is set to a  [page:PerspectiveCamera] with [page:PerspectiveCamera.fov fov] of 90,
+			[page:PerspectiveCamera.aspect aspect] of 1, [page:PerspectiveCamera.near near]
+			clipping plane at 0.5 and	[page:PerspectiveCamera.far far] clipping plane at 500.
 		</div>
 
 		<h2>Methods</h2>
-
-		See the base [page:Light Light] class for common methods.
+		<div>
+			See the base [page:Light Light] class for common methods.
+		</div>
 
 		<h3>[method:PointLight copy]( [page:PointLight source] )</h3>
 		<div>
-		<br />
-		Copies value of *source* to this PointLight object.
+		Copies value of all the properties from the [page:PointLight source] to this
+		PointLight.
 		</div>
 
 		<h2>Source</h2>

+ 157 - 0
docs/api/lights/RectAreaLight.html

@@ -0,0 +1,157 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:Object3D] &rarr; [page:Light] &rarr;
+
+		<h1>[name]</h1>
+
+		<div class="desc">
+			This light gets emitted uniformly across the face a rectangular plane. This can be
+			used to simulate things like bright windows or strip lighting.<br /><br />
+
+			This light can cast shadows - see the [page:RectAreaLightShadow] page for details.<br /><br />
+
+			<em>NOTE:</em> this class is currently under active development and is probably not
+			production ready yet (as of r83). Check back in a month or two! And feel free to try it out in the meantime.
+		</div>
+
+
+
+
+		<h2>Examples</h2>
+
+		<div>
+			[example:webgl_lights_arealight WebGL / arealight ]<br />
+			[example:webgl_lights_rectarealight WebGL / rectarealight ]
+
+			<code>
+var width = 2;
+var height = 10;
+var rectLight = new THREE.RectAreaLight( 0xffffff, undefined,  width, height );
+rectLight.matrixAutoUpdate = true;
+rectLight.intensity = 70.0;
+rectLight.position.set( 5, 5, 0 );
+rectLightHelper = new THREE.RectAreaLightHelper( rectLight );
+rectLight.add( rectLightHelper );
+
+scene.add(rectLight)
+			</code>
+		</div>
+
+
+
+
+
+		<h2>Constructor</h2>
+
+
+		<h3>[name]( [page:Integer color], [page:Float intensity], [page:Float distance], [page:Radians angle], [page:Float penumbra], [page:Float decay] )</h3>
+		<div>
+			[page:Integer color] - (optional) hexadecimal color of the light. Default is 0xffffff (white).<br />
+			[page:Float intensity] - (optional) numeric value of the light's strength/intensity. Default is 1.<br /><br />
+			[page:Float width] - (optional) width of the light. Default is 10.<br />
+			[page:Float height] - (optional) height of the light. Default is 10.
+
+			Creates a new [name].
+		</div>
+
+		<h2>Properties</h2>
+		<div>
+			See the base [page:Light Light] class for common properties.
+		</div>
+
+
+		<h3>[property:Boolean castShadow]</h3>
+		<div>
+			If set to *true* light will cast dynamic shadows. *Warning*: This is expensive and
+			requires tweaking to get shadows looking right. See the [page:RectAreaLightShadow] for details.
+			The default is *false*.<br /><br />
+
+			<em>Note:</em> this is not yet implemented for this light type! (r83)
+		</div>
+
+		<h3>[property:Float decay]</h3>
+		<div>
+			The amount the light dims along the distance of the light.<br />
+			In [page:WebGLRenderer.physicallyCorrectLights physically correct] mode, decay = 2 leads to
+			physically realistic light falloff. The default is *1*.<br /><br />
+
+			<em>Note:</em> this is not yet implemented for this light type! (r83)
+		</div>
+
+		<h3>[property:Float distance]</h3>
+		<div>
+			If non-zero, light will attenuate linearly from maximum intensity at the light's
+			position down to zero at this distance from the light. Default is *0.0*.<br /><br />
+
+			<em>Note:</em> this is not yet implemented for this light type! (r83)
+		</div>
+
+		<h3>[property:Boolean isRectAreaLight]</h3>
+		<div>
+			Used to check whether this or derived classes are RectAreaLights. Default is *true*.<br /><br />
+
+			You should not change this, as it used internally for optimisation.
+		</div>
+
+		<h3>[property:Vector3 position]</h3>
+		<div>
+			This is set equal to [page:Object3D.DefaultUp] (0, 1, 0), so that the light shines from the top down.
+		</div>
+
+		<h3>[property:RectAreaLightShadow shadow]</h3>
+		<div>
+			A [page:RectAreaLightShadow] used to calculate shadows for this light.<br /><br />
+
+			<em>Note:</em> this is not yet implemented for this light type! (r83)
+		</div>
+
+
+		<h3>[property:Object3D target]</h3>
+		<div>
+			The RectAreaLight points from its [page:.position position] to target.position. The default
+			position of the target is *(0, 0, 0)*.<br />
+
+			*Note*: For the the target's position to be changed to anything other than the default,
+			it must be added to the [page:Scene scene] using
+			<code>
+				scene.add( light.target );
+			</code>
+
+			This is so that the target's [page:Object3D.matrixWorld matrixWorld] gets automatically
+			updated each frame.<br /><br />
+
+			It is also possible to set the target to be another object in the scene (anything with a
+			[page:Object3D.position position] property), like so:
+			<code>
+var targetObject = new THREE.Object3D();
+scene.add(targetObject);
+
+light.target = targetObject;
+			</code>
+			The RectAreaLight will now track the target object.
+		</div>
+
+
+		<h2>Methods</h2>
+		<div>
+			See the base [page:Light Light] class for common methods.
+		</div>
+
+
+		<h3>[method:RectAreaLight copy]( [page:RectAreaLight source] )</h3>
+		<div>
+		Copies value of all the properties from the [page:RectAreaLight source] to this
+		RectAreaLight.
+		</div>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 101 - 52
docs/api/lights/SpotLight.html

@@ -12,28 +12,42 @@
 
 		<h1>[name]</h1>
 
-		<div class="desc">A point light that can cast a shadow in one direction within a falloff cone.</div>
+		<div class="desc">
+			This light gets emitted from a single point in one direction, along a cone that increases in size
+			the further from the light it gets. <br /><br />
+
+			This light can cast shadows - see the [page:SpotLightShadow] page for details.
+		</div>
+
 
-		<div class="desc">Affects objects using [page:MeshLambertMaterial] or [page:MeshPhongMaterial].</div>
 
 
 		<h2>Example</h2>
 
 		<iframe src='../examples/webgl_lights_spotlight.html'></iframe>
-		<a target="THREE_Examples" href="../examples/#webgl_lights_spotlight">View in Examples</a><br />
+		<div>
+			[example:webgl_lights_spotlight View in Examples ]
+		</div>
+
 		<h2>Other Examples</h2>
 
-		<div>[example:webgl_lights_spotlights lights / spotlights ]</div>
-		<div>[example:webgl_interactive_cubes_gpu interactive / cubes / gpu ]</div>
-		<div>[example:webgl_interactive_draggablecubes interactive / draggablecubes ]</div>
-		<div>[example:webgl_materials_bumpmap_skin materials / bumpmap / skin ]</div>
-		<div>[example:webgl_materials_cubemap_dynamic materials / cubemap / dynamic ]</div>
-		<div>[example:webgl_morphtargets_md2 morphtargets / md2 ]</div>
-		<div>[example:webgl_shading_physical shading / physical ]</div>
+		<div>
+			[example:webgl_interactive_cubes_gpu interactive / cubes / gpu ]<br />
+			[example:webgl_interactive_draggablecubes interactive / draggablecubes ]<br />
+			[example:webgl_materials_bumpmap_skin materials / bumpmap / skin ]<br />
+			[example:webgl_materials_cubemap_dynamic materials / cubemap / dynamic ]<br />
+			[example:webgl_morphtargets_md2 morphtargets / md2 ]<br />
+			[example:webgl_shading_physical shading / physical ]<br />
+			[example:webgl_materials_bumpmap materials / bumpmap]<br/>
+			[example:webgl_shading_physical shading / physical]<br/>
+			[example:webgl_shadowmap shadowmap]<br/>
+			[example:webgl_shadowmap_performance shadowmap / performance]<br/>
+			[example:webgl_shadowmap_viewer shadowmap / viewer]
+		</div>
 
 		<h2>Code Example</h2>
 		<code>
-		// white spotlight shining from the side, casting shadow
+		// white spotlight shining from the side, casting a shadow
 
 		var spotLight = new THREE.SpotLight( 0xffffff );
 		spotLight.position.set( 100, 1000, 100 );
@@ -50,91 +64,126 @@
 		scene.add( spotLight );
 		</code>
 
-		<h2>Extra Examples</h2>
-		<div>
-		[example:webgl_materials_bumpmap materials / bumpmap]<br/>
-		[example:webgl_shading_physical shading / physical]<br/>
-		[example:webgl_shadowmap shadowmap]<br/>
-		[example:webgl_shadowmap_performance shadowmap / performance]<br/>
-		[example:webgl_shadowmap_viewer shadowmap / viewer]
-		</div>
-
-
 		<h2>Constructor</h2>
 
 
 		<h3>[name]( [page:Integer color], [page:Float intensity], [page:Float distance], [page:Radians angle], [page:Float penumbra], [page:Float decay] )</h3>
 		<div>
-		[page:Integer color] — Numeric value of the RGB component of the color. <br />
-		[page:Float intensity] — Numeric value of the light's strength/intensity. <br />
-		[page:Float distance] -- Maximum distance from origin where light will shine whose intensity is attenuated linearly based on distance from origin. <br />
-		[page:Radians angle] -- Maximum angle of light dispersion from its direction whose upper bound is Math.PI/2.<br />
-		[page:Float penumbra] -- Percent of the spotlight cone that is attenuated due to penumbra. Takes values between zero and 1. Default is zero.<br />
-		[page:Float decay] -- The amount the light dims along the distance of the light.
+			[page:Integer color] - (optional) hexadecimal color of the light. Default is 0xffffff (white).<br />
+			[page:Float intensity] - (optional) numeric value of the light's strength/intensity. Default is 1.<br /><br />
+			[page:Float distance] - Maximum distance from origin where light will shine whose intensity
+			is attenuated linearly based on distance from origin. <br />
+			[page:Radians angle] - Maximum angle of light dispersion from its direction whose upper
+			bound is Math.PI/2.<br />
+			[page:Float penumbra] - Percent of the spotlight cone that is attenuated due to penumbra.
+			Takes values between zero and 1. Default is zero.<br />
+			[page:Float decay] - The amount the light dims along the distance of the light.<br /><br />
+
+			Creates a new [name].
 		</div>
 
 		<h2>Properties</h2>
 
 		See the base [page:Light Light] class for common properties.
 
-		<h3>[property:Object3D target]</h3>
+		<h3>[property:Float angle]</h3>
 		<div>
-			Spotlight focus points at target.position.<br />
-			Default position — *(0,0,0)*.<br />
-			*Note*: Currently for target property to work properly, it must be part of the [page:Scene scene], e.g. this will help: <code>scene.add( light.target )</code>
+			Maximum extent of the spotlight, in radians, from its direction. Should be no more than
+			*Math.PI/2*. The default is *Math.PI/3*.
 		</div>
 
-		<h3>[property:Float power]</h3>
+
+		<h3>[property:Boolean castShadow]</h3>
+		<div>
+			If set to *true* light will cast dynamic shadows. *Warning*: This is expensive and
+			requires tweaking to get shadows looking right. See the [page:SpotLightShadow] for details.
+			The default is *false*.
+		</div>
+
+		<h3>[property:Float decay]</h3>
 		<div>
-			Light's power.<br />
-			In "physically correct" mode, the luminous power of the light measured in lumens.<br/>
-			Default - *4PI*.
+			The amount the light dims along the distance of the light.<br />
+			In [page:WebGLRenderer.physicallyCorrectLights physically correct] mode, decay = 2 leads to
+			physically realistic light falloff. The default is *1*.
 		</div>
 
 		<h3>[property:Float distance]</h3>
 		<div>
-			If non-zero, light will attenuate linearly from maximum intensity at light *position* down to zero at *distance*.<br />
-			Default — *0.0*.
+			If non-zero, light will attenuate linearly from maximum intensity at the light's
+			position down to zero at this distance from the light. Default is *0.0*.
 		</div>
 
-		<h3>[property:Float angle]</h3>
+		<h3>[property:Boolean isSpotLight]</h3>
 		<div>
-			Maximum extent of the spotlight, in radians, from its direction. Should be no more than *Math.PI/2*.<br />
-			Default — *Math.PI/3*.
+			Used to check whether this or derived classes are spot lights. Default is *true*.<br /><br />
+
+			You should not change this, as it used internally for optimisation.
 		</div>
 
 		<h3>[property:Float penumbra]</h3>
 		<div>
-			Percent of the spotlight cone that is attenuated due to penumbra. Takes values between zero and 1.<br />
-			Default — *0.0*.
+			Percent of the spotlight cone that is attenuated due to penumbra. Takes values between
+			zero and 1. The default is *0.0*.
 		</div>
 
-		<h3>[property:Float decay]</h3>
+		<h3>[property:Vector3 position]</h3>
 		<div>
-			The amount the light dims along the distance of the light<br />
-			In "physically correct" mode, decay = 2 leads to physically realistic light falloff.<br/>
-			Default — *1*.
+			This is set equal to [page:Object3D.DefaultUp] (0, 1, 0), so that the light shines from the top down.
+		</div>
+
+		<h3>[property:Float power]</h3>
+		<div>
+			The light's power.<br />
+			In [page:WebGLRenderer.physicallyCorrectLights physically correct] mode, the luminous
+			power of the light measured in lumens. Default - *4PI*. <br /><br />
+
+			This is directly related to the [page:.intensity intensity] in the ratio
+			<code>
+				power = intensity * &Pi;
+			</code>
+			and changing this will also change the intensity.
 		</div>
 
 		<h3>[property:SpotLightShadow shadow]</h3>
 		<div>
-			This property stores all relevant information for rendering the shadow of the light.<br />
+			A [page:SpotLightShadow] used to calculate shadows for this light.
 		</div>
 
-		<h3>[property:Boolean castShadow]</h3>
+
+		<h3>[property:Object3D target]</h3>
 		<div>
-			If set to *true* light will cast dynamic shadows. *Warning*: This is expensive and requires tweaking to get shadows looking right.<br />
-			Default — *false*.
+			The Spotlight points from its [page:.position position] to target.position. The default
+			position of the target is *(0, 0, 0)*.<br />
+
+			*Note*: For the the target's position to be changed to anything other than the default,
+			it must be added to the [page:Scene scene] using
+			<code>
+				scene.add( light.target );
+			</code>
+
+			This is so that the target's [page:Object3D.matrixWorld matrixWorld] gets automatically
+			updated each frame.<br /><br />
+
+			It is also possible to set the target to be another object in the scene (anything with a
+			[page:Object3D.position position] property), like so:
+			<code>
+var targetObject = new THREE.Object3D();
+scene.add(targetObject);
+
+light.target = targetObject;
+			</code>
+			The spotlight will now track the target object.
 		</div>
 
+
 		<h2>Methods</h2>
 
 		See the base [page:Light Light] class for common methods.
 
 		<h3>[method:SpotLight copy]( [page:SpotLight source] )</h3>
 		<div>
-		<br />
-		Copies value of *source* to this SpotLight object.
+		Copies value of all the properties from the [page:SpotLight source] to this
+		SpotLight.
 		</div>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

+ 0 - 38
docs/api/lights/SpotLightShadow.html

@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		[page:LightShadow] &rarr;
-
-		<h1>[name]</h1>
-
-		<div class="desc">TODO</div>
-
-		<h2>Constructor</h2>
-
-		The constructor creates a [page:PerspectiveCamera PerspectiveCamera] to manage the shadow's view of the world.
-
-		<h2>Properties</h2>
-
-		See the base [page:LightShadow LightShadow] class for common properties.
-
-		<h2>Methods</h2>
-
-		See the base [page:LightShadow LightShadow] class for common methods.
-
-		<h3>[method:SpotLightShadow update]( [page:SpotLight light] )</h3>
-		<div>
-		Updates the internal perspective camera.
-		</div>
-
-		<h2>Source</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-	</body>
-</html>

+ 97 - 0
docs/api/lights/shadows/DirectionalLightShadow.html

@@ -0,0 +1,97 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:LightShadow] &rarr;
+
+		<h1>[name]</h1>
+
+		<div class="desc">
+			This used internally by [page:DirectionalLight DirectionalLights] for calculating shadows.<br /><br />
+
+			Unlike the other shadow classes, this uses an [page:OrthographicCamera] to calculate the shadows,
+			rather than a [page:PerspectiveCamera]. This is because light rays from a [page:DirectionalLight]
+			are parallel.
+		</div>
+
+		<h2>Example</h2>
+		<div>
+			<code>
+//Create a WebGLRenderer and turn on shadows in the renderer
+var renderer = new THREE.WebGLRenderer();
+renderer.shadowMap.enabled = true;
+renderer.shadowMap.type = THREE.PCFSoftShadowMap; // default THREE.PCFShadowMap
+
+//Create a DirectionalLight and turn on shadows for the light
+var light = new THREE.DirectionalLight( 0xffffff, 1, 100 );
+light.position.set( 0, 1, 0 ); 			//default; light shining from top
+light.castShadow = true;            // default false
+scene.add( light );
+
+//Set up shadow properties for the light
+light.shadow.mapSize.width = 512;  // default
+light.shadow.mapSize.height = 512; // default
+light.shadow.camera.near = 0.5;       // default
+light.shadow.camera.far = 500      // default
+
+//Create a sphere that cast shadows (but does not receive them)
+var sphereGeometry = new THREE.SphereBufferGeometry( 5, 32, 32 );
+var sphereMaterial = new THREE.MeshStandardMaterial( { color: 0xff0000 } );
+var sphere = new THREE.Mesh( sphereGeometry, sphereMaterial );
+sphere.castShadow = true; //default is false
+sphere.receiveShadow = false; //default
+scene.add( sphere );
+
+//Create a plane that receives shadows (but does not cast them)
+var planeGeometry = new THREE.PlaneBufferGeometry( 20, 20, 32, 32 );
+var planeMaterial = new THREE.MeshStandardMaterial( { color: 0x00ff00 } )
+var plane = new THREE.Mesh( planeGeometry, planeMaterial );
+plane.receiveShadow = true;
+scene.add( plane );
+
+//Create a helper for the shadow camera (optional)
+var helper = new THREE.CameraHelper( light.shadow.camera );
+scene.add( helper );
+			</code>
+		</div>
+
+		<h2>Constructor</h2>
+		<h3>[name]( )</h3>
+		<div>
+			Creates a new [name]. This is not intended to be called directly - it is called
+			internally by [page:DirectionalLight].
+		</div>
+
+		<h2>Properties</h2>
+		<div>
+			See the base [page:LightShadow LightShadow] class for common properties.
+		</div>
+
+		<h3>[property:Camera camera]</h3>
+		<div>
+			The light's view of the world. This is used to generate a depth map of the scene; objects behind
+			other objects from the light's perspective will be in shadow.<br /><br />
+
+			The default is an [page:OrthographicCamera] with [page:OrthographicCamera.left left] and
+			[page:OrthographicCamera.bottom bottom] set to -5,  [page:OrthographicCamera.right right]
+			and  [page:OrthographicCamera.top top] set to 5, the [page:OrthographicCamera.near near]
+			clipping plane at 0.5 and the [page:OrthographicCamera.far far] clipping plane at 500.
+		</div>
+
+
+		<h2>Methods</h2>
+		<div>
+			See the base [page:LightShadow LightShadow] class for common methods.
+		</div>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/lights/[name].js src/lights/[name].js]
+	</body>
+</html>

+ 141 - 0
docs/api/lights/shadows/LightShadow.html

@@ -0,0 +1,141 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+
+		<h1>[name]</h1>
+
+		<div class="desc">
+			This used internally by [page:PointLight PointLights] for calculating shadows, and also serves as
+			a base class for the other shadow classes.
+		</div>
+
+
+		<h2>Example</h2>
+		<div>
+			<code>
+//Create a WebGLRenderer and turn on shadows in the renderer
+var renderer = new THREE.WebGLRenderer();
+renderer.shadowMap.enabled = true;
+renderer.shadowMap.type = THREE.PCFSoftShadowMap; // default THREE.PCFShadowMap
+
+//Create a PointLight and turn on shadows for the light
+var light = new THREE.PointLight( 0xffffff, 1, 100 );
+light.position.set( 0, 10, 0 );
+light.castShadow = true;            // default false
+scene.add( light );
+
+//Set up shadow properties for the light
+light.shadow.mapSize.width = 512;  // default
+light.shadow.mapSize.height = 512; // default
+light.shadow.camera.near = 0.5;       // default
+light.shadow.camera.far = 500      // default
+
+//Create a sphere that cast shadows (but does not receive them)
+var sphereGeometry = new THREE.SphereBufferGeometry( 5, 32, 32 );
+var sphereMaterial = new THREE.MeshStandardMaterial( { color: 0xff0000 } );
+var sphere = new THREE.Mesh( sphereGeometry, sphereMaterial );
+sphere.castShadow = true; //default is false
+sphere.receiveShadow = false; //default
+scene.add( sphere );
+
+//Create a plane that receives shadows (but does not cast them)
+var planeGeometry = new THREE.PlaneBufferGeometry( 20, 20, 32, 32 );
+var planeMaterial = new THREE.MeshStandardMaterial( { color: 0x00ff00 } )
+var plane = new THREE.Mesh( planeGeometry, planeMaterial );
+plane.receiveShadow = true;
+scene.add( plane );
+
+//Create a helper for the shadow camera (optional)
+var helper = new THREE.CameraHelper( light.shadow.camera );
+scene.add( helper );
+			</code>
+		</div>
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( [page:Camera camera] )</h3>
+		<div>
+		[page:Camera camera] - the light's view of the world.<br /><br />
+
+		Create a new [name]. This is not intended to be called directly - it is called
+		internally by [page:PointLight] or used as a base class by other light shadows.
+		</div>
+
+		<h2>Properties</h2>
+
+		<h3>[property:Camera camera]</h3>
+		<div>
+			The light's view of the world. This is used to generate a depth map of the scene; objects behind
+			other objects from the light's perspective will be in shadow.
+		</div>
+
+		<h3>[property:Float bias]</h3>
+		<div>
+			Shadow map bias, how much to add or subtract from the normalized depth when deciding whether a surface is in shadow.<br />
+			The default is 0. Very tiny adjustments here (in the order of 0.0001) may help reduce artefacts in shadows
+		</div>
+
+		<h3>[property:WebGLRenderTarget map]</h3>
+		<div>
+			The depth map generated using the internal camera; a location beyond a pixel's depth is
+			in shadow. Computed internally during rendering.
+		</div>
+
+
+		<h3>[property:Vector2 mapSize]</h3>
+		<div>
+			A [Page:Vector2] defining the width and height of the shadow map.<br /><br />
+
+			Higher values give better quality shadows at the cost of computation time. Values must be
+			powers of 2, up to the [page:WebGLRenderer.capabilities].maxTextureSize for a given device,
+			although the width and height don't have to be the same (so, for example, (512, 1024) is valid).
+			The default is *( 512, 512 )*.
+		</div>
+
+
+		<h3>[property:Matrix4 matrix]</h3>
+		<div>
+			Model to shadow camera space, to compute location and depth in shadow map. Stored
+			in a [page:Matrix4 Matrix4]. This is computed internally during rendering.
+		</div>
+
+		<h3>[property:Float radius]</h3>
+		<div>
+			Setting this this to values greater than 1 will blur the edges of the shadow.<br />
+
+			High values will cause unwanted banding effects in the shadows - a greater [page:.mapSize mapSize]
+			will allow for a higher value to be used here before these effects become visible.<br /><br />
+
+			Note that this has no effect if the [page:WebGLRenderer.shadowMap.type] is set to [page:Renderer BasicShadowMap].
+		</div>
+
+
+		<h2>Methods</h2>
+		<h3>[method:LightShadow copy]( [page:LightShadow source] )</h3>
+		<div>
+		Copies value of all the properties from the [page:LightShadow source] to this
+		SpotLight.
+		</div>
+
+		<h3>[method:LightShadow clone]()</h3>
+		<div>
+		Creates a new LightShadow with the same properties as this one.
+		</div>
+
+		<h3>[method:Object toJSON]()</h3>
+		<div>
+		Serialize this LightShadow.
+		</div>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/lights/[name].js src/lights/[name].js]
+	</body>
+</html>

+ 54 - 0
docs/api/lights/shadows/RectAreaLightShadow.html

@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+
+		<h1>[name]</h1>
+
+		<div class="desc">
+			<em>Note: this is currently being developed and does nothing at the moment (r83).
+				Check back in a while!</em><br /><br />
+
+			This used internally by [page:RectAreaLight RectAreaLight] for calculating shadows.
+		</div>
+
+
+		<!--
+		<h2>Example</h2>
+		<div>
+			<code>
+			</code>
+		</div>
+	-->
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( [page:Camera camera] )</h3>
+		<div>
+		[page:Camera camera] - the light's view of the world.<br /><br />
+
+		Create a new [name]. This is not intended to be called directly - it is called
+		internally by [page:RectAreaLight].
+		</div>
+
+		<h2>Properties</h2>
+		<div>
+			See the base [page:LightShadow] class for common properties.
+		</div>
+
+		<h2>Methods</h2>
+		<div>
+			See the base [page:LightShadow] class for common methods.
+		</div>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/lights/[name].js src/lights/[name].js]
+	</body>
+</html>

+ 97 - 0
docs/api/lights/shadows/SpotLightShadow.html

@@ -0,0 +1,97 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:LightShadow] &rarr;
+
+		<h1>[name]</h1>
+
+		<div class="desc">
+			This used internally by [page:SpotLight SpotLights] for calculating shadows.
+		</div>
+
+		<h2>Example</h2>
+		<div>
+			<code>
+//Create a WebGLRenderer and turn on shadows in the renderer
+var renderer = new THREE.WebGLRenderer();
+renderer.shadowMap.enabled = true;
+renderer.shadowMap.type = THREE.PCFSoftShadowMap; // default THREE.PCFShadowMap
+
+//Create a SpotLight and turn on shadows for the light
+var light = new THREE.SpotLight( 0xffffff );
+light.castShadow = true;            // default false
+scene.add( light );
+
+//Set up shadow properties for the light
+light.shadow.mapSize.width = 512;  // default
+light.shadow.mapSize.height = 512; // default
+light.shadow.camera.near = 0.5;       // default
+light.shadow.camera.far = 500      // default
+
+//Create a sphere that cast shadows (but does not receive them)
+var sphereGeometry = new THREE.SphereBufferGeometry( 5, 32, 32 );
+var sphereMaterial = new THREE.MeshStandardMaterial( { color: 0xff0000 } );
+var sphere = new THREE.Mesh( sphereGeometry, sphereMaterial );
+sphere.castShadow = true; //default is false
+sphere.receiveShadow = false; //default
+scene.add( sphere );
+
+//Create a plane that receives shadows (but does not cast them)
+var planeGeometry = new THREE.PlaneBufferGeometry( 20, 20, 32, 32 );
+var planeMaterial = new THREE.MeshStandardMaterial( { color: 0x00ff00 } )
+var plane = new THREE.Mesh( planeGeometry, planeMaterial );
+plane.receiveShadow = true;
+scene.add( plane );
+
+//Create a helper for the shadow camera (optional)
+var helper = new THREE.CameraHelper( light.shadow.camera );
+scene.add( helper );
+			</code>
+		</div>
+
+
+		<h2>Constructor</h2>
+
+		The constructor creates a [page:PerspectiveCamera PerspectiveCamera] to manage the shadow's view of the world.
+
+		<h2>Properties</h2>
+		See the base [page:LightShadow LightShadow] class for common properties.
+
+
+	 <h3>[property:Camera camera]</h3>
+	 <div>
+		 The light's view of the world. This is used to generate a depth map of the scene; objects behind
+		 other objects from the light's perspective will be in shadow.<br /><br />
+
+		 The default is a  [page:PerspectiveCamera] with [page:PerspectiveCamera.fov fov] of 90,
+	  [page:PerspectiveCamera.aspect aspect] of 1, [page:PerspectiveCamera.near near]
+		clipping plane at 0.5 and	[page:PerspectiveCamera.far far] clipping plane at 500.
+	 </div>
+
+	 <h3>[property:Boolean isSpotLightShadow]</h3>
+	 <div>
+		 Used to check whether this or derived classes are spot light shadows. Default is *true*.<br /><br />
+
+		 You should not change this, as it used internally for optimisation.
+	 </div>
+
+		<h2>Methods</h2>
+		See the base [page:LightShadow LightShadow] class for common methods.
+
+		<h3>[method:SpotLightShadow update]( [page:SpotLight light] )</h3>
+		<div>
+		Updates the internal perspective [page:.camera camera] based on the passed in [page:SpotLight light].
+		</div>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/lights/[name].js src/lights/[name].js]
+	</body>
+</html>

+ 0 - 62
docs/api/loaders/BinaryTextureLoader.html

@@ -1,62 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		<h1>[name]</h1>
-
-		<div class="desc">
-		Abstract base class to load generic binary textures formats (rgbe, hdr, ...).
-		This uses the [page:FileLoader] internally for loading files.
-		</div>
-
-		<h2>Examples</h2>
-
-		<div>
-			See the [link:https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/RGBELoader.js RGBELoader]
-			for an example of a derived class.
-		</div>
-
-		<h2>Constructor</h2>
-
-		<h3>[name]( [page:LoadingManager manager] )</h3>
-		<div>
-		[page:LoadingManager manager] — The [page:LoadingManager loadingManager] for the loader to use.
-		Default is [page:LoadingManager THREE.DefaultLoadingManager].<br /><br />
-
-		Creates a new [name].
-		</div>
-
-
-		<h2>Properties</h2>
-
-		<h3>[property:LoadingManager manager]</h3>
-		<div>
-		The [page:LoadingManager loadingManager] the loader is using. Default is [page:DefaultLoadingManager].
-		</div>
-
-
-		<h2>Methods</h2>
-
-		<h3>[method:null load]( [page:String url], [page:Function onLoad], [page:Function onProgress], [page:Function onError] )</h3>
-		<div>
-		[page:String url] — the path or URL to the file. This can also be a
-			[link:https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs Data URI].<br />
-		[page:Function onLoad] — Will be called when load completes. The argument will be the loaded texture.<br />
-		[page:Function onProgress] — Will be called while load progresses. The argument will be the XmlHttpRequest instance, that contain .[page:Integer total] and .[page:Integer loaded] bytes.<br />
-		[page:Function onError] — Will be called when load errors.<br />
-		</div>
-		<div>
-		Begin loading from url and pass the loaded texture to onLoad.
-		</div>
-
-		<h2>Source</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-	</body>
-</html>

+ 47 - 2
docs/api/loaders/DataTextureLoader.html

@@ -10,9 +10,54 @@
 	<body>
 		<h1>[name]</h1>
 
-		<div class="desc">This is an alias for the [page:BinaryTextureLoader BinaryTextureLoader].
-			See that page for details.
+		<div class="desc">
+		Abstract base class to load generic binary textures formats (rgbe, hdr, ...).
+		This uses the [page:FileLoader] internally for loading files, and creates a new
+		[page:DataTexture].
 		</div>
 
+		<h2>Examples</h2>
+
+		<div>
+			See the [link:https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/RGBELoader.js RGBELoader]
+			for an example of a derived class.
+		</div>
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( [page:LoadingManager manager] )</h3>
+		<div>
+		[page:LoadingManager manager] — The [page:LoadingManager loadingManager] for the loader to use.
+		Default is [page:LoadingManager THREE.DefaultLoadingManager].<br /><br />
+
+		Creates a new [name].
+		</div>
+
+
+		<h2>Properties</h2>
+
+		<h3>[property:LoadingManager manager]</h3>
+		<div>
+		The [page:LoadingManager loadingManager] the loader is using. Default is [page:DefaultLoadingManager].
+		</div>
+
+
+		<h2>Methods</h2>
+
+		<h3>[method:null load]( [page:String url], [page:Function onLoad], [page:Function onProgress], [page:Function onError] )</h3>
+		<div>
+		[page:String url] — the path or URL to the file. This can also be a
+			[link:https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs Data URI].<br />
+		[page:Function onLoad] — Will be called when load completes. The argument will be the loaded texture.<br />
+		[page:Function onProgress] — Will be called while load progresses. The argument will be the XmlHttpRequest instance, that contain .[page:Integer total] and .[page:Integer loaded] bytes.<br />
+		[page:Function onError] — Will be called when load errors.<br />
+		</div>
+		<div>
+		Begin loading from url and pass the loaded texture to onLoad.
+		</div>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>
 </html>

+ 1 - 1
docs/api/loaders/MaterialLoader.html

@@ -58,7 +58,7 @@
 		</div>
 
 		<h3>[property:Object textures]</h3>
-		<div>Object holding any textures used by the material. See [page.setTextures].</div>
+		<div>Object holding any textures used by the material. See [page:.setTextures].</div>
 
 
 		<h2>Methods</h2>

+ 2 - 2
docs/api/loaders/DefaultLoadingManager.html → docs/api/loaders/managers/DefaultLoadingManager.html

@@ -2,7 +2,7 @@
 <html lang="en">
 	<head>
 		<meta charset="utf-8" />
-		<base href="../../" />
+		<base href="../../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
@@ -70,6 +70,6 @@ THREE.DefaultLoadingManager.onError = function ( url ) {
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/loaders/loadingManager.js loadingManager.js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/loaders/LoadingManager.js src/loaders/LoadingManager.js]
 	</body>
 </html>

+ 3 - 3
docs/api/loaders/LoadingManager.html → docs/api/loaders/managers/LoadingManager.html

@@ -1,8 +1,8 @@
 <!DOCTYPE html>
 <html lang="en">
 	<head>
-		<meta charset="utf-8" />
-		<base href="../../" />
+		<meta charset="utf-8" />
+		<base href="../../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
@@ -150,6 +150,6 @@
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/loaders/LoadingManager.js src/loaders/LoadingManager.js]
 	</body>
 </html>

+ 1 - 1
docs/api/materials/LineBasicMaterial.html

@@ -38,7 +38,7 @@
 		<code>
 var material = new THREE.LineBasicMaterial( {
 	color: 0xffffff,
-	lineWidth: 1,
+	linewidth: 1,
 	linecap: 'round', //ignored by WebGLRenderer
 	linejoin:  'round' //ignored by WebGLRenderer
 } );

+ 1 - 1
docs/api/materials/LineDashedMaterial.html

@@ -24,7 +24,7 @@
 		<code>
 var material = new THREE.LineDashedMaterial( {
 	color: 0xffffff,
-	lineWidth: 1,
+	linewidth: 1,
 	scale: 1,
 	dashSize: 3,
 	gapSize: 1,

+ 1 - 1
docs/api/materials/Material.html

@@ -256,7 +256,7 @@
 		<h3>[method:null toJSON]( [page:object meta] )</h3>
 		<div>
 		meta -- object containing metadata such as textures or images for the material.<br />
-		Convert the material to Three JSON format.
+		Convert the material to three.js JSON format.
 		</div>
 
 		<h3>[method:null update]()</h3>

+ 1 - 1
docs/api/materials/MeshStandardMaterial.html

@@ -48,7 +48,7 @@
 				</li>
 			</ul>
 
-			Technical details of the approach used in Three (and most other PBR systems) can be found is this
+			Technical details of the approach used in three.js (and most other PBR systems) can be found is this
 			[link:https://disney-animation.s3.amazonaws.com/library/s2012_pbs_disney_brdf_notes_v2.pdf paper from Disney] (pdf),
 			by Brent Burley.
 		</div>

+ 7 - 7
docs/api/materials/MultiMaterial.html

@@ -42,12 +42,12 @@
 //The following will create a cube with a different material applied to each side
 var materials = [
 
-    new THREE.MeshBasicMaterial( { color: 0xff0000 ) } ), // right
-    new THREE.MeshBasicMaterial( { color: 0x0000ff ) } ), // left
-    new THREE.MeshBasicMaterial( { color: 0x00ff00 ) } ), // top
-    new THREE.MeshBasicMaterial( { color: 0xffff00 ) } ), // bottom
-    new THREE.MeshBasicMaterial( { color: 0x00ffff ) } ), // back
-    new THREE.MeshBasicMaterial( { color: 0xff00ff ) } )  // front
+    new THREE.MeshBasicMaterial( { color: 0xff0000 } ), // right
+    new THREE.MeshBasicMaterial( { color: 0x0000ff } ), // left
+    new THREE.MeshBasicMaterial( { color: 0x00ff00 } ), // top
+    new THREE.MeshBasicMaterial( { color: 0xffff00 } ), // bottom
+    new THREE.MeshBasicMaterial( { color: 0x00ffff } ), // back
+    new THREE.MeshBasicMaterial( { color: 0xff00ff } )  // front
 
 ];
 
@@ -100,7 +100,7 @@ scene.add( cubeMesh );
 		<h3>[method:null toJSON]( [page:object meta] )</h3>
 		<div>
 		meta -- object containing metadata such as textures or images for the material.<br />
-		Convert the material to Three JSON format.
+		Convert the material to three.js JSON format.
 		</div>
 		<h2>Source</h2>
 

+ 2 - 2
docs/api/materials/PointsMaterial.html

@@ -44,13 +44,13 @@ for ( var i = 0; i < 10000; i ++ ) {
 	star.y = THREE.Math.randFloatSpread( 2000 );
 	star.z = THREE.Math.randFloatSpread( 2000 );
 
-	geometry.vertices.push( star );
+	starsGeometry.vertices.push( star )
 
 }
 
 var starsMaterial = new THREE.PointsMaterial( { color: 0x888888 } )
 
-var starField = new THREE.Points( geometry, starsMaterial );
+var starField = new THREE.Points( starsGeometry, starsMaterial );
 
 scene.add( starField );
 		</code>

+ 114 - 127
docs/api/math/Box2.html

@@ -10,7 +10,9 @@
 	<body>
 		<h1>[name]</h1>
 
-		<div class="desc">Represents a boundary box in 2D space.</div>
+		<div class="desc">
+			Represents a box in 2D space.
+		</div>
 
 
 		<h2>Constructor</h2>
@@ -18,11 +20,13 @@
 
 		<h3>[name]( [page:Vector2 min], [page:Vector2 max] )</h3>
 		<div>
-		min -- Lower (x, y) boundary of the box.<br>
-		max -- Upper (x, y) boundary of the box.
-		</div>
-		<div>
-		Creates a box bounded by min and max.
+		[page:Vector2 min] - (optional) [page:Vector2] representing the lower (x, y) boundary of the box.
+		Default is ( + Infinity, + Infinity ).<br>
+
+		[page:Vector2 max] - (optional) [page:Vector2] representing the lower upper (x, y) boundary of the box.
+		Default is ( - Infinity, - Infinity ).<br /><br />
+
+		Creates a [name] bounded by min and max.
 		</div>
 
 
@@ -32,203 +36,186 @@
 
 		<h3>[property:Vector2 min]</h3>
 		<div>
-		Lower (x, y) boundary of this box.
+			[page:Vector2] representing the lower (x, y) boundary of the box.<br />
+			Default is ( + Infinity, + Infinity ).
 		</div>
 
 		<h3>[property:Vector2 max]</h3>
 		<div>
-		Upper (x, y) boundary of this box.
+			[page:Vector2] representing the lower upper (x, y) boundary of the box.<br />
+			Default is ( - Infinity, - Infinity ).
 		</div>
 
-		<h2>Methods</h2>
 
 
+		<h2>Methods</h2>
 
-		<h3>[method:Box2 set]( [page:Vector2 min], [page:Vector2 max] ) [page:Box2 this]</h3>
+		<h3>[method:Vector2 clampPoint]( [page:Vector2 point], [page:Vector2 optionalTarget] )</h3>
 		<div>
-		min -- Lower (x, y) boundary of the box. <br>
-		max -- Upper (x, y) boundary of the box.
-		</div>
-		<div>
-		Sets the lower and upper (x, y) boundaries of this box.
-		</div>
+		[page:Vector2 point] - [page:Vector2] to clamp. <br>
+		[page:Vector2 optionalTarget] — (optional) if specified, the result will be copied into this Vector2,
+		otherwise a new Vector2 will be created. <br /><br />
 
-		<h3>[method:Box2 expandByPoint]( [page:Vector2 point] ) [page:Box2 this]</h3>
-		<div>
-		point -- Point that should be included in the box.
-		</div>
-		<div>
-		Expands the boundaries of this box to include *point*.
+		[link:https://en.wikipedia.org/wiki/Clamping_(graphics) Clamps] the [page:Vector2 point] within the bounds of this box.<br />
 		</div>
 
-		<h3>[method:Vector2 clampPoint]( [page:Vector2 point], [page:Vector2 optionalTarget] ) [page:Box2 this]</h3>
-		<div>
-		point -- Position to clamp. <br>
-		optionalTarget -- If specified, the clamped result will be copied here.
-		</div>
-		<div>
-		Clamps *point* within the bounds of this box.
-		</div>
+		<h3>[method:Box2 clone]()</h3>
+		<div>Returns a new [page:Box2] with the same [page:.min min] and [page:.max max] as this one.</div>
 
-		<h3>[method:Boolean intersectsBox]( [page:Box2 box] ) [page:Box2 this]</h3>
+		<h3>[method:Boolean containsBox]( [page:Box2 box] )</h3>
 		<div>
-		box -- Box to check for intersection against.
+		[page:Box2 box] - [page:Box2 Box2] to test for inclusion.<br /><br />
+
+		Returns true if this box includes the entirety of [page:Box2 box]. If this and [page:Box2 box] are identical, <br>
+		this function also returns true.
 		</div>
+
+		<h3>[method:Boolean containsPoint]( [page:Vector2 point] )</h3>
 		<div>
-		Determines whether or not this box intersects *box*.
+		[page:Vector2 point] - [page:Vector2] to check for inclusion.<br /><br />
+
+		Returns true if the specified [page:Vector2 point] lies within or on the boundaries of this box.
 		</div>
 
-		<h3>[method:Box2 setFromPoints]( [page:Array points] ) [page:Box2 this]</h3>
+		<h3>[method:Box2 copy]( [page:Box2 box] )</h3>
 		<div>
-		points -- Set of points that the resulting box will envelop.
+		Copies the [page:.min min] and [page:.max max] from [page:Box2 box] to this box.
 		</div>
+
+		<h3>[method:Float distanceToPoint]( [page:Vector2 point] )</h3>
 		<div>
-		Sets the upper and lower bounds of this box to include all of the points in *points*.
+		[page:Vector2 point] - [page:Vector2] to measure distance to.<br /><br />
+
+		Returns the distance from any edge of this box to the specified point.
+		If the [page:Vector2 point] lies inside of this box, the distance will be 0.
 		</div>
 
-		<h3>[method:Vector2 getSize]( [page:Vector2 optionalTarget] ) [page:Box2 this]</h3>
+		<h3>[method:Boolean equals]( [page:Box2 box] )</h3>
 		<div>
-		optionalTarget -- If specified, the result will be copied here.
+		[page:Box2 box] - Box to compare with this one.<br /><br />
+
+		Returns true if this box and [page:Box2 box] share the same lower and upper bounds.
 		</div>
+
+		<h3>[method:Box2 expandByPoint]( [page:Vector2 point] )</h3>
 		<div>
-		Returns the width and height of this box.
+		[page:Vector2 point] - [page:Vector2] that should be included in the box.<br /><br />
+
+		Expands the boundaries of this box to include [page:Vector2 point].
 		</div>
 
-		<h3>[method:Box2 union]( [page:Box2 box] ) [page:Box2 this]</h3>
+		<h3>[method:Box2 expandByScalar]( [page:float scalar] )</h3>
 		<div>
-		box -- Box that will be unioned with this box.
+		[page:float scalar] - Distance to expand the box by.<br /><br />
+
+		Expands each dimension of the box by [page:float scalar]. If negative, the dimensions of the box
+		will be contracted.
 		</div>
+
+		<h3>[method:Box2 expandByVector]( [page:Vector2 vector] )</h3>
 		<div>
-		Unions this box with *box* setting the upper bound of this box to the greater of the <br>
-		two boxes' upper bounds and the lower bound of this box to the lesser of the two boxes' <br>
-		lower bounds.
+		[page:Vector2 vector] - [page:Vector2] to expand the box by.<br /><br />
+
+		Expands this box equilaterally by [page:Vector2 vector]. The width of this box will be
+		expanded by the x component of [page:Vector2 vector] in both directions. The height of
+		this box will be expanded by the y component of [page:Vector2 vector] in both directions.
 		</div>
 
-		<h3>[method:Vector2 getParameter]( [page:Vector2 point], [page:Vector2 optionalTarget] ) [page:Box2 this]</h3>
+		<h3>[method:Vector2 getCenter]( [page:Vector2 optionalTarget] )</h3>
 		<div>
-		point -- [page:Vector2]<br/>
-		optionalTarget -- [page:Vector2]<br/>
+			[page:Vector2 optionalTarget] — (optional) if specified, the result will be copied into this Vector2,
+			otherwise a new Vector2 will be created. <br /><br />
 
+		Returns the center point of the box as a [page:Vector2].
 		</div>
+
+		<h3>[method:Vector2 getParameter]( [page:Vector2 point], [page:Vector2 optionalTarget] ) </h3>
 		<div>
+		[page:Vector2 point] - [page:Vector2].<br/>
+		[page:Vector2 optionalTarget] — (optional) if specified, the result will be copied into this Vector2,
+		otherwise a new Vector2 will be created. <br /><br />
+
 		Returns a point as a proportion of this box's width and height.
 		</div>
 
-		<h3>[method:Box2 expandByScalar]( [page:float scalar] ) [page:Box2 this]</h3>
+		<h3>[method:Vector2 getSize]( [page:Vector2 optionalTarget] )</h3>
 		<div>
-		scalar -- Distance to expand.
-		</div>
-		<div>
-		Expands each dimension of the box by *scalar*. If negative, the dimensions of the box <br>
-		will be contracted.
-		</div>
+			[page:Vector2 optionalTarget] — (optional) if specified, the result will be copied into this Vector2,
+			otherwise a new Vector2 will be created. <br /><br />
 
-		<h3>[method:Box2 intersect]( [page:Box2 box] ) [page:Box2 this]</h3>
-		<div>
-		box -- Box to intersect with.
+		Returns the width and height of this box.
 		</div>
+
+		<h3>[method:Box2 intersect]( [page:Box2 box] )</h3>
 		<div>
-		Returns the intersection of this and *box*, setting the upper bound of this box to the lesser <br>
-		of the two boxes' upper bounds and the lower bound of this box to the greater of the two boxes' <br>
+		[page:Box2 box] - Box to intersect with.<br /><br />
+
+		Returns the intersection of this and [page:Box2 box], setting the upper bound of this box to the lesser
+		of the two boxes' upper bounds and the lower bound of this box to the greater of the two boxes'
 		lower bounds.
 		</div>
 
-		<h3>[method:Boolean containsBox]( [page:Box2 box] ) [page:Box2 this]</h3>
-		<div>
-		box -- Box to test for inclusion.
-		</div>
+		<h3>[method:Boolean intersectsBox]( [page:Box2 box] )</h3>
 		<div>
-		Returns true if this box includes the entirety of *box*. If this and *box* overlap exactly, <br>
-		this function also returns true.
-		</div>
+		[page:Box2 box] - Box to check for intersection against.<br /><br />
 
-		<h3>[method:Box2 translate]( [page:Vector2 offset] ) [page:Box2 this]</h3>
-		<div>
-		offset -- Direction and distance of offset.
-		</div>
-		<div>
-		Adds *offset* to both the upper and lower bounds of this box, effectively moving this box <br>
-		*offset* units in 2D space.
+		Determines whether or not this box intersects [page:Box2 box].
 		</div>
 
-		<h3>[method:Boolean isEmpty]() [page:Box2 this]</h3>
+		<h3>[method:Boolean isEmpty]()</h3>
 		<div>
 		Returns true if this box includes zero points within its bounds.<br>
-		Note that a box with equal lower and upper bounds still includes one point, the <br>
+		Note that a box with equal lower and upper bounds still includes one point, the
 		one both bounds share.
 		</div>
 
-		<h3>[method:Box2 clone]() [page:Box2 this]</h3>
-		<div>
-		Returns a copy of this box.
-		</div>
+		<h3>[method:Box2 makeEmpty]()</h3>
+		<div>Makes this box empty.</div>
 
-		<h3>[method:Boolean equals]( [page:Box2 box] ) [page:Box2 this]</h3>
-		<div>
-		box -- Box to compare.
-		</div>
-		<div>
-		Returns true if this box and *box* share the same lower and upper bounds.
-		</div>
 
-		<h3>[method:Box2 expandByVector]( [page:Vector2 vector] ) [page:Box2 this]</h3>
-		<div>
-		vector -- Amount to expand this box in each dimension.
-		</div>
+		<h3>[method:Box2 set]( [page:Vector2 min], [page:Vector2 max] )</h3>
 		<div>
-		Expands this box equilaterally by *vector*. The width of this box will be <br>
-		expanded by the x component of *vector* in both directions. The height of <br>
-		this box will be expanded by the y component of *vector* in both directions.
-		</div>
+			[page:Vector2 min] - (required ) [page:Vector2] representing the lower (x, y) boundary of the box. <br>
+			[page:Vector2 max]  - (required) [page:Vector2] representing the lower upper (x, y) boundary of the box. <br /><br />
 
-		<h3>[method:Box2 copy]( [page:Box2 box] ) [page:Box2 this]</h3>
-		<div>
-		box -- Box to copy.
-		</div>
-		<div>
-		Copies the values of *box* to this box.
+			Sets the lower and upper (x, y) boundaries of this box.
 		</div>
 
-		<h3>[method:Box2 makeEmpty]() [page:Box2 this]</h3>
+		<h3>[method:Box2 setFromCenterAndSize]( [page:Vector2 center], [page:Vector2 size] )</h3>
 		<div>
-		Makes this box empty.
-		</div>
+		[page:Vector2 center] - Desired center position of the box ([page:Vector2]). <br>
+		[page:Vector2 size] - Desired x and y dimensions of the box ([page:Vector2]).<br /><br />
 
-		<h3>[method:Vector2 getCenter]( [page:Vector2 optionalTarget] ) [page:Box2 this]</h3>
-		<div>
-		optionalTarget -- If specified, the result will be copied here.
-		</div>
-		<div>
-		Returns the center point of this box.
+		Centers this box on [page:Vector2 center] and sets this box's width and height to the values specified
+		in [page:Vector2 size].
 		</div>
 
-		<h3>[method:Float distanceToPoint]( [page:Vector2 point] ) [page:Box2 this]</h3>
+		<h3>[method:Box2 setFromPoints]( [page:Array points] )</h3>
 		<div>
-		point -- Point to measure distance to.
-		</div>
-		<div>
-		Returns the distance from any edge of this box to the specified point. <br>
-		If the point lies inside of this box, the distance will be 0.
-		</div>
+		[page:Array points] - Array of [page:Vector2 Vector2s] that the resulting box will contain.<br /><br />
 
-		<h3>[method:Boolean containsPoint]( [page:Vector2 point] ) [page:Box2 this]</h3>
-		<div>
-		point -- [page:Vector2] to check for inclusion.
-		</div>
-		<div>
-		Returns true if the specified point lies within the boundaries of this box.
+		Sets the upper and lower bounds of this box to include all of the points in [page:Array points].
 		</div>
 
-		<h3>[method:Box2 setFromCenterAndSize]( [page:Vector2 center], [page:Vector2 size] ) [page:Box2 this]</h3>
+		<h3>[method:Box2 translate]( [page:Vector2 offset] )</h3>
 		<div>
-		center -- Desired center position of the box. <br>
-		size -- Desired x and y dimensions of the box.
+		[page:Vector2 offset] - Direction and distance of offset.<br /><br />
+
+		Adds [page:Vector2 offset] to both the upper and lower bounds of this box, effectively moving this box
+		[page:Vector2 offset] units in 2D space.
 		</div>
+
+		<h3>[method:Box2 union]( [page:Box2 box] )</h3>
 		<div>
-		Centers this box on *center* and sets this box's width and height to the values specified <br>
-		in *size*.
+		[page:Box2 box] - Box that will be unioned with this box.<br /><br />
+
+		Unions this box with [page:Box2 box], setting the upper bound of this box to the greater of the
+		two boxes' upper bounds and the lower bound of this box to the lesser of the two boxes'
+		lower bounds.
 		</div>
 
+
+
 		<h2>Source</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

+ 161 - 167
docs/api/math/Box3.html

@@ -10,282 +10,276 @@
 	<body>
 		<h1>[name]</h1>
 
-		<div class="desc">Represents a boundary box in 3d space.</div>
+		<div class="desc">
+			Represents a box or cube in 3D space. The main purpose of this is to represent
+			the [link:https://en.wikipedia.org/wiki/Minimum_bounding_box Minimum Bounding Boxes]
+			for objects.
+		</div>
 
 
 		<h2>Constructor</h2>
 
 
 		<h3>[name]( [page:Vector3 min], [page:Vector3 max] )</h3>
-		<div>
-		min -- Lower (x, y, z) boundary of the box.<br>
-		max -- Upper (x, y, z) boundary of the box.
-		</div>
-		<div>
-		Creates a box bounded by min and max.
+		[page:Vector3 min] - (optional) [page:Vector3] representing the lower (x, y, z) boundary of the box.
+		Default is ( + Infinity, + Infinity, + Infinity ).<br>
+
+		[page:Vector3 max] - (optional) [page:Vector3] representing the lower upper (x, y, z) boundary of the box.
+		Default is ( - Infinity, - Infinity, - Infinity ).<br /><br />
+
+		Creates a [name] bounded by min and max.
 		</div>
 
 		<h2>Properties</h2>
 
+		<h3>[property:Boolean isBox3]</h3>
+		<div>
+			Used to check whether this or derived classes are Box3s. Default is *true*.<br /><br />
 
+			You should not change this, as it used internally for optimisation.
+		</div>
 
 		<h3>[property:Vector3 min]</h3>
 		<div>
-		Lower (x, y, z) boundary of this box.
+			[page:Vector3] representing the lower (x, y, z) boundary of the box.<br />
+			Default is ( + Infinity, + Infinity, + Infinity ).
 		</div>
 
 		<h3>[property:Vector3 max]</h3>
 		<div>
-		Upper (x, y, z) boundary of this box.
+			[page:Vector3] representing the lower upper (x, y, z) boundary of the box.<br />
+			Default is ( - Infinity, - Infinity, - Infinity ).
 		</div>
 
-		<h2>Methods</h2>
 
 
+		<h2>Methods</h2>
 
-		<h3>[method:Box3 set]( [page:Vector3 min], [page:Vector3 max] ) [page:Box3 this]</h3>
+		<h3>[method:Box3 applyMatrix4]( [page:Matrix4 matrix] )</h3>
 		<div>
-		min -- Lower (x, y, z) boundary of the box. <br>
-		max -- Upper (x, y, z) boundary of the box.
-		</div>
-		<div>
-		Sets the lower and upper (x, y, z) boundaries of this box.
-		</div>
+		[page:Matrix4 matrix] - The [page:Matrix4] to apply<br /><br />
 
-		<h3>[method:Box3 applyMatrix4]( [page:Matrix4 matrix] ) [page:Box3 this]</h3>
-		<div>
-		matrix -- The [page:Matrix4] to apply
-		</div>
-		<div>
 		Transforms this Box3 with the supplied matrix.
 		</div>
 
-		<h3>[method:Vector3 clampPoint]( [page:Vector3 point], [page:Vector3 optionalTarget] ) [page:Box3 this]</h3>
+		<h3>[method:Vector3 clampPoint]( [page:Vector3 point], [page:Vector3 optionalTarget] )</h3>
 		<div>
-		point -- Position to clamp. <br>
-		optionalTarget -- If specified, the clamped result will be copied here.
-		</div>
-		<div>
-		Clamps *point* within the bounds of this box.
-		</div>
+		[page:Vector3 point] - [page:Vector3] to clamp. <br>
+		[page:Vector3 optionalTarget] — (optional) if specified, the result will be copied into this Vector3,
+		otherwise a new Vector3 will be created. <br /><br />
 
-		<h3>[method:Boolean intersectsBox]( [page:Box3 box] ) [page:Box3 this]</h3>
-		<div>
-		box -- Box to check for intersection against.
-		</div>
-		<div>
-		Determines whether or not this box intersects *box*.
+		[link:https://en.wikipedia.org/wiki/Clamping_(graphics) Clamps] the [page:Vector3 point] within the bounds of this box.<br />
 		</div>
 
-		<h3>[method:Boolean intersectsSphere]( [page:Sphere sphere] ) [page:Box3 this]</h3>
-		<div>
-		sphere -- Sphere to check for intersection against.
-		</div>
-		<div>
-		Determines whether or not this box intersects *sphere*.
-		</div>
+		<h3>[method:Box3 clone]()</h3>
+		<div>Returns a new [page:Box3] with the same [page:.min min] and [page:.max max] as this one.</div>
 
-		<h3>[method:Boolean intersectsPlane]( [page:Plane plane] ) [page:Box3 this]</h3>
-		<div>
-		plane -- Plane to check for intersection against.
-		</div>
+		<h3>[method:Boolean containsBox]( [page:Box3 box] )</h3>
 		<div>
-		Determines whether or not this box intersects *plane*.
-		</div>
+		[page:Box3 box] - [page:Box3 Box3] to test for inclusion.<br /><br />
 
-		<h3>[method:Box3 setFromArray]( [page:Array array] ) [page:Box3 this]</h3>
-		<div>
-		array -- An array of position data that the resulting box will envelop.
-		</div>
-		<div>
-		Sets the upper and lower bounds of this box to include all of the data in *array*.
+		Returns true if this box includes the entirety of [page:Box3 box]. If this and [page:Box3 box] are identical, <br>
+		this function also returns true.
 		</div>
 
-		<h3>[method:Box3 setFromBufferAttribute]( [page:BufferAttribute attribute] ) [page:Box3 this]</h3>
-		<div>
-		buffer -- A buffer attribute of position data that the resulting box will envelop.
-		</div>
+		<h3>[method:Boolean containsPoint]( [page:Vector3 point] )</h3>
 		<div>
-		Sets the upper and lower bounds of this box to include all of the data in *attribute*.
-		</div>
+		[page:Vector3 point] - [page:Vector3] to check for inclusion.<br /><br />
 
-		<h3>[method:Box3 setFromPoints]( [page:Array points] ) [page:Box3 this]</h3>
-		<div>
-		points -- Set of points that the resulting box will envelop.
-		</div>
-		<div>
-		Sets the upper and lower bounds of this box to include all of the points in *points*.
+		Returns true if the specified [page:Vector3 point] lies within or on the boundaries of this box.
 		</div>
 
-		<h3>[method:Box3 setFromCenterAndSize]( [page:Vector3 center], [page:Vector3 size] ) [page:Box3 this]</h3>
-		<div>
-		center -- Desired center position of the box. <br>
-		size -- Desired x, y and z dimensions of the box.
-		</div>
+		<h3>[method:Box3 copy]( [page:Box3 box] )</h3>
 		<div>
-		Centers this box on *center* and sets this box's width, height and depth to the values specified <br>
-		in *size*.
-		</div>
+		[page:Box3 box]  - [page:Box3] to copy.<br /><br />
 
-		<h3>[method:Box3 setFromObject]( [page:Object3D object] ) [page:Box3 this]</h3>
-		<div>
-		object -- [page:Object3D] to compute the bounding box for.
+		Copies the [page:.min min] and [page:.max max] from [page:Box3 box] to this box.
 		</div>
+
+		<h3>[method:Float distanceToPoint]( [page:Vector3 point] )</h3>
 		<div>
-		Computes the world-axis-aligned bounding box of an object (including its children), <br>
-		accounting for both the object's, and childrens', world transforms
-		</div>
+		[page:Vector3 point] - [page:Vector3] to measure distance to.<br /><br />
 
+		Returns the distance from any edge of this box to the specified point.
+		If the [page:Vector3 point] lies inside of this box, the distance will be 0.
+		</div>
 
 
-		<h3>[method:Vector3 getSize]( [page:Vector3 optionalTarget] ) [page:Box3 this]</h3>
-		<div>
-		optionalTarget -- If specified, the result will be copied here.
-		</div>
+		<h3>[method:Boolean equals]( [page:Box3 box] )</h3>
 		<div>
-		Returns the width, height, and depth of this box.
-		</div>
+		[page:Box3 box] - Box to compare with this one.<br /><br />
 
-		<h3>[method:Box3 union]( [page:Box3 box] ) [page:Box3 this]</h3>
-		<div>
-		box -- Box that will be unioned with this box.
+		Returns true if this box and [page:Box3 box] share the same lower and upper bounds.
 		</div>
+
+		<h3>[method:Box3 expandByPoint]( [page:Vector3 point] )</h3>
 		<div>
-		Unions this box with *box* setting the upper bound of this box to the greater of the <br>
-		two boxes' upper bounds and the lower bound of this box to the lesser of the two boxes' <br>
-		lower bounds.
+		[page:Vector3 point] - [page:Vector3] that should be included in the box.<br /><br />
+
+		Expands the boundaries of this box to include [page:Vector3 point].
 		</div>
 
-		<h3>[method:Vector3 getParameter]( [page:Vector3 point], [page:Vector3 optionalTarget] ) [page:Box3 this]</h3>
+		<h3>[method:Box3 expandByScalar]( [page:float scalar] )</h3>
 		<div>
-		point -- Point to parametrize.
-		optionalTarget -- If specified, the result will be copied here.
+		[page:float scalar] - Distance to expand the box by.<br /><br />
+
+		Expands each dimension of the box by [page:float scalar]. If negative, the dimensions of the box
+		will be contracted.
 		</div>
+
+		<h3>[method:Box3 expandByVector]( [page:Vector3 vector] )</h3>
 		<div>
-		Returns point as a proportion of this box's width and height.
+		[page:Vector3 vector] - [page:Vector3] to expand the box by.<br /><br />
+
+		Expands this box equilaterally by [page:Vector3 vector]. The width of this box will be
+		expanded by the x component of [page:Vector3 vector] in both directions. The height of
+		this box will be expanded by the y component of [page:Vector3 vector] in both directions.
+		The depth of this box will be expanded by the z component of *vector* in both directions.
 		</div>
 
-		<h3>[method:Box3 intersect]( [page:Box3 box] ) [page:Box3 this]</h3>
+		<h3>[method:Sphere getBoundingSphere]( [page:Sphere optionalTarget] )</h3>
 		<div>
-		box -- Box to intersect with.
+			[page:Sphere optionalTarget] — (optional) if specified, the result will be copied into this Sphere,
+			otherwise a new Sphere will be created. <br /><br />
+
+		Gets a [page:Sphere] that bounds the box.
 		</div>
+
+		<h3>[method:Vector3 getCenter]( [page:Vector3 optionalTarget] )</h3>
 		<div>
-		Returns the intersection of this and *box*, setting the upper bound of this box to the lesser <br>
-		of the two boxes' upper bounds and the lower bound of this box to the greater of the two boxes' <br>
-		lower bounds.
+			[page:Vector3 optionalTarget] — (optional) if specified, the result will be copied into this Vector3,
+			otherwise a new Vector3 will be created. <br /><br />
+
+		Returns the center point of the box as a [page:Vector3].
 		</div>
 
-		<h3>[method:Boolean containsBox]( [page:Box3 box] ) [page:Box3 this]</h3>
+		<h3>[method:Vector3 getParameter]( [page:Vector3 point], [page:Vector3 optionalTarget] ) </h3>
 		<div>
-		box -- Box to test for inclusion.
+		[page:Vector3 point] - [page:Vector3].<br/>
+		[page:Vector3 optionalTarget] — (optional) if specified, the result will be copied into this Vector3,
+		otherwise a new Vector3 will be created. <br /><br />
+
+		Returns a point as a proportion of this box's width and height.
 		</div>
+
+		<h3>[method:Vector3 getSize]( [page:Vector3 optionalTarget] )</h3>
 		<div>
-		Returns true if this box includes the entirety of *box*. If this and *box* overlap exactly,<br>
-		this function also returns true.
+			[page:Vector3 optionalTarget] — (optional) if specified, the result will be copied into this Vector3,
+			otherwise a new Vector3 will be created. <br /><br />
+
+		Returns the width and height of this box.
 		</div>
 
-		<h3>[method:Boolean containsPoint]( [page:Vector3 point] ) [page:Box3 this]</h3>
+		<h3>[method:Box3 intersect]( [page:Box3 box] )</h3>
 		<div>
-		point -- [page:Vector3] to check for inclusion.
+		[page:Box3 box] - Box to intersect with.<br /><br />
+
+		Returns the intersection of this and [page:Box3 box], setting the upper bound of this box to the lesser
+		of the two boxes' upper bounds and the lower bound of this box to the greater of the two boxes'
+		lower bounds.
 		</div>
+
+		<h3>[method:Boolean intersectsBox]( [page:Box3 box] )</h3>
 		<div>
-		Returns true if the specified point lies within the boundaries of this box.
+		[page:Box3 box] - Box to check for intersection against.<br /><br />
+
+		Determines whether or not this box intersects [page:Box3 box].
 		</div>
 
-		<h3>[method:Box3 translate]( [page:Vector3 offset] ) [page:Box3 this]</h3>
+		<h3>[method:Boolean intersectsPlane]( [page:Plane plane] )</h3>
 		<div>
-		offset -- Direction and distance of offset.
+		[page:Plane plane] - [page:Plane] to check for intersection against.<br /><br />
+
+		Determines whether or not this box intersects [page:Plane plane].
 		</div>
+
+		<h3>[method:Boolean intersectsSphere]( [page:Sphere sphere] )</h3>
 		<div>
-		Adds *offset* to both the upper and lower bounds of this box, effectively moving this box <br>
-		*offset* units in 3D space.
+		[page:Sphere sphere] - [page:Sphere] to check for intersection against.<br /><br />
+
+		Determines whether or not this box intersects [page:Sphere sphere].
 		</div>
 
-		<h3>[method:Boolean isEmpty]() [page:Box3 this]</h3>
+		<h3>[method:Boolean isEmpty]()</h3>
 		<div>
 		Returns true if this box includes zero points within its bounds.<br>
-		Note that a box with equal lower and upper bounds still includes one point, the <br>
-		one both bounds share.
+		Note that a box with equal lower and upper bounds still includes one point,
+		the one both bounds share.
 		</div>
 
-		<h3>[method:Box3 clone]() [page:Box3 this]</h3>
-		<div>
-		Returns a copy of this box.
-		</div>
+		<h3>[method:Box3 makeEmpty]()</h3>
+		<div>Makes this box empty.</div>
 
-		<h3>[method:Boolean equals]( [page:Box3 box] ) [page:Box3 this]</h3>
-		<div>
-		box -- Box to compare.
-		</div>
+		<h3>[method:Box3 set]( [page:Vector3 min], [page:Vector3 max] )</h3>
 		<div>
-		Returns true if this box and *box* share the same lower and upper bounds.
-		</div>
+		[page:Vector3 min] - [page:Vector3] representing the lower (x, y, z) boundary of the box.<br />
+		[page:Vector3 max] - [page:Vector3] representing the lower upper (x, y, z) boundary of the box.<br /><br />
 
-		<h3>[method:Box3 expandByPoint]( [page:Vector3 point] ) [page:Box3 this]</h3>
-		<div>
-		point -- Point that should be included in the box.
-		</div>
-		<div>
-		Expands the boundaries of this box to include *point*.
+		Sets the lower and upper (x, y, z) boundaries of this box.
 		</div>
 
-		<h3>[method:Box3 expandByScalar]( [page:float scalar] ) [page:Box3 this]</h3>
-		<div>
-		scalar -- Distance to expand.
-		</div>
+		<h3>[method:Box3 setFromArray]( [page:Array array] ) [page:Box3 this]</h3>
 		<div>
-		Expands each dimension of the box by *scalar*. If negative, the dimensions of the box <br/>
-		will be contracted.
-		</div>
+		array -- An array of position data that the resulting box will envelop.<br /><br />
 
-		<h3>[method:Box3 expandByVector]( [page:Vector3 vector] ) [page:Box3 this]</h3>
-		<div>
-		vector -- Amount to expand this box in each dimension.
-		</div>
-		<div>
-		Expands this box equilaterally by *vector*. The width of this box will be <br>
-		expanded by the x component of *vector* in both directions. The height of <br>
-		this box will be expanded by the y component of *vector* in both directions. <br>
-		The depth of this box will be expanded by the z component of *vector* in <br>
-		both directions.
+		Sets the upper and lower bounds of this box to include all of the data in *array*.
 		</div>
 
-		<h3>[method:Box3 copy]( [page:Box3 box] ) [page:Box3 this]</h3>
-		<div>
-		box -- Box to copy.
-		</div>
+		<h3>[method:Box3 setFromBufferAttribute]( [page:BufferAttribute attribute] ) [page:Box3 this]</h3>
 		<div>
-		Copies the values of *box* to this box.
-		</div>
+		[page:BufferAttribute attribute] - A buffer attribute of position data that the resulting box will envelop.<br /><br />
 
-		<h3>[method:Box3 makeEmpty]() [page:Box3 this]</h3>
-		<div>
-		Makes this box empty.
+		Sets the upper and lower bounds of this box to include all of the data in [page:BufferAttribute attribute].
 		</div>
 
-		<h3>[method:Vector3 getCenter]( [page:Vector3 optionalTarget] ) [page:Box3 this]</h3>
+		<h3>[method:Box3 setFromCenterAndSize]( [page:Vector3 center], [page:Vector3 size] )</h3>
 		<div>
-		optionalTarget -- If specified, the result will be copied here.
+		[page:Vector3 center] - Desired center position of the box ([page:Vector3]). <br>
+		[page:Vector3 size] - Desired x and y dimensions of the box ([page:Vector3]).<br /><br />
+
+		Centers this box on [page:Vector3 center] and sets this box's width and height to the values specified
+		in [page:Vector3 size].
 		</div>
+
+		<h3>[method:Box3 setFromCenterAndSize]( [page:Vector3 center], [page:Vector3 size] ) [page:Box3 this]</h3>
 		<div>
-		Returns the center point of this box.
+		[page:Vector3 center], - Desired center position of the box. <br>
+		[page:Vector3 size] - Desired x, y and z dimensions of the box.<br /><br />
+
+		Centers this box on [page:Vector3 center] and sets this box's width, height and depth to the values specified <br>
+		in [page:Vector3 size]
 		</div>
 
-		<h3>[method:Sphere getBoundingSphere]( [page:Sphere optionalTarget] ) [page:Box3 this]</h3>
+		<h3>[method:Box3 setFromObject]( [page:Object3D object] )</h3>
 		<div>
-		optionalTarget -- [page:Sphere] to optionally set the result to.
+		[page:Object3D object] - [page:Object3D] to compute the bounding box of.<br /><br />
+
+		Computes the world-axis-aligned bounding box of an [page:Object3D] (including its children),
+		accounting for the world transforms of both the object and its childrens.
 		</div>
+
+		<h3>[method:Box3 setFromPoints]( [page:Array points] )</h3>
 		<div>
-		Gets a sphere that bounds the box.
+		[page:Array points] - Array of [page:Vector3 Vector3s] that the resulting box will contain.<br /><br />
+
+		Sets the upper and lower bounds of this box to include all of the points in [page:Array points].
 		</div>
 
-		<h3>[method:Float distanceToPoint]( [page:Vector3 point] ) [page:Box3 this]</h3>
+		<h3>[method:Box3 translate]( [page:Vector3 offset] )</h3>
 		<div>
-		point -- Point to measure distance to.
+		[page:Vector3 offset] - Direction and distance of offset.<br /><br />
+
+		Adds [page:Vector3 offset] to both the upper and lower bounds of this box, effectively moving this box
+		[page:Vector3 offset] units in 2D space.
 		</div>
+
+		<h3>[method:Box3 union]( [page:Box3 box] )</h3>
 		<div>
-		Returns the distance from any edge of this box to the specified point. <br>
-		If the point lies inside of this box, the distance will be 0.
+		[page:Box3 box] - Box that will be unioned with this box.<br /><br />
+
+		Unions this box with [page:Box3 box], setting the upper bound of this box to the greater of the
+		two boxes' upper bounds and the lower bound of this box to the lesser of the two boxes'
+		lower bounds.
 		</div>
 
 		<h2>Source</h2>

+ 167 - 142
docs/api/math/Color.html

@@ -11,51 +11,77 @@
 		<h1>[name]</h1>
 
 		<div class="desc">
-		Represents a color.
+		Class representing a color.
 		</div>
 
 
-		<h2>Example</h2>
-		<code>var color = new THREE.Color();</code>
-		<code>var color = new THREE.Color( 0xff0000 );</code>
-		<code>var color = new THREE.Color("rgb(255, 0, 0)");</code>
-		<code>var color = new THREE.Color("rgb(100%, 0%, 0%)");</code>
-		<code>var color = new THREE.Color("hsl(0, 100%, 50%)");</code>
-		<code>var color = new THREE.Color( 1, 0, 0 );</code>
+		<h2>Examples</h2>
+		A Color can be initialised in any of the following ways:
+		<code>
+//empty constructor - will default white
+var color = new THREE.Color();
+
+//Hexadecimal color (recommended)
+var color = new THREE.Color( 0xff0000 );
+
+//RGB string
+var color = new THREE.Color("rgb(255, 0, 0)");
+var color = new THREE.Color("rgb(100%, 0%, 0%)");
+
+//X11 color name - all 140 color names are supported.
+//Note the lack of CamelCase in the name
+var color = new THREE.Color( 'skyblue' );
+
+//HSL string
+var color = new THREE.Color("hsl(0, 100%, 50%)");
+
+//Seperate RGB values between 0 and 1
+var color = new THREE.Color( 1, 0, 0 );
+		</code>
+
 
 
 		<h2>Constructor</h2>
 
 
-		<h3>[name]( r, g, b )</h3>
+		<h3>[name]( [page:Multi r], [page:Float g], [page:Float b] )</h3>
 		<div>
-		r - the red component of the color if arguments g and b are defined. If they are not defined, it can be a hexadecimal or a CSS-style string or a Color instance.<br />
-		g - The green component of the color if it is defined.<br />
-		b - The blue component of the color if it is defined. 
-		</div>
-		<div>
-		All arguments are optional. The default color is White.<br />
+		[page:Multi r] - (optional) the red component of the color if arguments g and b are defined.
+		If they are not defined, it can be a [link:https://en.wikipedia.org/wiki/Web_colors#Hex_triplet hexadecimal triplet] (recommended) or a CSS-style string or another Color instance.<br />
+		[page:Float g] - (optional) The green component of the color if it is defined.<br />
+		[page:Float b] - (optional) The blue component of the color if it is defined.<br /><br />
+
+		Note that standard method of specifying color in three.js is with a [link:https://en.wikipedia.org/wiki/Web_colors#Hex_triplet hexadecimal triplet], and that method is used
+		throughout the rest of the documentation.<br /><br />
+
 		When all arguments are defined then r is the red component, g is the green component and b is the blue component of the color.<br />
 		When only r is defined:<br />
 		<ul>
-			<li>It can be a hexadecimal of the color.</li>
-			<li>It can be an another color instance.</li>
-			<li>It can be a CSS style. For Instance:
+			<li>It can be a [link:https://en.wikipedia.org/wiki/Web_colors#Hex_triplet hexadecimal triplet] representing the color (recommended).</li>
+			<li>It can be an another Color instance.</li>
+			<li>It can be a CSS style string. For Instance:
 				<ul>
-					<li>rgb(250, 0,0)</li>
-					<li>rgb(100%,0%,0%)</li>
-					<li>hsl(0, 100%, 50%)</li>
-					<li>#ff0000</li>
-					<li>#f00</li>
-					<li>red</li>
+					<li>'rgb(250, 0,0)'</li>
+					<li>'rgb(100%,0%,0%)'</li>
+					<li>'hsl(0, 100%, 50%)'</li>
+					<li>'#ff0000'</li>
+					<li>'#f00'</li>
+					<li>'red'</li>
 				</ul>
-			
+
 			</li>
 		</ul>
 		</div>
 
 		<h2>Properties</h2>
 
+		<h3>[property:Boolean isColor]</h3>
+		<div>
+			Used to check whether this or derived classes are Colors. Default is *true*.<br /><br />
+
+			You should not change this, as it used internally for optimisation.
+		</div>
+
 		<h3>[property:Float r]</h3>
 		<div>
 		Red channel value between 0 and 1. Default is 1.
@@ -71,183 +97,182 @@
 		Blue channel value between 0 and 1. Default is 1.
 		</div>
 
+
+
+
+
+
 		<h2>Methods</h2>
 
-		<h3>[method:Color set]( value ) [page:Color this]</h3>
-		<div>
-		value -- either an instance of [page:Color], a [page:Integer hexadecimal] value, or a css style [page:String string]
-		</div>
-		<div>
-		Delegates to .copy, .setStyle, or .setHex depending on input type.
-		</div>
+		<h3>[method:Color add]( [page:Color color] ) </h3>
+		<div>Adds the RGB values of [page:Color color] to the RGB values of this color.</div>
 
-		<h3>[method:Color copy]( [page:Color color] ) [page:Color this]</h3>
-		<div>
-		color — Color to copy.
-		</div>
-		<div>
-		Copies given color.
-		</div>
+		<h3>[method:Color addColors]( [page:Color color1], [page:Color color2] ) </h3>
+		<div>Sets this color's RGB values to the sum of the RGB values of [page:Color color1] and [page:Color color2].</div>
 
-		<h3>[method:Color fromArray]( [page:Array array], [page:Integer offset] ) [page:Color this]</h3>
-		<div>
-		array -- [page:Array] [r, g, b] <br />
-		offset -- [page:Integer] An optional offset into the array.
-		</div>
-		<div>
-		Sets this color's components based on an array formatted like [r, g, b]
-		</div>
+		<h3>[method:Color addScalar]( [page:Number s] ) </h3>
+		<div>Adds [page:Number s] to the RGB values of this color.</div>
 
-		<h3>[method:Color copyGammaToLinear]( [page:Color color] ) [page:Color this]</h3>
-		<div>
-		color — Color to copy.
-		</div>
-		<div>
-		Copies given color making conversion from gamma to linear space.
-		</div>
+		<h3>[method:Color clone]() </h3>
+		<div>Returns a new Color with the same  [page:.r r], [page:.g g] and [page:.b b] parameters a this one.</div>
 
-		<h3>[method:Color copyLinearToGamma]( [page:Color color] ) [page:Color this]</h3>
+		<h3>[method:Color copy]( [page:Color color] ) </h3>
 		<div>
-		color — Color to copy.
-		</div>
-		<div>
-		Copies given color making conversion from linear to gamma space.
+			Copies the [page:.r r], [page:.g g] and [page:.b b] parameters from [page:Color color] in to this color.
 		</div>
 
-		<h3>[method:Color convertGammaToLinear]() [page:Color this]</h3>
-		<div>
-		Converts this color from gamma to linear space.
-		</div>
+		<h3>[method:Color convertGammaToLinear]() </h3>
+		<div>Converts this color from gamma to linear space (squares the values of [page:.r r], [page:.g g] and [page:.b b] ).</div>
+
+		<h3>[method:Color convertLinearToGamma]() </h3>
+		<div>Converts this color from linear to gamma space (takes the squareroot of [page:.r r], [page:.g g] and [page:.b b]).</div>
 
-		<h3>[method:Color convertLinearToGamma]() [page:Color this]</h3>
+		<h3>[method:Color copyGammaToLinear]( [page:Color color], [page:Float gammaFactor] ) </h3>
 		<div>
-		Converts this color from linear to gamma space.
+		[page:Color color] — Color to copy.<br />
+		[page:Float gammaFactor] - (optional). Default is *2.0*.<br /><br />
+
+		Copies given color making conversion from gamma to linear space,
+		by taking [page:.r r], [page:.g g] and [page:.b b] to the power of [page:Float gammaFactor].
 		</div>
 
-		<h3>[method:Color setRGB]( [page:Float r], [page:Float g], [page:Float b] ) [page:Color this]</h3>
+		<h3>[method:Color copyLinearToGamma]( [page:Color color], [page:Float gammaFactor] ) </h3>
 		<div>
-		r — Red channel value between 0 and 1.<br />
-		g — Green channel value between 0 and 1.<br />
-		b — Blue channel value between 0 and 1.
+		[page:Color color] — Color to copy.<br />
+		[page:Float gammaFactor] - (optional). Default is *2.0*.<br /><br />
+
+		Copies given color making conversion from linear to gamma space,
+		by taking [page:.r r], [page:.g g] and [page:.b b] to the power of 1 / [page:Float gammaFactor].
 		</div>
+
+		<h3>[method:Boolean equals]( [page:Color color] ) </h3>
+		<div>Compares [page:Color color] with this one and returns true if they are the same, false otherwise.</div>
+
+		<h3>[method:Color fromArray]( [page:Array array], [page:Integer offset] ) </h3>
 		<div>
-		Sets this color from RGB values.
+		[page:Array array] - [page:Array] of float in the form [ [page:Float r], [page:Float g], [page:Float b] ].<br />
+		[page:Integer offset] - An optional offset into the array.<br /><br />
+
+		Sets this color's components based on an array formatted like [ [page:Float r], [page:Float g], [page:Float b] ].
 		</div>
 
 		<h3>[method:Integer getHex]()</h3>
-		<div>
-		Returns the hexadecimal value of this color.
-		</div>
+		<div>Returns the hexadecimal value of this color.</div>
 
 		<h3>[method:String getHexString]()</h3>
-		<div>
-		Returns the string formated hexadecimal value of this color.
-		</div>
+		<div>Returns the string formatted hexadecimal value of this color.</div>
 
-		<h3>[method:Color setHex]( [page:Integer hex] ) [page:Color this]</h3>
-		<div>
-		hex — Color in hexadecimal.<br />
-		</div>
+		<h3>[method:Object getHSL]( [page:Object optionalTarget] )</h3>
 		<div>
-		Sets this color from a hexadecimal value.
-		</div>
+			[page:Object optionalTarget] — (optional) if specified, adds h, s and l keys to object (if not already present)
+			and sets the results there, otherwise a new Object will be created. <br /><br />
+
+			Convert the values [page:.r r], [page:.g g] and [page:.b b] to [link:https://en.wikipedia.org/wiki/HSL_and_HSV HSL]
+			format and returns an object of the form:
+
+			<code>
+				{ h: 0, s: 0, l: 0 }
+			</code>
 
-		<h3>[method:Color setStyle]( [page:String style] ) [page:Color this]</h3>
-		<div>
-		style — color as a CSS-style string.
-		</div>
-		<div>
-		Sets this color from a CSS-style string. For example, "rgb(250, 0,0)", "rgb(100%, 0%, 0%)", "hsl(0, 100%, 50%)", "#ff0000", "#f00", or "red". Transluent colors such as "rgba(255, 0, 0, 0.5)" and "hsla(0, 100%, 50%, 0.5)" are also accepted, but the alpha-channel coordinate will be discarded.
 		</div>
 
 		<h3>[method:String getStyle]()</h3>
-		<div>
-		Returns the value of this color as a CSS-style string. Example: rgb(255,0,0)
-		</div>
+		<div>Returns the value of this color as a CSS-style string. Example: 'rgb(255,0,0)'.</div>
 
-		<h3>[method:Color setScalar]( [page:Float scalar] ) [page:Color this]</h3>
-		<div>
-		scalar — a value between 0.0 and 1.0.
-		</div>
+		<h3>[method:Color lerp]( [page:Color color], [page:Float alpha] ) </h3>
 		<div>
-		Sets all three color components to the value *scalar*.
-		</div>
+		[page:Color color] - color to converge on.<br />
+		[page:Float alpha] - interpolation factor in the closed interval [0, 1].<br /><br />
 
-		<h3>[method:Color setHSL]( [page:Float h], [page:Float s], [page:Float l] ) [page:Color this]</h3>
-		<div>
-		h — hue value between 0.0 and 1.0 <br />
-		s — saturation value between 0.0 and 1.0 <br />
-		l — lightness value between 0.0 and 1.0
-		</div>
-		<div>
-		Sets color from hsl
+		Linear interpolation of this colors RGB values and the RGB values of the passed argument.
+		The alpha argument can be thought of as the percent between the two colors, where 0 is
+		this color and 1 is the first argument.
 		</div>
 
-		<h3>[method:Object getHSL]() [page:Object hsl]</h3>
-		<div>
-		Returns an object with properties h, s, and l.
-		</div>
+		<h3>[method:Color multiply]( [page:Color color] ) </h3>
+		<div>Multiplies this color's RGB values by given [page:Color color]'s RGB values.</div>
 
-		<h3>[method:Color offsetHSL]( [page:Float h], [page:Float s], [page:Float l] ) [page:Color this]</h3>
-		<div>
-		Adds given h, s, and l to this color's existing h, s, and l values.
-		</div>
+		<h3>[method:Color multiplyScalar]( [page:Number s] ) </h3>
+		<div>Multiplies this color's RGB values by [page:Number s].</div>
 
-		<h3>[method:Color sub]( [page:Color color] ) [page:Color this]</h3>
+		<h3>[method:Color offsetHSL]( [page:Float h], [page:Float s], [page:Float l] ) </h3>
 		<div>
-		Subtracts rgb components of given color from rgb components of this color. If a component is negative, it is set to zero.
+			Adds given [page:Float h], [page:Float s], and [page:Float l] to this color's existing values.
+			Internally this converts the [page:.r r], [page:.g g] and [page:.b b] values to HSL, adds
+			[page:Float h], [page:Float s], and [page:Float l] and then converts back to RGB.
 		</div>
 
-		<h3>[method:Color add]( [page:Color color] ) [page:Color this]</h3>
+		<h3>[method:Color set]( [page:Multi value] ) </h3>
 		<div>
-		Adds rgb values of given color to rgb values of this color
-		</div>
+		[page:Multi value] - Value to set this color to.<br /><br />
 
-		<h3>[method:Color addColors]( [page:Color color1], [page:Color color2] ) [page:Color this]</h3>
-		<div>
-		Sets this color to the sum of color1 and color2
+		See the Constructor above for full details of what [page:Multi value] can be.
+		Delegates to [page:.copy], .setStyle, or .setHex depending on input type.
 		</div>
 
-		<h3>[method:Color addScalar]( [page:Number s] ) [page:Color this]</h3>
+		<h3>[method:Color setHex]( [page:Integer hex] ) </h3>
 		<div>
-		Adds s to the rgb values of this color
-		</div>
+		[page:Integer hex] — [link:https://en.wikipedia.org/wiki/Web_colors#Hex_triplet hexadecimal triplet] format.<br /><br />
 
-		<h3>[method:Color multiply]( [page:Color color] ) [page:Color this]</h3>
-		<div>
-		Multiplies this color's rgb values by given color's rgb values
+		Sets this color from a hexadecimal value.
 		</div>
 
-		<h3>[method:Color multiplyScalar]( [page:Number s] ) [page:Color this]</h3>
+		<h3>[method:Color setHSL]( [page:Float h], [page:Float s], [page:Float l] ) </h3>
 		<div>
-		Multiplies this color's rgb values by s
-		</div>
+		[page:Float h] — hue value between 0.0 and 1.0 <br />
+		[page:Float s] — saturation value between 0.0 and 1.0 <br />
+		[page:Float l] — lightness value between 0.0 and 1.0<br /><br />
 
-		<h3>[method:Color lerp]( [page:Color color], alpha ) [page:Color this]</h3>
-		<div>
-		alpha -- a number between 0 and 1.
+		Sets color from HSL values.
 		</div>
+
+		<h3>[method:Color setRGB]( [page:Float r], [page:Float g], [page:Float b] ) </h3>
 		<div>
-		Linear interpolation of this colors rgb values and the rgb values of the first argument. The alpha argument can be thought of as the percent between the two colors, where 0 is this color and 1 is the first argument.
+		[page:Float r] — Red channel value between 0 and 1.<br />
+		[page:Float g] — Green channel value between 0 and 1.<br />
+		[page:Float b] — Blue channel value between 0 and 1.<br /><br />
+
+		Sets this color from RGB values.
 		</div>
 
-		<h3>[method:Boolean equals]( [page:Color c] ) [page:Color this]</h3>
+		<h3>[method:Color setScalar]( [page:Float scalar] ) </h3>
 		<div>
-		Compares this color and c and returns true if they are the same, false otherwise.
+		[page:Float scalar] — a value between 0.0 and 1.0.<br /><br />
+
+		Sets all three color components to the value [page:Float scalar].
 		</div>
 
-		<h3>[method:Color clone]() [page:Color this]</h3>
+		<h3>[method:Color setStyle]( [page:String style] ) </h3>
 		<div>
-		Clones this color.
+		[page:String style] — color as a CSS-style string.<br /><br />
+
+		Sets this color from a CSS-style string. For example,
+		"rgb(250, 0,0)",
+		"rgb(100%, 0%, 0%)",
+		"hsl(0, 100%, 50%)",
+		"#ff0000",
+		"#f00", or
+		"red" ( or any [link:https://en.wikipedia.org/wiki/X11_color_names#Color_name_chart X11 color name]
+		- all 140 color names are supported ).<br />
+
+		Transluent colors such as "rgba(255, 0, 0, 0.5)" and "hsla(0, 100%, 50%, 0.5)" are also accepted,
+		but the alpha-channel coordinate will be discarded.<br /><br />
+
+		Note that for X11 color names, multiple words such as Dark Orange become the string 'darkorange' (all lowercase).
 		</div>
 
-		<h3>[method:Array toArray]( [page:Array array], [page:Integer offset] ) [page:Color this]</h3>
+		<h3>[method:Color sub]( [page:Color color] ) </h3>
 		<div>
-		array -- An optional array to store the color to. <br />
-		offset -- An optional offset into the array.
+		Subtracts RGB components of the given color from the RGB components of this color.
+		If a component is negative, it is set to zero.
 		</div>
+
+		<h3>[method:Array toArray]( [page:Array array], [page:Integer offset] ) </h3>
 		<div>
-		Returns an array [r,g,b]
+		[page:Array array] - An optional array to store the color to. <br />
+		[page:Integer offset] - An optional offset into the array.<br /><br />
+
+		Returns an array of the form [ r, g, b ].
 		</div>
 
 		<h2>Source</h2>

+ 24 - 15
docs/api/math/Cylindrical.html

@@ -10,17 +10,20 @@
 	<body>
 		<h1>[name]</h1>
 
-		<div class="desc">A point's cylindrical coordinates.</div>
+		<div class="desc">
+			A point's [link:https://en.wikipedia.org/wiki/Cylindrical_coordinate_system cylindrical coordinates].
+		</div>
 
 
 		<h2>Constructor</h2>
 
-
 		<h3>[name]( [page:Float radius], [page:Float theta], [page:Float y] )</h3>
 		<div>
-		radius -- [page:Float] distance from the origin to a point in the x-z plane<br />
-		theta -- [page:Float] counterclockwise angle in the x-z plane measured in radians from the positive z-axis<br />
-		y -- [page:Float] height above the x-z plane
+		[page:Float radius] - distance from the origin to a point in the x-z plane.
+		Default is *1.0*.<br />
+		[page:Float theta] - counterclockwise angle in the x-z plane measured in radians
+		from the positive z-axis. Default is *0*.<br />
+		[page:Float y] - height above the x-z plane. Default is *0*.
 		</div>
 
 
@@ -35,24 +38,30 @@
 
 		<h2>Methods</h2>
 
-		<h3>[method:Cylindrical set]( [page:Float radius], [page:Float theta], [page:Float y] ) [page:Cylindrical this]</h3>
+		<h3>[method:Cylindrical clone]()</h3>
 		<div>
-		Sets values of this cylindrical's component coordinates.
+		Returns a new cylindrical with the same [page:.radius radius], [page:.theta theta]
+		and [page:.y y] properties as this one.
 		</div>
 
-		<h3>[method:Cylindrical copy]( [page:Cylindrical c] ) [page:Cylindrical this]</h3>
+		<h3>[method:Cylindrical copy]( [page:Cylindrical other] )</h3>
 		<div>
-		Copies value of *c* to this cylindrical.
+			Copies the values of the passed Cylindrical's [page:.radius radius], [page:.theta theta]
+			and [page:.y y] properties to this cylindrical.
 		</div>
 
-		<h3>[method:Cylindrical clone]() [page:Cylindrical this]</h3>
-		<div>
-		Clones this cylindrical.
-		</div>
+		<h3>[method:Cylindrical set]( [page:Float radius], [page:Float phi], [page:Float theta] )</h3>
+		<div>Sets values of this cylindrical's [page:.radius radius], [page:.theta theta]
+		and [page:.y y] properties.</div>
 
-		<h3>[method:Cylindrical setFromVector3]( [page:Vector3 v] ) [page:Cylindrical this]</h3>
+		<h3>[method:Cylindrical setFromVector3]( [page:Vector3 vec3] )</h3>
 		<div>
-		Sets this object from the vector *v*.
+			Sets values of this cylindrical's [page:.radius radius], [page:.theta theta]
+			and [page:.y y] properties from the [page:Vector3 Vector3].<br /><br />
+
+			The [page:.radius radius] is set the vector's distance from the origin as measured along
+			the the x-z plane, while [page:.theta theta] is set from its direction on
+			the the x-z plane and [page:.y y] is set from the vector's y component.
 		</div>
 
 		<h2>Source</h2>

+ 114 - 63
docs/api/math/Euler.html

@@ -10,10 +10,12 @@
 	<body>
 		<h1>[name]</h1>
 
-		<div class="desc">Euler Angles. <br/><br/>
+		<div class="desc">
+			A class representing [link:http://en.wikipedia.org/wiki/Euler_angles Euler Angles].<br /><br />
 
-		Euler angles describe a rotation transformation by rotating an object on its various axes in specified amounts per axis, and a specified axis order.
-		(More information on <a href='http://en.wikipedia.org/wiki/Euler_angles' target='blank'>Wikipedia</a>)</div>
+			Euler angles describe a rotational transformation by rotating an object on its various
+			axes in specified amounts per axis, and a specified axis order.
+		</div>
 
 		<h2>Example</h2>
 
@@ -28,114 +30,163 @@
 
 		<h3>[name]( [page:Float x], [page:Float y], [page:Float z], [page:String order] )</h3>
 		<div>
-		x -- [page:Float] the angle of the x axis in radians<br />
-		y -- [page:Float] the angle of the y axis in radians<br />
-		z -- [page:Float] the angle of the z axis in radians<br />
-		order -- [page:String] A string representing the order that the rotations are applied, defaults to 'XYZ' (must be upper case).
-		</div>
-		<div>
-		A euler angle for transforming
+		[page:Float x] - (optional) the angle of the x axis in radians. Default is *0*.<br />
+		[page:Float y] - (optional) the angle of the y axis in radians. Default is *0*.<br />
+		[page:Float z] - (optional) the angle of the z axis in radians. Default is *0*.<br />
+		[page:String order] - (optional) a string representing the order that the rotations are applied,
+		defaults to 'XYZ' (must be upper case).<br /><br />
+
 		</div>
 
 
 		<h2>Properties</h2>
 
-		<h3>[property:Float x]</h3>
-
-		<h3>[property:Float y]</h3>
+		<h3>[property:Boolean isEuler]</h3>
+		<div>
+			Used to check whether this or derived classes are Eulers. Default is *true*.<br /><br />
 
-		<h3>[property:Float z]</h3>
+			You should not change this, as it used internally for optimisation.
+		</div>
 
 		<h3>[property:String order]</h3>
+		<div>
+			The order in which to apply rotations. Default is 'XYZ', which means that the object will first be
+			rotated around its X axis, then its Y axis and finally its Z axis. Other possibilities are:
+			'YZX', 'ZXY', 'XZY', 'YXZ' and 'ZYX'. These must be in upper case.<br /><br />
 
+			Three.js uses <em>intrinsic</em> (Tait-Bryan) ordering, also known as <em>yaw</em>, <em>pitch</em>
+			and <em>roll</em>. This means that rotations are performed with respect to the <em>local</em>
+			coordinate system. That is, for order 'XYZ', the rotation is first around world-X, then around
+			local-Y (which may now be different from the world Y-axis), then local-Z (which may be different
+			from the world Z-axis).<br /><br />
 
+			Some implementations may use <em>extrinsic</em> (proper) ordering, in which case rotations are performed
+			with respect to the <em>world</em> coordinate system, so that for order 'XYZ', the rotations
+			are around world-X, world-Y, and world-Z.<br /><br />
 
-		<h2>Methods</h2>
+			Converting between the two types is relatively straightforward, you just need to reverse the order
+			and the rotation, so that an intrinsic (three.js) Euler rotation of angles a, b, c about XYZ
+			will be equivalent to to an extrinsic Euler rotation of angles c, b, a about ZYX.<br /><br />
 
-		<h3>[method:Euler set]( [page:Float x], [page:Float y], [page:Float z], [page:String order] ) [page:Euler this]</h3>
-		<div>
-		x -- [page:Float] Angle in x axis in radians<br />
-		y -- [page:Float] Angle in y axis in radians<br />
-		z -- [page:Float] Angle in z axis in radians<br />
-		order -- [page:string] Order of axes, defaults to 'XYZ' (must be upper case)
-		</div>
-		<div>
-		Sets the angles of this euler transform.
+			If the order is changed, [page:.onChangeCallback onChangeCallback] will be called.
 		</div>
 
-		<h3>[method:Euler copy]( [page:Euler euler] ) [page:Euler this]</h3>
+		<h3>[property:Float x]</h3>
 		<div>
-		Copies value of *euler* to this euler.
-		</div>
+			The current value of the x component.<br /><br />
 
-		<h3>[method:Euler setFromRotationMatrix]( [page:Matrix4 m], [page:String order] ) [page:Euler this]</h3>
-		<div>
-		m -- [page:Matrix4] assumes upper 3x3 of matrix is a pure rotation matrix (i.e. unscaled)<br />
-		order -- [page:string] Order of axes, defaults to 'XYZ' (must be upper case)
-		</div>
-		<div>
-		Sets the angles of this euler transform from a pure rotation matrix based on the orientation specified by order.
+			If this is changed, [page:.onChangeCallback onChangeCallback] will be called.
 		</div>
 
-		<h3>[method:Euler setFromQuaternion]( [page:Quaternion q], [page:String order] ) [page:Euler this]</h3>
-		<div>
-		q -- [page:Quaternion] quaternion must be normalized<br />
-		order -- [page:string] Order of axes, defaults to 'XYZ' (must be upper case)
-		</div>
+		<h3>[property:Float y]</h3>
 		<div>
-		Sets the angles of this euler transform from a normalized quaternion based on the orientation specified by order.
+			The current value of the y component.<br /><br />
+
+			If this is changed, [page:.onChangeCallback onChangeCallback] will be called.
 		</div>
 
-		<h3>[method:Euler reorder]( [page:String newOrder] ) [page:Euler this]</h3>
+		<h3>[property:Float z]</h3>
 		<div>
-		Resets the euler angle with a new order by creating a quaternion from this euler angle and then setting this euler angle with the quaternion and the new order. <br />
-		WARNING: this discards revolution information.
+			The current value of the z component.<br /><br />
+
+			If this is changed, [page:.onChangeCallback onChangeCallback] will be called.
 		</div>
 
-		<h3>[method:Euler setFromVector3]( [page:Vector3 vector], [page:String order] ) [page:Euler this]</h3>
+		<h2>Methods</h2>
+
+		<h3>[method:Euler copy]( [page:Euler euler] )</h3>
+		<div>Copies value of [page:Euler euler] to this euler.</div>
+
+		<h3>[method:Euler clone]()</h3>
+		<div>Returns a new Euler with the same parameters as this one.</div>
+
+		<h3>[method:Boolean equals]( [page:Euler euler] )</h3>
+		<div>Checks for strict equality of this euler and [page:Euler euler].</div>
+
+		<h3>[method:Euler fromArray]( [page:Array array] )</h3>
 		<div>
-		vector -- [page:Vector3].
-		order -- [page:string] Order of axes, defaults to 'XYZ' (must be upper case)
+		[page:Array array] of length 3 or 4. The optional 4th argument corresponds to the [page:.order order].<br /><br />
+
+		Assigns this euler's [page:.x x] angle to array[0]. <br />
+		Assigns this euler's [page:.y y] angle to array[1]. <br />
+		Assigns this euler's [page:.z z] angle to array[2]. <br />
+		Optionally assigns this euler's [page:.order order] to array[3].
 		</div>
+
+		<h3>[method:Euler onChange]( [page:Function onChangeCallback] )</h3>
 		<div>
-		Optionally Vector3 to the XYZ parameters of Euler, and order to the Euler's order property.
+			[page:Function onChangeCallback] - set the value of the onChangeCallback() function.
 		</div>
 
-		<h3>[method:Vector3 toVector3]()</h3>
+		<h3>[method:Euler onChangeCallback](  )</h3>
 		<div>
-		Returns the Euler's XYZ properties as a Vector3.
+			By default this is an empty function, however it can be set via [page:.onChange onChange]().<br />
+			It gets called after changing the [page:.x x], [page:.y y], [page:.z z] or [page:.order order] properties,
+			and also after calling most setter functions (see those for details).
 		</div>
 
-		<h3>[method:Euler fromArray]( [page:Array array] ) [page:Euler this]</h3>
+		<h3>[method:Euler reorder]( [page:String newOrder] )</h3>
 		<div>
-		array -- [page:Array] of length 3 or 4. array[3] is an optional order argument.
+		Resets the euler angle with a new order by creating a quaternion from this euler angle
+		and then setting this euler angle with the quaternion and the new order. <br /><br />
+
+		<em>WARNING</em>: this discards revolution information.
 		</div>
+
+		<h3>[method:Euler set]( [page:Float x], [page:Float y], [page:Float z], [page:String order] )</h3>
 		<div>
-		Assigns this euler's x angle to array[0]. <br />
-		Assigns this euler's y angle to array[1]. <br />
-		Assigns this euler's z angle to array[2]. <br />
-		Optionally assigns this euler's order to array[3].
+			[page:.x x] - the angle of the x axis in radians.<br />
+			[page:.y y] - the angle of the y axis in radians.<br />
+			[page:.z z] - the angle of the z axis in radians.<br />
+			[page:.order order] - (optional) a string representing the order that the rotations are applied.<br /><br />
+
+			Sets the angles of this euler transform and optionally the [page:.order order] and then call [page:.onChangeCallback onChangeCallback]().
 		</div>
 
-		<h3>[method:Array toArray]( [page:Array array] )</h3>
+		<h3>[method:Euler setFromRotationMatrix]( [page:Matrix4 m], [page:String order], [page:Boolean update] )</h3>
 		<div>
-		array -- Optional array to store the euler.
+		[page:Matrix4 m] - a [page:Matrix4] of which the upper 3x3 of matrix is a pure
+		[link:https://en.wikipedia.org/wiki/Rotation_matrix rotation matrix] (i.e. unscaled).<br />
+		[page:.order order] - (optional) a string representing the order that the rotations are applied.<br />
+		[page:Boolean update] - (optional) whether to call [page:.onChangeCallback onChangeCallback]() after applying
+		the matrix.<br /><br />
+
+		Sets the angles of this euler transform from a pure rotation matrix based on the orientation
+		specified by order.
 		</div>
+
+		<h3>[method:Euler setFromQuaternion]( [page:Quaternion q], [page:String order], [page:Boolean update] )</h3>
 		<div>
-		Returns an array [x, y, z, order]
+		[page:Quaternion q] - a normalized quaternion.<br />
+		[page:.order order] - (optional) a string representing the order that the rotations are applied.<br />
+		[page:Boolean update] - (optional) whether to call [page:.onChangeCallback onChangeCallback]() after applying
+		the matrix.<br /><br />
+
+		Sets the angles of this euler transform from a normalized quaternion based on the orientation
+		specified by [page:.order order].
 		</div>
 
-		<h3>[method:Boolean equals]( [page:Euler euler] )</h3>
+
+		<h3>[method:Euler setFromVector3]( [page:Vector3 vector], [page:String order] )</h3>
 		<div>
-		Checks for strict equality of this euler and *euler*.
+		[page:Vector3 vector] - [page:Vector3].<br />
+		[page:.order order] - (optional) a string representing the order that the rotations are applied.<br /><br />
+
+		Set the [page:.x x], [page:.y y] and [page:.z z], and optionally update the [page:.order order]. [page:.onChangeCallback onChangeCallback]()
+		is called after these changes are made.
 		</div>
 
-		<h3>[method:Euler clone]()</h3>
+
+		<h3>[method:Array toArray]( [page:Array array], [page:Integer offset] )</h3>
 		<div>
-		Returns a new euler created from this euler.
-		</div>
+		[page:Array array] - (optional) array to store the euler in.<br />
+		[page:Integer offset] (optional) offset in the array.<br />
 
+		Returns an array of the form [[page:.x x], [page:.y y], [page:.z z], [page:.order order ]].
+		</div>
 
+		<h3>[method:Vector3 toVector3]()</h3>
+		<div>Returns the Euler's [page:.x x], [page:.y y] and [page:.z z] properties as a [page:Vector3].</div>
 
 
 		<h2>Source</h2>

+ 63 - 46
docs/api/math/Frustum.html

@@ -10,7 +10,14 @@
 	<body>
 		<h1>[name]</h1>
 
-		<div class="desc"><a href="http://en.wikipedia.org/wiki/Frustum">Frustums</a> are used to determine what is inside the camera's field of view. They help speed up the rendering process.</div>
+		<div class="desc">
+			[link:http://en.wikipedia.org/wiki/Frustum Frustums] are used to determine what is
+			inside the camera's field of view. They help speed up the rendering process - object which lie
+			outside a camera's frustum can safely be excluded from rendering.<br /><br />
+
+			This class is mainly intended for use internally by a renderer for calculating
+			a [page:Camera camera] or [page:LightShadow.camera shadowCamera]'s frustum.
+		</div>
 
 
 		<h2>Constructor</h2>
@@ -18,85 +25,95 @@
 
 		<h3>[name]([page:Plane p0], [page:Plane p1], [page:Plane p2], [page:Plane p3], [page:Plane p4], [page:Plane p5])</h3>
 		<div>
-		p0 -- [page:Plane] <br />
-		p1 -- [page:Plane] <br />
-		p2 -- [page:Plane] <br />
-		p3 -- [page:Plane] <br />
-		p4 -- [page:Plane] <br />
-		p5 -- [page:Plane]
-		</div>
-		<div>
-		Creates a frustum from the designated planes.
+			[page:Plane p0] - (optional) defaults to a new [page:Plane].<br />
+			[page:Plane p1] - (optional) defaults to a new [page:Plane].<br />
+			[page:Plane p2] - (optional) defaults to a new [page:Plane].<br />
+			[page:Plane p3] - (optional) defaults to a new [page:Plane].<br />
+			[page:Plane p4] - (optional) defaults to a new [page:Plane].<br />
+			[page:Plane p5] - (optional) defaults to a new [page:Plane].<br /><br />
+
+			Creates a new [name].
 		</div>
 
 
 		<h2>Properties</h2>
 
 		<h3>[property:Array planes]</h3>
-		<div>
-		Array of 6 [page:Plane planes].
-		</div>
+		<div>Array of 6 [page:Plane planes].</div>
 
 
 		<h2>Methods</h2>
 
-		<h3>[method:Frustum setFromMatrix]( [page:Matrix4 matrix] )</h3>
+		<h3>[method:Frustum clone]()</h3>
+		<div>Return a new Frustum with the same parameters as this one.</div>
 
-		<h3>[method:Boolean intersectsObject]( [page:Object3D object] )</h3>
-		<div>
-		Checks whether the object's bounding sphere is intersecting the Frustum.
-		</div>
 
-		<h3>[method:Frustum clone]()</h3>
+		<h3>[method:Boolean containsPoint]( [page:Vector3 point] )</h3>
 		<div>
-		Return a copy of this Frustum
-		</div>
+		[page:Vector3 point] - [page:Vector3] to test.<br /><br />
 
-		<h3>[method:Frustum set]( [page:Plane p0], [page:Plane p1], [page:Plane p2], [page:Plane p3], [page:Plane p4], [page:Plane p5] )</h3>
-		<div>
-		p0 -- [page:Plane] <br />
-		p1 -- [page:Plane] <br />
-		p2 -- [page:Plane] <br />
-		p3 -- [page:Plane] <br />
-		p4 -- [page:Plane] <br />
-		p5 -- [page:Plane]
-		</div>
-		<div>
-		Sets the current frustum from the passed planes. No plane order is implicitely implied.
+		Checks to see if the frustum contains the [page:Vector3 point].
 		</div>
 
-		<h3>[method:Frustum copy]( [page:Frustum frustum] ) [page:Frustum this]</h3>
+		<h3>[method:Frustum copy]( [page:Frustum frustum] )</h3>
 		<div>
-		frustum -- The frustum to copy
-		</div>
-		<div>
-		Copies the values of the passed frustum.
+		[page:Frustum frustum] - The frustum to copy<br /><br />
+
+		Copies the properties of the passed [page:Frustum frustum] into this one.
 		</div>
 
-		<h3>[method:Boolean containsPoint]( [page:Vector3 point] )</h3>
+		<h3>[method:Boolean intersectsBox]( [page:Box3 box] )</h3>
 		<div>
-		point -- [page:Vector3] to test
+		[page:Box3 box] - [page:Box3] to check for intersection.<br /><br />
+
+	 	Return true if [page:Box3 box] intersects with this frustum.
 		</div>
+
+		<h3>[method:Boolean intersectsObject]( [page:Object3D object] )</h3>
 		<div>
-		Checks to see if the frustum contains the point.
+			Checks whether the [page:Object3D object]'s [page:Geometry.boundingSphere bounding sphere] is intersecting the Frustum.<br /><br />
+
+			Note that the object must have a [page:Geometry] or [page:BufferGeometry] so that the bounding sphere
+			can be calculated.
 		</div>
 
-		<h3>[method:Boolean intersectsBox]( [page:Box3 box] )</h3>
+		<h3>[method:Boolean intersectsSphere]( [page:Sphere sphere] )</h3>
 		<div>
-		box -- [page:Box3]
+		[page:Sphere sphere] - [page:Sphere] to check for intersection.<br /><br />
+
+	 	Return true if [page:Sphere sphere] intersects with this frustum.
 		</div>
+
+		<h3>[method:Boolean intersectsSprite]( [page:Sprite sprite] )</h3>
 		<div>
-		Check to see if the box intersects with the frustum.
+			Checks whether the [page:Sprite sprite] is intersecting the Frustum.<br /><br />
 		</div>
 
-		<h3>[method:Boolean intersectsSphere]( [page:Sphere sphere] )</h3>
+		<h3>[method:Frustum set]( [page:Plane p0], [page:Plane p1], [page:Plane p2], [page:Plane p3], [page:Plane p4], [page:Plane p5] )</h3>
 		<div>
-		sphere -- [page:Sphere]
+		Sets the current frustum from the passed planes. No plane order is implicitely implied.
 		</div>
+
+		<h3>[method:Frustum setFromMatrix]( [page:Matrix4 matrix] )</h3>
 		<div>
-		Check to see if the sphere intersects with the frustum.
+			[page:Matrix4 matrix] - [page:Matrix4] used to set the [page:.planes planes]<br /><br />
+
+			This is used by the [page:WebGLRenderer] to set up the Frustum from a [page:Camera Camera's]
+			[page:Camera.projectionMatrix projectionMatrix] and [page:Camera.matrixWorldInverse matrixWorldInverse].
 		</div>
 
+
+
+
+
+
+
+
+
+
+
+
+
 		<h2>Source</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

+ 58 - 68
docs/api/math/Line3.html

@@ -18,116 +18,106 @@
 
 		<h3>[name]( [page:Vector3 start], [page:Vector3 end] )</h3>
 		<div>
-		start -- [page:Vector3] Start of the line segment<br />
-		end -- [page:Vector3] End of the line segment
-		</div>
-		<div>
-		The start and end vectors default to origin vectors if none are set.
+		[page:Vector3 start] - Start of the line segment. Default is (0, 0, 0).<br />
+		[page:Vector3 end] - End of the line segment. Default is (0, 0, 0).<br /><br />
+
+		Creates a new [name].
 		</div>
 
 
 		<h2>Properties</h2>
 
-
-
 		<h3>[property:Vector3 start]</h3>
+		<div>[page:Vector3] representing the start point of the line.</div>
 
 		<h3>[property:Vector3 end]</h3>
+		<div>[page:Vector3] representing the end point of the line.</div>
 
-		<h2>Methods</h2>
 
 
 
-		<h3>[method:Line3 set]( [page:Vector3 start], [page:Vector3 end] )</h3>
-		<div>
-		start -- [page:Vector3] <br />
-		end -- [page:Vector3]
-		</div>
-		<div>
-		Sets the start and end values by copying the provided vectors.
-		</div>
 
-		<h3>[method:Line3 copy]( [page:Line3 line] )</h3>
-		<div>
-		line -- [page:Line3]
-		</div>
+		<h2>Methods</h2>
+
+		<h3>[method:Line3 applyMatrix4]( [page:Matrix4 matrix] )</h3>
+		<div>Apply a matrix transform to the line segment.</div>
+
+		<h3>[method:Vector3 at]( [page:Float t], [page:Vector3 optionalTarget] )</h3>
 		<div>
-		Copies the passed line's start and end vectors to this line.
+		[page:Float t] - Use values 0-1 to return a position along the line segment. <br />
+		[page:Vector3 optionalTarget] - (optional) if specified, the result will be copied into this [page:Vector3],
+		otherwise a new [page:Vector3] will be created.<br /><br />
+
+		Return a vector at a certain position along the line. When [page:Float t] = 0, it returns the start vector,
+		and when [page:Float t] = 1 it returns the end vector.<br />
 		</div>
 
 		<h3>[method:Line3 clone]()</h3>
+		<div>Return a new [page:Line3] with the same [page:.start start] and [page:.end end] vectors as this one.</div>
+
+		<h3>[method:Vector3 closestPointToPoint]( [page:Vector3 point], [page:Boolean clampToLine], [page:Vector3 optionalTarget] )</h3>
 		<div>
-		Return a new copy of this [page:Line3].
+		[page:Vector3 point] - return the closest point on the line to this point.<br />
+		[page:Boolean clampToLine] - whether to clamp the returned value to the line segment.<br />
+		[page:Vector3 optionalTarget] - (optional) if specified, the result will be copied into this [page:Vector3],
+		otherwise a new [page:Vector3] will be created.<br /><br />
+
+		Returns the closets point on the line. If [page:Boolean clampToLine] is true, then the returned value will be
+		clamped to the line segment.
 		</div>
 
-		<h3>[method:Boolean equals]( [page:Line3 line] )</h3>
+		<h3>[method:Float closestPointToPointParameter]( [page:Vector3 point], [page:Boolean clampToLine] )</h3>
 		<div>
-		line -- [page:Line3]
+		[page:Vector3 point] - the point for which to return a point parameter. <br />
+		[page:Boolean clampToLine] - Whether to clamp the result to the range [0, 1].<br /><br />
+
+		Returns a point parameter based on the closest point as projected on the line segement.
+		If clamp to line is true, then the returned value will be between 0 and 1.
 		</div>
+
+		<h3>[method:Line3 copy]( [page:Line3 line] )</h3>
+		<div>Copies the passed line's [page:.start start] and [page:.end end] vectors to this line.</div>
+
+		<h3>[method:Vector3 delta]( [page:Vector3 optionalTarget] )</h3>
 		<div>
-		Returns true if both line's start and end points are equal.
+			[page:Vector3 optionalTarget] - (optional) if specified, the result will be copied into this [page:Vector3],
+			otherwise a new [page:Vector3] will be created.<br /><br />
+
+			Returns the delta vector of the line segment ( [page:.end end] vector minus the [page:.start start] vector).
 		</div>
 
 		<h3>[method:Float distance]()</h3>
-		<div>
-		Returns the length of the line segment.
-		</div>
+		<div>Returns the [link:https://en.wikipedia.org/wiki/Euclidean_distance Euclidean distance]
+		(straight-line distance) between the line's [page:.start start] and [page:.end end] points.</div>
 
 		<h3>[method:Float distanceSq]()</h3>
 		<div>
-		Returns the line segment's length squared.
+			Returns the square of the [link:https://en.wikipedia.org/wiki/Euclidean_distance Euclidean distance]
+			(straight-line distance) between the line's [page:.start start]
+			and [page:.end end] vectors.
 		</div>
 
-		<h3>[method:Line3 applyMatrix4]( [page:Matrix4 matrix] ) [page:Line3 this]</h3>
-		<div>
-		matrix -- [page:Matrix4]
-		</div>
+		<h3>[method:Boolean equals]( [page:Line3 line] )</h3>
 		<div>
-		Apply a matrix transform to the line segment.
-		</div>
+		[page:Line3 line]  - [page:Line3] to compare with this one.<br /><br />
 
-		<h3>[method:Vector3 at]( [page:Float t], [page:Vector3 optionalTarget] )</h3>
-		<div>
-		t -- [page:Float] Use values 0-1 to return a result on the line segment. <br />
-		optionalTarget -- [page:Vector] Optional target to set the result.
-		</div>
-		<div>
-		Return a vector at a certain position along the line. When t = 0, it returns the start vector, and when t=1 it returns the end vector.
+		Returns true if both line's [page:.start start] and [page:.end en] points are equal.
 		</div>
 
 		<h3>[method:Vector3 getCenter]( [page:Vector3 optionalTarget] )</h3>
 		<div>
-		optionalTarget -- [page:Vector3] Optional target to set the result.
-		</div>
-		<div>
-		Return the center of the line segment.
-		</div>
+			[page:Vector3 optionalTarget] - (optional) if specified, the result will be copied into this [page:Vector3],
+			otherwise a new [page:Vector3] will be created.<br /><br />
 
-		<h3>[method:Vector3 delta]( [page:Vector3 optionalTarget] )</h3>
-		<div>
-		optionalTarget -- [page:Vector3] Optional target to set the result.
-		</div>
-		<div>
-		Returns the delta vector of the line segment, or the end vector minus the start vector.
+		Return the center of the line segment.
 		</div>
 
-		<h3>[method:Vector3 closestPointToPoint]( [page:Vector3 point], [page:Boolean clampToLine], [page:Vector3 optionalTarget] )</h3>
-		<div>
-		point -- [page:Vector3] <br />
-		clampToLine -- [page:Boolean] <br />
-		optionalTarget -- [page:Vector3] Optional target to set the result.
-		</div>
+		<h3>[method:Line3 set]( [page:Vector3 start], [page:Vector3 end] )</h3>
 		<div>
-		Returns the closets point on the line. If clamp to line is true, then the returned value will be clamped to the line segment.
-		</div>
+		[page:Vector3 start] - set the [page:.start start point] of the line.<br />
+		end - [page:Vector3] - set the [page:.end end point] of the line.<br /><br />
 
-		<h3>[method:Float closestPointToPointParameter]( [page:Vector3 point], [page:Boolean clampToLine] )</h3>
-		<div>
-		point -- [page:Vector3] <br />
-		clampToLine -- [page:Boolean]
-		</div>
-		<div>
-		Returns a point parameter based on the closest point as projected on the line segement. If clamp to line is true, then the returned value will be between 0 and 1.
+		Sets the start and end values by copying the provided vectors.
 		</div>
 
 		<h2>Source</h2>

+ 54 - 81
docs/api/math/Math.html

@@ -10,131 +10,104 @@
 	<body>
 		<h1>[name]</h1>
 
-		<div class="desc">Math utility functions</div>
+		<div class="desc">An object with several math utility functions.</div>
 
-		<h2>Properties</h2>
-
-		<h2>Methods</h2>
+		<h2>Functions</h2>
 
 		<h3>[method:Float clamp]( [page:Float value], [page:Float min], [page:Float max] )</h3>
 		<div>
-		value — Value to be clamped.<br />
-		min — Minimum value<br />
-		max — Maximum value.
-		</div>
-		<div>
-		Clamps the *value* to be between *min* and *max*.
+		[page:Float value] — Value to be clamped.<br />
+		[page:Float min] — Minimum value.<br />
+		[page:Float max] — Maximum value.<br /><br />
+
+		Clamps the [page:Float value] to be between [page:Float min] and [page:Float max].
 		</div>
 
 		<h3>[method:Float degToRad]( [page:Float degrees] )</h3>
-		<div>
-		degrees -- [page:Float]
-		</div>
-		<div>
-		Converts degrees to radians.
-		</div>
+		<div>Converts degrees to radians.</div>
 
 		<h3>[method:Integer euclideanModulo]( [page:Integer n], [page:Integer m] )</h3>
 		<div>
-		n, m --Integers
-		</div>
-		<div>
-		Compute the Euclidian modulo of m % n, that is:
+		[page:Integer n], [page:Integer m] - Integers<br /><br />
+
+		Compute the Euclidean modulo of m % [page:Integer n], that is:
 		<code>( ( n % m ) + m ) % m</code>
 		</div>
 
 		<h3>[method:UUID generateUUID]( )</h3>
 		<div>
-		Generate a [link:https://en.wikipedia.org/wiki/Universally_unique_identifier UUID] (universally unique identifier).
+		Generate a [link:https://en.wikipedia.org/wiki/Universally_unique_identifier UUID]
+		(universally unique identifier).
 		</div>
 
-		<h3>[method:Boolean isPowerOfTwo]( n )</h3>
-		<div>
-		Return *true* if n is a power of 2.
-		</div>
+		<h3>[method:Boolean isPowerOfTwo]( [page:Number n] )</h3>
+		<div>Return *true* if [page:Number n] is a power of 2.</div>
 
 		<h3>[method:Float lerp]( [page:Float x], [page:Float y], [page:Float t] )</h3>
 		<div>
-		x -- Start point. <br />
-		y -- End point. <br />
-		t -- Closed unit interval from [0,1].
-		</div>
-		<div>
-		Returns a value [link:https://en.wikipedia.org/wiki/Linear_interpolation linearly interpolated] from two known points based on the given interval.
-		</div>
+		[page:Float x] - Start point. <br />
+		[page:Float y] - End point. <br />
+		[page:Float t] - interpolation factor in the closed interval [0, 1].<br><br />
 
-		<h3>[method:Float mapLinear]( [page:Float x], [page:Float a1], [page:Float a2], [page:Float b1], [page:Float b2] )</h3>
-		<div>
-		x — Value to be mapped.<br />
-		a1 — Minimum value for range A.<br />
-		a2 — Maximum value for range A.<br />
-		b1 — Minimum value for range B.<br />
-		b2 — Maximum value for range B.
-		</div>
-		<div>
-		Linear mapping of *x* from range [*a1*, *a2*] to range [*b1*, *b2*].
+		Returns a value [link:https://en.wikipedia.org/wiki/Linear_interpolation linearly interpolated]
+		from two known points based on the given interval - [page:Float t] = 0 will return [page:Float x]
+		and [page:Float t] = 1 will return [page:Float y].
 		</div>
 
-		<h3>[method:Integer nearestPowerOfTwo]( n )</h3>
+		<h3>[method:Float mapLinear](
+			[page:Float x],
+			[page:Float a1],
+			[page:Float a2],
+			[page:Float b1],
+			[page:Float b2] )</h3>
 		<div>
-		Return the nearest power of 2 to a given number n.
-		</div>
+		[page:Float x] — Value to be mapped.<br />
+		[page:Float a1] — Minimum value for range A.<br />
+		[page:Float a2] — Maximum value for range A.<br />
+		[page:Float b1] — Minimum value for range B.<br />
+		[page:Float b2] — Maximum value for range B.<br /><br />
 
-		<h3>[method:Integer nextPowerOfTwo]( n )</h3>
-		<div>
-		Return the nearest power of 2 that is bigger than n.
+		Linear mapping of [page:Float x] from range [[page:Float a1], [page:Float a2]] to range [[page:Float b1], [page:Float b2]].
 		</div>
 
+		<h3>[method:Integer nearestPowerOfTwo]( [page:Number n] )</h3>
+		<div>	Return the nearest power of 2 to a given number [page:Number n].</div>
+
+		<h3>[method:Integer nextPowerOfTwo]( [page:Number n] )</h3>
+		<div>Return the nearest power of 2 that is bigger than [page:Number n].</div>
+
 		<h3>[method:Float radToDeg]( [page:Float radians] )</h3>
-		<div>
-		radians -- [page:Float]
-		</div>
-		<div>
-		Converts radians to degrees
-		</div>
+		<div>Converts radians to degrees.</div>
 
 		<h3>[method:Float randFloat]( [page:Float low], [page:Float high] )</h3>
-		<div>
-		Random float from *low* to *high* interval.
-		</div>
+		<div>Random float in the interval [page:Float low] to [page:Float high].</div>
 
 		<h3>[method:Float randFloatSpread]( [page:Float range] )</h3>
-		<div>
-		Random float from *- range / 2* to *range / 2* interval.
-		</div>
+		<div>Random float in the intercal *- [page:Float range] / 2* to *[page:Float range] / 2*.</div>
 
 		<h3>[method:Integer randInt]( [page:Integer low], [page:Integer high] )</h3>
-		<div>
-		Random integer from *low* to *high* interval.
-		</div>
-
-		<h3>[method:Float random16]()</h3>
-		<div>
-		Random float from 0 to 1 with 16 bits of randomness.<br />
-		Standard Math.random() creates repetitive patterns when applied over larger space.
-		</div>
+		<div>Random integer in the interval [page:Float low] to [page:Float high].</div>
 
 		<h3>[method:Float smoothstep]( [page:Float x], [page:Float min], [page:Float max] )</h3>
 		<div>
-		x -- The value to evaluate based on its position between min and max. <br />
-		min -- Any x value below min will be 0 <br />
-		max -- Any x value above max will be 1
-		</div>
-		<div>
+		[page:Float x] - The value to evaluate based on its position between min and max. <br />
+		[page:Float min] - Any x value below min will be 0.<br />
+		[page:Float max] - Any x value above max will be 1.<br /><br />
+
 		Returns a value between 0-1 that represents the percentage that x has moved between min and max,
 		but smoothed or slowed down the closer X is to the min and max.<br/><br/>
 
-		[link:http://en.wikipedia.org/wiki/Smoothstep Wikipedia]
+		See [link:http://en.wikipedia.org/wiki/Smoothstep Smoothstep] for details.
 		</div>
 
 		<h3>[method:Float smootherstep]( [page:Float x], [page:Float min], [page:Float max] )</h3>
 		<div>
-		x -- The value to evaluate based on its position between min and max. <br />
-		min -- Any x value below min will be 0 <br />
-		max --  Any x value above max will be 1
-		</div>
-		<div>
-		Returns a value between 0-1. It works the same as smoothstep, but more smooth.
+		[page:Float x] - The value to evaluate based on its position between min and max. <br />
+		[page:Float min] - Any x value below min will be 0.<br />
+		[page:Float max] - Any x value above max will be 1.<br /><br />
+
+		Returns a value between 0-1. A [link:https://en.wikipedia.org/wiki/Smoothstep#Variations variation on smoothstep]
+		that has zero 1st and 2nd order derivatives at x=0 and x=1.
 		</div>
 
 		<h2>Source</h2>

+ 116 - 79
docs/api/math/Matrix3.html

@@ -10,15 +10,45 @@
 	<body>
 		<h1>[name]</h1>
 
-		<div class="desc">A 3x3 matrix.</div>
-
+		<div class="desc">
+			A class representing a 3x3 [link:https://en.wikipedia.org/wiki/Matrix_(mathematics) matrix].
+		</div>
+
+		<h2>Example</h2>
+		<code>
+var m = new Matrix3();
+		</code>
+
+		<h2>A Note on Row-Major and Column-Major Ordering</h2>
+		<div>
+			The [page:set]() method takes arguments in [link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order row-major]
+			order, while internally they are stored in the [page:.elements elements] array in column-major order.<br /><br />
+
+			This means that calling
+		<code>
+m.set( 11, 12, 13,
+       21, 22, 23,
+       31, 32, 33 );
+		</code>
+		will result in the [page:.elements elements] array containing:
+		<code>
+m.elements = [ 11, 21, 31,
+              12, 22, 32,
+              13, 23, 33 ];
+		</code>
+		and internally all calculations are performed using column-major ordering. However, as the actual ordering
+		makes no difference mathematically and most people are used to thinking about matrices in row-major order,
+		the three.js documentation shows matrices in row-major order. Just bear in mind that if you are reading the source
+		code, you'll have to take the [link:https://en.wikipedia.org/wiki/Transpose transpose] of any matrices outlined here to make sense of the calculations.
+		</div>
 
 		<h2>Constructor</h2>
 
 
 		<h3>[name]()</h3>
 		<div>
-		Creates and initializes the 3x3 matrix to the identity matrix.
+		Creates and initializes the [name] to the 3x3
+		[link:https://en.wikipedia.org/wiki/Identity_matrix identity matrix].
 		</div>
 
 
@@ -27,117 +57,124 @@
 
 		<h3>[property:Float32Array elements]</h3>
 		<div>
-		A column-major list of matrix values.
+		A [link:https://en.wikipedia.org/wiki/Row-_and_column-major_order column-major]
+		 list of matrix values.
+		</div>
+
+		<h3>[property:Boolean isMatrix3]</h3>
+		<div>
+			Used to check whether this or derived classes are Matrix3s. Default is *true*.<br /><br />
+
+			You should not change this, as it used internally for optimisation.
 		</div>
 
 
+
 		<h2>Methods</h2>
 
-		<h3>[method:Matrix3 set]( [page:Float n11], [page:Float n12], [page:Float n13], [page:Float n21], [page:Float n22], [page:Float n23], [page:Float n31], [page:Float n32], [page:Float n33] ) [page:Matrix3 this]</h3>
-		<div>
-		n11 -- [page:Float] <br />
-		n12 -- [page:Float] <br />
-		n13 -- [page:Float] <br />
-		n21 -- [page:Float] <br />
-		n22 -- [page:Float] <br />
-		n23 -- [page:Float] <br />
-		n31 -- [page:Float] <br />
-		n32 -- [page:Float] <br />
-		n33 -- [page:Float]
-		</div>
+		<h3>[method:Array applyToBufferAttribute]( [page:BufferAttribute attribute] )</h3>
 		<div>
-		Sets the 3x3 matrix values to the given row-major sequence of values.
-		</div>
+		[page:BufferAttribute attribute] - An attribute of floats that represent 3D vectors.<br /><br />
 
-		<h3>[method:Matrix3 copy]( [page:Matrix3 m] ) [page:Matrix3 this]</h3>
-		<div>
-		m -- [page:Matrix4]
-		</div>
-		<div>
-		Copies the values of matrix *m* into this matrix.
+		Multiplies (applies) this matrix to every 3D vector in the [page:BufferAttribute attribute].
 		</div>
 
-		<h3>[method:Matrix3 fromArray]( [page:Array array], [page:Integer offset] ) [page:Matrix3 this]</h3>
-		<div>
-		array -- [page:Array] The array to read the elements from.<br />
-		offset -- [page:Integer] optional offset into the array. Default is 0.
-		</div>
-		<div>
-		Sets the elements of this matrix based on an array in column-major format.
-		</div>
 
-		<h3>[method:Matrix3 transpose]() [page:Matrix3 this]</h3>
-		<div>
-		Transposes this matrix in place.
-		</div>
+		<h3>[method:Matrix3 clone]()</h3>
+		<div>Creates a new Matrix3 and with identical elements to this one.</div>
 
-		<h3>[method:Matrix3 transposeIntoArray]( [page:Array array] ) [page:Matrix3 this]</h3>
-		<div>
-		array -- [page:Array] <br />
-		</div>
-		<div>
-		Transposes this matrix into the supplied array, and returns itself unchanged.
-		</div>
+		<h3>[method:Matrix3 copy]( [page:Matrix3 m] )</h3>
+		<div>Copies the elements of matrix [page:Matrix3 m] into this matrix.</div>
 
-		<h3>[method:Float determinant]() [page:Matrix3 this]</h3>
+		<h3>[method:Float determinant]()</h3>
 		<div>
-		Computes and returns the determinant of this matrix.
+		Computes and returns the
+		[link:https://en.wikipedia.org/wiki/Determinant determinant] of this matrix.
 		</div>
 
-		<h3>[method:Matrix3 multiplyScalar]( [page:Float s] ) [page:Matrix3 this]</h3>
-		<div>
-		scalar -- [page:Float]
-		</div>
+		<h3>[method:Matrix3 fromArray]( [page:Array array], [page:Integer offset] )</h3>
 		<div>
-		Multiplies every component of the matrix by the scalar value *s*.
-		</div>
+		[page:Array array] - the array to read the elements from.<br />
+		[page:Integer offset] - (optional) index of first element in the array. Default is 0.<br /><br />
 
-		<h3>[method:Array applyToVector3Array]( [page:Array array] ) [page:Matrix3 this]</h3>
-		<div>
-		array -- An array in the form [vector1x, vector1y, vector1z, vector2x, vector2y, vector2z, ...]
-		</div>
-		<div>
-		Multiplies (applies) this matrix to every vector3 in the array.
+		Sets the elements of this matrix based on an array in
+		[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order column-major] format.
 		</div>
 
-		<h3>[method:Matrix3 getNormalMatrix]( [page:Matrix4 m] ) [page:Matrix3 this]</h3>
-		<div>
-		m -- [page:Matrix4]
-		</div>
+		<h3>[method:Matrix3 getInverse]( [page:Matrix3 m], [page:Boolean throwOnDegenerate] )</h3>
 		<div>
-		Sets this matrix as the normal matrix (upper left 3x3)of the passed [page:Matrix4 matrix4]. The normal matrix is the inverse transpose of the matrix *m*.
-		</div>
+		[page:Matrix3 m] - the matrix to take the inverse of.<br />
+		[page:Boolean throwOnDegenerate] - (optional) If true, throw an error if the matrix is degenerate (not invertible).<br /><br />
 
-		<h3>[method:Matrix3 getInverse]( [page:Matrix4 m], [page:Boolean throwOnDegenerate] ) [page:Matrix3 this]</h3>
-		<div>
-		m -- [page:Matrix4]<br />
-		throwOnDegenerate -- [Page:Boolean] If true, throw an error if the matrix is degenerate (not invertible).
+		Set this matrix to the [link:https://en.wikipedia.org/wiki/Invertible_matrix inverse] of the passed matrix [page:Matrix3 m],
+		using the [link:https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution analytic method].
+
+		If [page:Boolean throwOnDegenerate] is not set and the matrix is not invertible, set this to the 3x3 identity matrix.
 		</div>
+
+		<h3>[method:Matrix3 getNormalMatrix]( [page:Matrix4 m] )</h3>
 		<div>
-		Set this matrix to the inverse of the passed matrix.
+		[page:Matrix4 m] - [page:Matrix4]<br /><br />
+
+		Sets this matrix as the upper left 3x3 of the [link:https://en.wikipedia.org/wiki/Normal_matrix normal matrix]
+		of the passed [page:Matrix4 matrix4]. The normal matrix is the [link:https://en.wikipedia.org/wiki/Invertible_matrix inverse] [link:https://en.wikipedia.org/wiki/Transpose transpose]
+	  of the matrix [page:Matrix4 m].
 		</div>
 
-		<h3>[method:Matrix3 identity]() [page:Matrix3 this]</h3>
+		<h3>[method:Matrix3 identity]()</h3>
 		<div>
-		Resets this matrix to identity.<br/><br/>
+		Resets this matrix to the 3x3 identity matrix:
+		<code>
+1, 0, 0
+0, 1, 0
+0, 0, 1
+		</code>
 
-		1, 0, 0<br/>
-		0, 1, 0<br/>
-		0, 0, 1<br/>
 		</div>
 
-		<h3>[method:Matrix3 clone]() [page:Matrix3 this]</h3>
+		<h3>[method:Matrix3 multiplyScalar]( [page:Float s] )</h3>
+		<div>Multiplies every component of the matrix by the scalar value *s*.</div>
+
+		<h3>
+			[method:Matrix3 set](
+			[page:Float n11], [page:Float n12], [page:Float n13],
+			[page:Float n21], [page:Float n22], [page:Float n23],
+			[page:Float n31], [page:Float n32], [page:Float n33] )
+		</h3>
 		<div>
-		Creates a copy of this matrix.
+		[page:Float n11] - value to put in row 1, col 1.<br />
+		[page:Float n12] - value to put in row 1, col 2.<br />
+		...<br />
+		...<br />
+		[page:Float n32] - value to put in row 3, col 2.<br />
+		[page:Float n33] - value to put in row 3, col 3.<br /><br />
+
+		Sets the 3x3 matrix values to the given
+		[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order row-major]
+		sequence of values.
 		</div>
 
-		<h3>[method:Array toArray]( [page:Array array], [page:Integer offset] ) [page:Matrix3 this]</h3>
+		<h3>[method:Matrix3 setFromMatrix4]( [page:Matrix4 m] )</h3>
+		<div>Set this matrx to the upper 3x3 matrix of the Matrix4 [page:Matrix4 m].</div>
+
+		<h3>[method:Array toArray]( [page:Array array], [page:Integer offset] )</h3>
 		<div>
-		array -- [page:Array] optional array to store the vector <br />
-		offset -- [page:Integer] optional offset into the array
+		[page:Array array] - (optional) array to store the resulting vector in. If not given a new array will be created.<br />
+		[page:Integer offset] - (optional) offset in the array at which to put the result.<br /><br />
+
+		Writes the elements of this matrix to an array in
+		[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order column-major] format.
 		</div>
+
+		<h3>[method:Matrix3 transpose]()</h3>
+		<div>[link:https://en.wikipedia.org/wiki/Transpose Transposes] this matrix in place.</div>
+
+		<h3>[method:Matrix3 transposeIntoArray]( [page:Array array] )</h3>
 		<div>
-		Writes the elements of this matrix to an array in column-major format.
+		[page:Array array] -  array to store the resulting vector in.<br /><br />
+
+		[link:https://en.wikipedia.org/wiki/Transpose Transposes] this matrix into the supplied array,
+		and returns itself unchanged.
 		</div>
 
 		<h2>Source</h2>

+ 300 - 148
docs/api/math/Matrix4.html

@@ -10,30 +10,71 @@
 	<body>
 		<h1>[name]</h1>
 
-		<div class="desc">A 4x4 Matrix.</div>
+		<div class="desc">
+			A class representing a 4x4 [link:https://en.wikipedia.org/wiki/Matrix_(mathematics) matrix].<br /><br />
+
+			The most common use of a 4x4 matrix in 3D computer graphics is as a
+			[link:https://en.wikipedia.org/wiki/Transformation_matrix Transformation Matrix].
+			For an introduction to transformation matrices as used in WebGL, check out
+			[link:http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices this tutorial].<br /><br />
+
+			This allows a [page:Vector3] representing a point in 3D space to undergo transformations
+			such as translation, rotation, shear, scale, reflection, orthogonal or perspective projection
+			and so on, by being multiplied by the matrix. This is known as	<em>applying</em>
+			the matrix to the vector.<br /><br />
+
+			Every [page:Object3D] has three associated Matrix4s:
+			<ul>
+				<li>
+					[page:Object3D.matrix]: This stores the local transform of the object.
+				</li>
+				<li>
+					[page:Object3D.matrixWorld]: The global or world transform of the object. This is the objects transformation relative to its parent.
+					If the object has no parent, then this is identical to the local transform.
+				</li>
+				<li>
+					[page:Object3D.modelViewMatrix]:
+				</li>
+			</ul>
+
+			[page:Camera Cameras] have two additional matrix4s:
+			<ul>
+				<li>
+					[page:Object3D.matrixWorldInverse]: The inverse of the [page:Object3D.matrixWorld] described above.
+				</li>
+				<li>
+					[page:Object3D.projectionMatrix]:
+				</li>
+			</ul>
+		</div>
+
+		<h2>A Note on Row-Major and Column-Major Ordering</h2>
+		<div>
+			The [page:set]() method takes arguments in [link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order row-major]
+			order, while internally they are stored in the [page:.elements elements] array in column-major order.<br /><br />
+
+			This means that calling
+		<code>
+var m = new Matrix4();
+
+m.set( 11, 12, 13, 14,
+       21, 22, 23, 24,
+       31, 32, 33, 34,
+       41, 42, 43, 44 );
 
-
-		<h2>Example</h2>
-
-		<code>// Simple rig for rotating around 3 axes
-
-		var m = new THREE.Matrix4();
-
-		var m1 = new THREE.Matrix4();
-		var m2 = new THREE.Matrix4();
-		var m3 = new THREE.Matrix4();
-
-		var alpha = 0;
-		var beta = Math.PI;
-		var gamma = Math.PI/2;
-
-		m1.makeRotationX( alpha );
-		m2.makeRotationY( beta );
-		m3.makeRotationZ( gamma );
-
-		m.multiplyMatrices( m1, m2 );
-		m.multiply( m3 );
 		</code>
+		will result in the [page:.elements elements] array containing:
+		<code>
+m.elements = [ 11, 21, 31, 41,
+               12, 22, 32, 42,
+               13, 23, 33, 43,
+               14, 24, 34, 44 ];
+		</code>
+		and internally all calculations are performed using column-major ordering. However, as the actual ordering
+		makes no difference mathematically and most people are used to thinking about matrices in row-major order,
+		the three.js documentation shows matrices in row-major order. Just bear in mind that if you are reading the source
+		code, you'll have to take the [link: https://en.wikipedia.org/wiki/Transpose transpose] of any matrices outlined here to make sense of the calculations.
+		</div>
 
 
 		<h2>Constructor</h2>
@@ -42,228 +83,339 @@
 		<h3>[name]()</h3>
 
 		<div>
-		Creates and initializes the matrix to the identity matrix.
-		</div>
+			Creates and initializes the [name] to the 4x4
+			[link:https://en.wikipedia.org/wiki/Identity_matrix identity matrix].
+	</div>
 
 		<h2>Properties</h2>
 
 		<h3>[property:Float32Array elements]</h3>
-		<div>A column-major list of matrix values.</div>
-
-		<h2>Methods</h2>
-
-		<h3>[method:Matrix4 set]( [page:Float n11], [page:Float n12], [page:Float n13], [page:Float n14], [page:Float n21], [page:Float n22], [page:Float n23], [page:Float n24], [page:Float n31], [page:Float n32], [page:Float n33], [page:Float n34], [page:Float n41], [page:Float n42], [page:Float n43], [page:Float n44] ) [page:Matrix4 this]</h3>
 		<div>
-		Sets all fields of this matrix to the supplied row-major values n11..n44.
+		A [link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order column-major]
+		 list of matrix values.
 		</div>
 
-		<h3>[method:Matrix4 identity]() [page:Matrix4 this]</h3>
+		<h3>[property:Boolean isMatrix4]</h3>
 		<div>
-		Resets this matrix to identity.
-		</div>
+			Used to check whether this or derived classes are Matrix4s. Default is *true*.<br /><br />
 
-		<h3>[method:Matrix4 copy]( [page:Matrix4 m] ) [page:Matrix4 this]</h3>
-		<div>
-		Copies the values of matrix *m* into this matrix.
+			You should not change this, as it used internally for optimisation.
 		</div>
 
-		<h3>[method:Matrix4 fromArray]( [page:Array array], [page:Integer offset] ) [page:Matrix4 this]</h3>
-		<div>
-		array -- [page:Array] The array to read the elements from.<br />
-		offset -- [page:Integer] optional offset into the array. Default is 0.
-		</div>
-		<div>
-		Sets the elements of this matrix based on an array in column-major format.
-		</div>
 
-		<h3>[method:Matrix4 copyPosition]( [page:Matrix4 m] ) [page:Matrix4 this]</h3>
-		<div>
-		Copies the translation component of the supplied matrix *m* into this matrix translation component.
-		</div>
 
-		<h3>[method:Matrix4 makeBasis]( [page:Vector3 xAxis], [page:Vector3 yAxis], [page:Vector3 zAxis] ) [page:Matrix4 this]</h3>
-		<div>
-		Creates the basis matrix consisting of the three provided axis vectors.  Returns the current matrix.
-		</div>
 
-		<h3>[method:Matrix4 extractBasis]( [page:Vector3 xAxis], [page:Vector3 yAxis], [page:Vector3 zAxis] ) [page:Matrix4 this]</h3>
-		<div>
-		Extracts basis of into the three axis vectors provided.  Returns the current matrix.
-		</div>
+		<h2>Methods</h2>
 
-		<h3>[method:Matrix4 extractRotation]( [page:Matrix4 m] ) [page:Matrix4 this]</h3>
+		<h3>[method:Array applyToBufferAttribute]( [page:BufferAttribute attribute] )</h3>
 		<div>
-		Extracts the rotation of the supplied matrix *m* into this matrix rotation component.
-		</div>
+		[page:BufferAttribute attribute] - An attribute of floats that represent 3D vectors.<br /><br />
 
-		<h3>[method:Matrix4 lookAt]( [page:Vector3 eye], [page:Vector3 center], [page:Vector3 up], ) [page:Matrix4 this]</h3>
-		<div>
-		Constructs a rotation matrix, looking from *eye* towards *center* with defined *up* vector.
+		Multiplies (applies) this matrix to every 3D vector in the [page:BufferAttribute attribute].
 		</div>
 
-		<h3>[method:Matrix4 multiply]( [page:Matrix4 m] ) [page:Matrix4 this]</h3>
-		<div>
-		Post-multiplies this matrix by *m*.
-		</div>
 
-		<h3>[method:Matrix4 premultiply]( [page:Matrix4 m] ) [page:Matrix4 this]</h3>
-		<div>
-		Pre-multiplies this matrix by *m*.
-		</div>
+		<h3>[method:Matrix4 clone]()</h3>
+		<div>Creates a new Matrix4 with identical [page:.elements elements] to this one.</div>
 
-		<h3>[method:Matrix4 multiplyMatrices]( [page:Matrix4 a], [page:Matrix4 b] ) [page:Matrix4 this]</h3>
+		<h3>[method:Matrix4 compose]( [page:Vector3 position], [page:Quaternion quaternion], [page:Vector3 scale] )</h3>
 		<div>
-		Sets this matrix to *a x b*.
+		Sets this matrix to the transformation composed of [page:Vector3 position],
+		[page:Quaternion quaternion] and [page:Vector3 scale]. Internally this calls
+		[page:.makeRotationFromQuaternion makeRotationFromQuaternion]( [page:Quaternion quaternion] )
+		followed by [page:.scale scale]( [page:Vector3 scale] ), then finally
+		[page:.setPosition setPosition]( [page:Vector3 position] ).
 		</div>
 
-		<h3>[method:Matrix4 multiplyToArray]( [page:Matrix4 a], [page:Matrix4 b], [page:Array r] ) [page:Matrix4 this]</h3>
-		<div>
-		Sets this matrix to *a x b* and stores the result into the flat array *r*.<br />
-		*r* can be either a regular Array or a TypedArray.
-		</div>
+		<h3>[method:Matrix4 copy]( [page:Matrix4 m] )</h3>
+		<div>Copies the [page:.elements elements] of matrix [page:Matrix4 m] into this matrix.</div>
 
-		<h3>[method:Matrix4 multiplyScalar]( [page:Float s] ) [page:Matrix4 this]</h3>
+		<h3>[method:Matrix4 copyPosition]( [page:Matrix4 m] )</h3>
 		<div>
-		Multiplies every component of the matrix by a scalar value *s*.
+		Copies the translation component of the supplied matrix [page:Matrix4 m] into this
+		matrix's translation component.
 		</div>
 
-		<h3>[method:Float determinant]() [page:Matrix4 this]</h3>
+		<h3>[method:null decompose]( [page:Vector3 position], [page:Quaternion quaternion], [page:Vector3 scale] )</h3>
 		<div>
-		Computes and returns the determinant of this matrix.<br />
-		Based on [link:http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm]
+		Decomposes this matrix into it's [page:Vector3 position], [page:Quaternion quaternion] and
+		[page:Vector3 scale] components.
 		</div>
 
-		<h3>[method:Matrix4 transpose]() [page:Matrix4 this]</h3>
+		<h3>[method:Float determinant]()</h3>
 		<div>
-		Transposes this matrix.
-		</div>
+		Computes and returns the
+		[link:https://en.wikipedia.org/wiki/Determinant determinant] of this matrix.<br /><br />
 
-		<h3>[method:Matrix4 setPosition]( [page:Vector3 v] ) [page:Matrix4 this]</h3>
-		<div>
-		Sets the position component for this matrix from vector *v*.
+		Based on the method outlined [link:http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm here].
 		</div>
 
-		<h3>[method:Matrix4 getInverse]( [page:Matrix4 m] ) [page:Matrix4 this]</h3>
-		<div>
-		Sets this matrix to the inverse of matrix *m*.<br />
-		Based on [link:http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm].
-		</div>
+		<h3>[method:Boolean equals]( [page:Matrix4 m] )</h3>
+		<div>Return true if this matrix and [page:Matrix4 m] are equal.</div>
 
-		<h3>[method:Matrix4 makeRotationFromEuler]( [page:Euler euler] ) [page:Matrix4 this]</h3>
-		<div>
-		euler — Rotation vector followed by order of rotations, e.g., "XYZ".
-		</div>
+		<h3>[method:Matrix4 extractBasis]( [page:Vector3 xAxis], [page:Vector3 yAxis], [page:Vector3 zAxis] )</h3>
 		<div>
-		Sets the rotation submatrix of this matrix to the rotation specified by Euler angles, the rest of the matrix is identity.<br />
-		Default order is *"XYZ"*.
+		Extracts the [link:https://en.wikipedia.org/wiki/Basis_(linear_algebra) basis] of this
+		matrix into the three axis vectors provided. If this matrix is:
+		<code>
+a, b, c, d,
+e, f, g, h,
+i, j, k, l,
+m, n, o, p
+		</code>
+		then the [page:Vector3 xAxis], [page:Vector3 yAxis], [page:Vector3 zAxis] will be set to:
+		<code>
+xAxis = (a, e, i)
+yAxis = (d, f, j)
+zAxis = (c, g, k)
+		</code>
 		</div>
 
-		<h3>[method:Matrix4 makeRotationFromQuaternion]( [page:Quaternion q] ) [page:Matrix4 this]</h3>
+		<h3>[method:Matrix4 extractRotation]( [page:Matrix4 m] )</h3>
 		<div>
-		Sets the rotation submatrix of this matrix to the rotation specified by *q*. The rest of the matrix is identity.
+		Extracts the rotation component of the supplied matrix [page:Matrix4 m] into this matrix's
+		rotation component.
 		</div>
 
-		<h3>[method:Matrix4 scale]( [page:Vector3 v] ) [page:Matrix4 this]</h3>
+		<h3>[method:Matrix4 fromArray]( [page:Array array], [page:Integer offset] )</h3>
 		<div>
-		Multiplies the columns of this matrix by vector *v*.
-		</div>
+		[page:Array array] - the array to read the elements from.<br />
+		[page:Integer offset] - ( optional ) offset into the array. Default is 0.<br /><br />
 
-		<h3>[method:Matrix4 compose]( [page:Vector3 translation], [page:Quaternion quaternion], [page:Vector3 scale] ) [page:Matrix4 this]</h3>
-		<div>
-		Sets this matrix to the transformation composed of *translation*, *quaternion* and *scale*.
+		Sets the elements of this matrix based on an [page:Array array] in
+		[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order column-major] format.
 		</div>
 
-		<h3>[method:null decompose]( [page:Vector3 translation], [page:Quaternion quaternion], [page:Vector3 scale] ) [page:Matrix4 this]</h3>
+		<h3>[method:Matrix4 getInverse]( [page:Matrix4 m], [page:Boolean throwOnDegenerate] )</h3>
 		<div>
-		Decomposes this matrix into the *translation*, *quaternion* and *scale* components.
-		</div>
+		[page:Matrix4 m] - the matrix to take the inverse of.<br />
+		[page:Boolean throwOnDegenerate] - (optional) If true, throw an error if the matrix is degenerate (not invertible).<br /><br />
 
-		<h3>[method:Matrix4 makeTranslation]( [page:Float x], [page:Float y], [page:Float z] ) [page:Matrix4 this]</h3>
-		<div>
-		Sets this matrix as translation transform.
-		</div>
+		Set this matrix to the [link:https://en.wikipedia.org/wiki/Invertible_matrix inverse] of the passed matrix [page:Matrix4 m],
+		using the method outlined [link:http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm here].
 
-		<h3>[method:Matrix4 makeRotationX]( [page:Float theta] ) [page:Matrix4 this]</h3>
-		<div>
-		theta — Rotation angle in radians.
+		If [page:Boolean throwOnDegenerate] is not set and the matrix is not invertible, set this to the 4x4 identity matrix.
 		</div>
+
+
+		<h3>[method:Float getMaxScaleOnAxis]()</h3>
+		<div>Gets the maximum scale value of the 3 axes.</div>
+
+		<h3>[method:Matrix4 identity]()</h3>
+		<div>Resets this matrix to the [link:https://en.wikipedia.org/wiki/Identity_matrix identity matrix].</div>
+
+		<h3>[method:Matrix4 lookAt]( [page:Vector3 eye], [page:Vector3 center], [page:Vector3 up], )</h3>
 		<div>
-		Sets this matrix as rotation transform around x axis by *theta* radians.
+			Constructs a rotation matrix, looking from [page:Vector3 eye] towards [page:Vector3 center]
+			oriented by the [page:Vector3 up] vector.
 		</div>
 
-		<h3>[method:Matrix4 makeRotationY]( [page:Float theta] ) [page:Matrix4 this]</h3>
+		<h3>[method:Matrix4 makeRotationAxis]( [page:Vector3 axis], [page:Float theta] )</h3>
 		<div>
-		theta — Rotation angle in radians.
+		[page:Vector3 axis] — Rotation axis, should be normalized.<br />
+		[page:Float theta] — Rotation angle in radians.<br /><br />
+
+		Sets this matrix as rotation transform around [page:Vector3 axis] by [page:Float theta] radians.<br />
+
+		This is a somewhat controversial but mathematically sound alternative to rotating via [page:Quaternions].
+		See the discussion [link:http://www.gamedev.net/reference/articles/article1199.asp here].
 		</div>
+
+		<h3>[method:Matrix4 makeBasis]( [page:Vector3 xAxis], [page:Vector3 yAxis], [page:Vector3 zAxis] )</h3>
 		<div>
-		Sets this matrix as rotation transform around y axis by *theta* radians.
+		Set this to the [link:https://en.wikipedia.org/wiki/Basis_(linear_algebra) basis] matrix consisting
+		of the three provided basis vectors:
+		<code>
+xAxis.x, yAxis.x, zAxis.x, 0,
+xAxis.y, yAxis.y, zAxis.y, 0,
+xAxis.z, yAxis.z, zAxis.z, 0,
+0,       0,       0,       1
+		</code>
 		</div>
 
-		<h3>[method:Matrix4 makeRotationZ]( [page:Float theta] ) [page:Matrix4 this]</h3>
+		<h3>[method:Matrix4 makePerspective]( [page:Float left], [page:Float right], [page:Float top], [page:Float bottom], [page:Float near], [page:Float far] )</h3>
 		<div>
-		theta — Rotation angle in radians.
+			Creates a [link:https://en.wikipedia.org/wiki/3D_projection#Perspective_projection perspective projection] matrix.
+			This is used internally by [page:PerspectiveCamera.updateProjectionMatrix]()
 		</div>
+
+		<h3>[method:Matrix4 makeOrthographic]( [page:Float left], [page:Float right], [page:Float top], [page:Float bottom], [page:Float near], [page:Float far] )</h3>
 		<div>
-		Sets this matrix as rotation transform around z axis by *theta* radians.
+		Creates an [link:https://en.wikipedia.org/wiki/Orthographic_projection orthographic projection] matrix.
+		This is used internally by [page:OrthographicCamera.updateProjectionMatrix]().
 		</div>
 
-		<h3>[method:Matrix4 makeRotationAxis]( [page:Vector3 axis], [page:Float theta] ) [page:Matrix4 this]</h3>
+		<h3>[method:Matrix4 makeRotationFromEuler]( [page:Euler euler] )</h3>
 		<div>
-		axis — Rotation axis, should be normalized.
-		theta — Rotation angle in radians.
+		Sets the rotation component (the upper left 3x3 matrix) of this matrix to the rotation specified by the given [page:Euler Euler Angle].
+		The rest of the matrix is set to the identity. Depending on the [page:Euler.order order] of the [page:Euler euler], there are six possible outcomes.
+		See [link:https://en.wikipedia.org/wiki/Euler_angles#Rotation_matrix this page] for a complete list.
 		</div>
+
+		<h3>[method:Matrix4 makeRotationFromQuaternion]( [page:Quaternion q] )</h3>
 		<div>
-		Sets this matrix as rotation transform around *axis* by *angle* radians.<br />
-		Based on [link:http://www.gamedev.net/reference/articles/article1199.asp].
+		Sets the rotation component of this matrix to the rotation specified by [page:Quaternion q], as outlined
+		[link:https://en.wikipedia.org/wiki/Rotation_matrix#Quaternion here].
+		The rest of the matrix is set to the identity. So, given [page:Quaternion q] = w + xi + yj + zk, the resulting matrix will be:
+		<code>
+1-2y²-2z²    2xy-2zw    2xz-2yw    0
+2xy+2zw      1-2x²-2z²  2yz-2xw    0
+2xz-2yw      2yz+2xw    1-2x²-2y²  0
+0            0          0          1
+		</code>
 		</div>
 
-		<h3>[method:Matrix4 makeScale]( [page:Float x], [page:Float y], [page:Float z] ) [page:Matrix4 this]</h3>
+		<h3>[method:Matrix4 makeRotationX]( [page:Float theta] )</h3>
 		<div>
-		Sets this matrix as scale transform.
+		[page:Float theta] — Rotation angle in radians.<br /><br />
+
+		Sets this matrix as a rotational transformation around the X axis by [page:Float theta] (&theta;) radians.
+		The resulting matrix will be:
+		<code>
+1 0      0        0
+0 cos(&theta;) -sin(&theta;)  0
+0 sin(&theta;) cos(&theta;)   0
+0 0      0        1
+		</code>
 		</div>
 
-		<h3>[method:Matrix4 makeFrustum]( [page:Float left], [page:Float right], [page:Float bottom], [page:Float top], [page:Float near], [page:Float far] ) [page:Matrix4 this]</h3>
+		<h3>[method:Matrix4 makeRotationY]( [page:Float theta] )</h3>
 		<div>
-		Creates a [page:Frustum frustum] matrix.
+		[page:Float theta] — Rotation angle in radians.<br /><br />
+
+		Sets this matrix as a rotational transformation around the Y axis by [page:Float theta] (&theta;) radians.
+		The resulting matrix will be:
+		<code>
+cos(&theta;)  0 sin(&theta;) 0
+0       1 0      0
+-sin(&theta;) 0 cos(&theta;) 0
+0       0 0      1
+		</code>
 		</div>
 
-		<h3>[method:Matrix4 makePerspective]( [page:Float fov], [page:Float aspect], [page:Float near], [page:Float far] ) [page:Matrix4 this]</h3>
+		<h3>[method:Matrix4 makeRotationZ]( [page:Float theta] )</h3>
 		<div>
-		Creates a perspective projection matrix.
+		[page:Float theta] — Rotation angle in radians.<br /><br />
+
+		Sets this matrix as a rotational transformation around the Z axis by [page:Float theta] (&theta;) radians.
+		The resulting matrix will be:
+		<code>
+cos(&theta;) -sin(&theta;) 0 0
+sin(&theta;) cos(&theta;)  0 0
+0      0       1 0
+0      0       0 1
+		</code>
 		</div>
 
-		<h3>[method:Matrix4 makeOrthographic]( [page:Float left], [page:Float right], [page:Float top], [page:Float bottom], [page:Float near], [page:Float far] ) [page:Matrix4 this]</h3>
+		<h3>[method:Matrix4 makeScale]( [page:Float x], [page:Float y], [page:Float z] )</h3>
 		<div>
-		Creates an orthographic projection matrix.
+			[page:Float x] - the amount to scale in the X axis.<br />
+			[page:Float y] - the amount to scale in the Y axis.<br />
+			[page:Float z] - the amount to scale in the Z axis.<br /><br />
+
+			Sets this matrix as scale transform:
+			<code>
+x, 0, 0, 0,
+0, y, 0, 0,
+0, 0, z, 0,
+0, 0, 0, 1
+			</code>
 		</div>
 
-		<h3>[method:Array applyToVector3Array]( [page:Array a] ) [page:Matrix4 this]</h3>
+		<h3>[method:Matrix4 makeShear]( [page:Float x], [page:Float y], [page:Float z] )</h3>
 		<div>
-		array -- An array in the form [vector1x, vector1y, vector1z, vector2x, vector2y, vector2z, ...]
+		[page:Float x] - the amount to shear in the X axis.<br />
+		[page:Float y] - the amount to shear in the Y axis.<br />
+		[page:Float z] - the amount to shear in the Z axis.<br /><br />
+
+		Sets this matrix as a shear transform:
+<code>
+1, y, z, 0,
+x, 1, z, 0,
+x, y, 1, 0,
+0, 0, 0, 1
+</code>
 		</div>
+
+		<h3>[method:Matrix4 makeTranslation]( [page:Float x], [page:Float y], [page:Float z] )</h3>
 		<div>
-		Multiplies (applies) this matrix to every vector3 in the array.
+			[page:Float x] - the amount to translate in the X axis.<br />
+			[page:Float y] - the amount to translate in the Y axis.<br />
+			[page:Float z] - the amount to translate in the Z axis.<br /><br />
+
+		Sets this matrix as a translation transform:
+		<code>
+1, 0, 0, x,
+0, 1, 0, y,
+0, 0, 1, z,
+0, 0, 0, 1
+		</code>
 		</div>
 
-		<h3>[method:Float getMaxScaleOnAxis]() [page:Matrix4 this]</h3>
+		<h3>[method:Matrix4 multiply]( [page:Matrix4 m] )</h3>
+		<div>Post-multiplies this matrix by [page:Matrix4 m].</div>
+
+		<h3>[method:Matrix4 multiplyMatrices]( [page:Matrix4 a], [page:Matrix4 b] )</h3>
+		<div>Sets this matrix to [page:Matrix4 a] x [page:Matrix4 b].</div>
+
+		<h3>[method:Matrix4 multiplyScalar]( [page:Float s] )</h3>
+		<div>Multiplies every component of the matrix by a scalar value [page:Float s].</div>
+
+		<h3>[method:Matrix4 multiplyToArray]( [page:Matrix4 a], [page:Matrix4 b], [page:Array r] )</h3>
 		<div>
-		Gets the maximum scale value of the 3 axes.
+		Sets this matrix to [page:Matrix4 a] x [page:Matrix4 b] and stores the result into the flat array [page:Array r],
+		in [link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order column-major] order.
+
+		[page:Array r] can be either a regular Array or a [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays TypedArray].
 		</div>
 
-		<h3>[method:Matrix4 clone]() [page:Matrix4 this]</h3>
+		<h3>[method:Matrix4 premultiply]( [page:Matrix4 m] )</h3>
+		<div>Pre-multiplies this matrix by [page:Matrix4 m].</div>
+
+		<h3>[method:Matrix4 scale]( [page:Vector3 v] )</h3>
+		<div>Multiplies the columns of this matrix by vector [page:Vector3 v].</div>
+
+		<h3>[method:Matrix4 set](
+			[page:Float n11], [page:Float n12], [page:Float n13], [page:Float n14],
+			[page:Float n21], [page:Float n22], [page:Float n23], [page:Float n24],
+			[page:Float n31], [page:Float n32], [page:Float n33], [page:Float n34],
+			[page:Float n41], [page:Float n42], [page:Float n43], [page:Float n44] )</h3>
 		<div>
-		Creates a copy of this matrix.
+			Set the [page:.elements elements] of this matrix to the supplied row-major values [page:Float n11],
+			[page:Float n12], ... [page:Float n44].
 		</div>
 
-		<h3>[method:Array toArray]( [page:Array array], [page:Integer offset] ) [page:Matrix4 this]</h3>
+		<h3>[method:Matrix4 setPosition]( [page:Vector3 v] )</h3>
 		<div>
-		array -- [page:Array] optional array to store the vector <br />
-		offset -- [page:Integer] optional offset into the array
+			Sets the position component for this matrix from vector [page:Vector3 v], without affecting the
+			rest of the matrix - i.e. if the matrix is currently:
+<code>
+a, b, c, d,
+e, f, g, h,
+i, j, k, l,
+m, n, o, p
+</code>
+This becomes:
+<code>
+a, b, c, v.x,
+e, f, g, v.y,
+i, j, k, v.z,
+m, n, o, p
+</code>
 		</div>
+
+		<h3>[method:Array toArray]( [page:Array array], [page:Integer offset] )</h3>
 		<div>
-		Writes the elements of this matrix to an array in column-major format.
+		[page:Array array] - (optional) array to store the resulting vector in.<br />
+		[page:Integer offset] - (optional) offset in the array at which to put the result.<br /><br />
+
+		Writes the elements of this matrix to an array in
+		[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order column-major] format.
 		</div>
 
+		<h3>[method:Matrix4 transpose]()</h3>
+		<div>[link:https://en.wikipedia.org/wiki/Transpose Transposes] this matrix.</div>
+
 		<h2>Source</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

+ 105 - 115
docs/api/math/Plane.html

@@ -10,7 +10,11 @@
 	<body>
 		<h1>[name]</h1>
 
-		<div class="desc">A two dimensional surface that extends infinitely in 3d space.</div>
+		<div class="desc">
+			A two dimensional surface that extends infinitely in 3d space, defined by
+			a [link:https://en.wikipedia.org/wiki/Normal_(geometry) normal vector], and a
+			distance from the origin along the normal.
+		</div>
 
 
 		<h2>Constructor</h2>
@@ -18,8 +22,10 @@
 
 		<h3>[name]( [page:Vector3 normal], [page:Float constant] )</h3>
 		<div>
-		normal -- ([Page:Vector3]) normal vector defining the plane pointing towards the origin <br />
-		constant -- ([Page:Float]) the negative distance from the origin to the plane along the normal vector
+		[page:Vector3 normal] - (optional) a [page:Vector3] defining the direction of the
+		plane. Default is *(1, 0, 0)*.<br />
+		[page:Float constant] - (optional) the negative distance from the origin to the plane along
+		 the [page:Vector3 normal] vector. Default is *0*.
 		</div>
 
 
@@ -31,173 +37,157 @@
 
 		<h2>Methods</h2>
 
-
-
-		<h3>[method:Plane normalize]() [page:Plane this]</h3>
+		<h3>[method:Plane applyMatrix4]( [page:Matrix4 matrix], [page:Matrix3 optionalNormalMatrix] )</h3>
 		<div>
-		Normalizes the normal vector, and adjusts the constant value accordingly.
-		</div>
+		[page:Matrix4 matrix] - the [Page:Matrix4] to apply.<br />
+		[page:Matrix3 optionalNormalMatrix] - (optional) pre-computed normal [Page:Matrix3] of the Matrix4 being applied.<br /><br />
 
-		<h3>[method:Plane set]( [page:Vector3 normal], [page:Float constant] ) [page:Plane this]</h3>
-		<div>
-		normal -- [Page:Vector3] <br />
-		constant -- [Page:Float]
-		</div>
-		<div>
-		Sets the plane's values.
+		Apply a Matrix4 to the plane. The matrix must be an affine, homogeneous transform.<br />
+		If supplying an [page:Matrix3 optionalNormalMatrix], it can be created like so:
+		<code>
+		var optionalNormalMatrix = new THREE.Matrix3().getNormalMatrix( matrix );
+		</code>
 		</div>
 
-		<h3>[method:Plane copy]( [page:Plane plane] ) [page:Plane this]</h3>
-		<div>
-		plane -- [page:Plane] to copy
-		</div>
-		<div>
-		Copies the values of the passed plane to this plane.
-		</div>
+		<h3>[method:Plane clone]()</h3>
+		<div>Returns a new plane with the same [page:.normal normal] and [page:.constant constant] as this one.</div>
 
-		<h3>[method:Plane applyMatrix4]( [page:Matrix4 matrix], [page:Matrix3 optionalNormalMatrix] ) [page:Plane this]</h3>
-		<div>
-		matrix -- [Page:Matrix4] to apply <br />
-		optionalNormalMatrix -- (optional) pre-computed normal [Page:Matrix3] of the Matrix4 to apply
-		</div>
+		<h3>[method:Vector3 coplanarPoint]( [page:Vector3 optionalTarget] )</h3>
 		<div>
-		Apply a Matrix4 to the plane. The matrix must be an affine, homogeneous transform.
-		The second parameter is optional.
+			[page:Vector3 optionalTarget] - (optional) if specified, the result will be copied into this [page:Vector3],
+			otherwise a new [page:Vector3] will be created.<br /><br />
 
-		<code>
-		var optionalNormalMatrix = new THREE.Matrix3().getNormalMatrix( matrix )
-		</code>
+		Returns a [page:Vector3] coplanar to the plane, by calculating the projection of the
+		normal vector at the origin onto the plane.
 		</div>
 
-		<h3>[method:Vector3 orthoPoint]( [page:Vector3 point], [page:Vector3 optionalTarget] )</h3>
+		<h3>[method:Plane copy]( [page:Plane plane] )</h3>
 		<div>
-		point -- [page:Vector3] <br />
-		optionalTarget -- [page:Vector3]
-		</div>
-		<div>
-		Returns a vector in the same direction as the Plane's normal, but the magnitude is passed point's original distance to the plane.
+		Copies the values of the passed plane's [page:.normal normal] and [page:.constant constant]
+		properties to this plane.
 		</div>
 
-		<h3>[method:Boolean intersectsLine]( [page:Line3 line] )</h3>
-		<div>
-		line -- [page:Line3]
-		</div>
-		<div>
-		Tests whether a line segment intersects with the plane. (Do not mistake this for a collinear check.)
-		</div>
+		<h3>[method:Float distanceToPoint]( [page:Vector3 point] )</h3>
+		<div>Returns the smallest distance from the [page:Vector3 point] to the plane.</div>
 
-		<h3>[method:Boolean intersectsBox]( [page:Box3 box] ) [page:Plane this]</h3>
-		<div>
-		box -- Box to check for intersection against.
-		</div>
-		<div>
-		Determines whether or not this plane intersects *box*.
-		</div>
+		<h3>[method:Float distanceToSphere]( [page:Sphere sphere] )</h3>
+		<div>Returns the smallest distance from the [page:Sphere sphere] to the plane.</div>
 
-		<h3>[method:Boolean intersectsSphere]( [page:Sphere sphere] ) [page:Plane this]</h3>
-		<div>
-		sphere -- Sphere to check for intersection against.
-		</div>
+		<h3>[method:Boolean equals]( [page:Plane plane] )</h3>
 		<div>
-		Determines whether or not this plane intersects *sphere*.
+			Checks to see if two planes are equal (their [page:.normal normal] and
+			[page:.constant constant] properties match).
 		</div>
 
 		<h3>[method:Vector3 intersectLine]( [page:Line3 line], [page:Vector3 optionalTarget] ) or [page:undefined]</h3>
 		<div>
-		line -- [page:Line3] <br />
-		optionalTarget -- [page:Vector3]
-		</div>
-		<div>
-		Returns the intersection point of the passed line and the plane. Returns undefined if the line does not intersect. Returns the line's starting point if the line is coplanar with the plane.
-		</div>
+		[page:Line3 line] - the [page:Line3] to check for intersection.<br />
+		[page:Vector3 optionalTarget] - (optional) if specified, the result will be copied into this [page:Vector3],
+		otherwise a new [page:Vector3] will be created.<br /><br />
 
-		<h3>[method:Plane setFromNormalAndCoplanarPoint]( [page:Vector3 normal], [page:Vector3 point] ) [page:Vector3 this]</h3>
-		<div>
-		normal -- [page:Vector3] <br />
-		point -- [page:Vector3]
-		</div>
-		<div>
-		Sets the plane's values as defined by a normal and arbitrary coplanar point.
+		Returns the intersection point of the passed line and the plane. Returns undefined
+		 if the line does not intersect. Returns the line's starting point if the line is
+		 coplanar with the plane.
 		</div>
 
-		<h3>[method:Plane clone]()</h3>
+		<h3>[method:Boolean intersectsBox]( [page:Box3 box] )</h3>
 		<div>
-		Returns a new copy of this plane.
-		</div>
+		[page:Box3 box] - the [page:Box3] to check for intersection.<br /><br />
 
-		<h3>[method:Float distanceToPoint]( [page:Vector3 point] )</h3>
-		<div>
-		point -- [page:Vector3]
-		</div>
-		<div>
-		Returns the smallest distance from the point to the plane.
+		Determines whether or not this plane intersects [page:Box3 box].
 		</div>
 
-		<h3>[method:Boolean equals]( [page:Plane plane] )</h3>
-		<div>
-		plane -- [page:Planen]
-		</div>
+		<h3>[method:Boolean intersectsLine]( [page:Line3 line] )</h3>
 		<div>
-		Checks to see if two planes are equal (their normals and constants match)
-		</div>
+		[page:Line3 line] - the [page:Line3] to check for intersection.<br /><br />
 
-		<h3>[method:Plane setComponents]( [page:Float x], [page:Float y], [page:Float z], [page:Float w] ) [page:Plane this]</h3>
-		<div>
-		x -- [page:Float] x of the normal vector <br />
-		y -- [page:Float] y of the normal vector<br />
-		z -- [page:Float] z of the normal vector<br />
-		w -- [page:Float] distance of the plane from the origin along the normal vector
-		</div>
-		<div>
-		Set the individual components that make up the plane.
+		Tests whether a line segment intersects with (passes through) the plane.
 		</div>
 
-		<h3>[method:Float distanceToSphere]( [page:Sphere sphere] )</h3>
+		<h3>[method:Boolean intersectsSphere]( [page:Sphere sphere] )</h3>
 		<div>
-		sphere -- [Page:Sphere]
+		[page:Sphere sphere]  - the [page:Sphere] to check for intersection.<br /><br />
+
+		Determines whether or not this plane intersects [page:Sphere sphere].
 		</div>
+
+		<h3>[method:Plane negate]()</h3>
 		<div>
-		Returns the smallest distance from an edge of the sphere to the plane.
+		Negates both the normal vector and constant, effectively mirroring the plane across
+		the origin.
 		</div>
 
-		<h3>[method:Plane setFromCoplanarPoints]( [page:Vector3 a], [page:Vector3 b], [page:Vector3 c] ) [page:Plane this]</h3>
+		<h3>[method:Plane normalize]()</h3>
 		<div>
-		a -- [page:Vector3] <br />
-		b -- [page:Vector3] <br />
-		c -- [page:Vector3]
+			Normalizes the [page:.normal normal] vector, and adjusts the [page:.constant constant]
+			value accordingly.
 		</div>
+
+		<h3>[method:Vector3 orthoPoint]( [page:Vector3 point], [page:Vector3 optionalTarget] )</h3>
 		<div>
-		Defines the plane based on the 3 provided points. The winding order is counter clockwise, and determines which direction the normal will point.
+		[page:Vector3 point] - [page:Vector3] <br />
+		[page:Vector3 optionalTarget] - (optional) if specified, the result will be copied
+		into this [page:Vector3], otherwise a new [page:Vector3] will be created.<br /><br />
+
+		Returns a vector in the same direction as the Plane's normal, but with magnitude
+		equal to the passed point's original distance to the plane.
 		</div>
 
 		<h3>[method:Vector3 projectPoint]( [page:Vector3 point], [page:Vector3 optionalTarget] )</h3>
 		<div>
-		point -- [page:Vector3] <br />
-		optionalTarget -- [page:Vector3]
-		</div>
-		<div>
-		Projects a point onto the plane. The projected point is the closest point on the plane to the passed point, so a line drawn from the projected point and the passed point would be orthogonal to the plane.
+		[page:Vector3 point] - the [page:Vector3] to project onto the plane.<br />
+		[page:Vector3 optionalTarget] - (optional) if specified, the result will be copied into this [page:Vector3],
+		otherwise a new [page:Vector3] will be created.<br /><br />
+
+		Projects a [page:Vector3 point] onto the plane. The projected point is the closest
+		 point on the plane to the passed point, so a line drawn from the projected point
+		 and the passed point would be orthogonal to the plane.
 		</div>
 
-		<h3>[method:Plane negate]() [page:Plane this]</h3>
+		<h3>[method:Plane set]( [page:Vector3 normal], [page:Float constant] )</h3>
 		<div>
-		Negates both the normal vector and constant, effectively mirroring the plane across the origin.
+			[page:Vector3 normal] -  a [page:Vector3] defining the direction of the	plane.<br />
+			[page:Float constant] - (optional) the negative distance from the origin to the plane along
+			 the [page:Vector3 normal] vector. Default is *0*.<br /><br />
+
+			 Sets the plane's [page:.normal normal] and [page:.constant constant] properties.
 		</div>
 
-		<h3>[method:Plane translate]( [page:Vector3 offset] ) [page:Plane this]</h3>
+		<h3>[method:Plane setComponents]( [page:Float x], [page:Float y], [page:Float z], [page:Float w] )</h3>
 		<div>
-		offset -- [page:Vector3]
+		[page:Float x] - x value of the normal vector.<br />
+		[page:Float y] - y value of the normal vector.<br />
+		[page:Float z] - z value of the normal vector.<br />
+		[page:Float w] - the value of the plane's [page:.constant constant] property.<br /><br />
+
+		Set the individual components that make up the plane.
 		</div>
+
+		<h3>[method:Plane setFromCoplanarPoints]( [page:Vector3 a], [page:Vector3 b], [page:Vector3 c] )</h3>
 		<div>
-		Translates the plane the distance defined by the vector. Note that this only affects the constant (distance from origin) and will not affect the normal vector.
+		 [page:Vector3 a] - first point on the plane.<br />
+		 [page:Vector3 a] - second point on the plane.<br />
+		 [page:Vector3 a] - third point on the plane.<br /><br />
+
+		Defines the plane based on the 3 provided points. The winding order is counter
+		clockwise, and determines which direction the [page:.normal normal] will point.
 		</div>
 
-		<h3>[method:Vector3 coplanarPoint]( [page:Vector3 optionalTarget] )</h3>
+		<h3>[method:Plane setFromNormalAndCoplanarPoint]( [page:Vector3 normal], [page:Vector3 point] ) [page:Vector3 this]</h3>
 		<div>
-		optionalTarget -- [page:Vector3]
+		[page:Vector3 normal] - a [page:Vector3] defining the direction of the plane.<br />
+		[page:Vector3 point] - [page:Vector3]<br /><br />
+
+		Sets the plane's properties as defined by a [page:Vector3 normal] and an arbitrary coplanar [page:Vector3 point].
 		</div>
+
+		<h3>[method:Plane translate]( [page:Vector3 offset] )</h3>
 		<div>
-		Returns a coplanar point. (The projection of the normal vector at the origin onto the plane.)
+		[page:Vector3 offset] - the amount to move the plane by.<br /><br />
+
+		Translates the plane the distance defined by the [page:Vector3 offset] vector.
+		Note that this only affects	the constant (distance from origin) and will not affect
+		the normal vector.
 		</div>
 
 		<h2>Source</h2>

+ 174 - 110
docs/api/math/Quaternion.html

@@ -10,12 +10,19 @@
 	<body>
 		<h1>[name]</h1>
 
-		<div class="desc">Implementation of a <a href="http://en.wikipedia.org/wiki/Quaternion">quaternion</a>. This is used for rotating things without encountering the dreaded <a href="http://en.wikipedia.org/wiki/Gimbal_lock">gimbal lock</a> issue, amongst other advantages.</div>
+		<div class="desc">
+			Implementation of a [link:http://en.wikipedia.org/wiki/Quaternion quaternion].
+			This is used for [link:https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation rotating things]
+			without encountering the dreaded
+			[link:http://en.wikipedia.org/wiki/Gimbal_lock gimbal lock] issue, amongst other
+			advantages.
+		</div>
 
 
 		<h2>Example</h2>
 
-		<code>var quaternion = new THREE.Quaternion();
+		<code>
+		var quaternion = new THREE.Quaternion();
 		quaternion.setFromAxisAngle( new THREE.Vector3( 0, 1, 0 ), Math.PI / 2 );
 
 		var vector = new THREE.Vector3( 1, 0, 0 );
@@ -28,190 +35,247 @@
 
 		<h3>[name]( [page:Float x], [page:Float y], [page:Float z], [page:Float w] )</h3>
 		<div>
-		x - x coordinate<br />
-		y - y coordinate<br />
-		z - z coordinate<br />
-		w - w coordinate
+		[page:Float x] - x coordinate<br />
+		[page:Float y] - y coordinate<br />
+		[page:Float z] - z coordinate<br />
+		[page:Float w] - w coordinate
 		</div>
 
 
 		<h2>Properties</h2>
 
 		<h3>[property:Float x]</h3>
+		<div>Changing this property will result in [page:.onChangeCallback onChangeCallback] being called.</div>
 
 		<h3>[property:Float y]</h3>
+		<div>Changing this property will result in [page:.onChangeCallback onChangeCallback] being called.</div>
 
 		<h3>[property:Float z]</h3>
+		<div>Changing this property will result in [page:.onChangeCallback onChangeCallback] being called.</div>
 
 		<h3>[property:Float w]</h3>
+		<div>Changing this property will result in [page:.onChangeCallback onChangeCallback] being called.</div>
 
 
 		<h2>Methods</h2>
 
-		<h3>[method:Quaternion set]( [page:Float x], [page:Float y], [page:Float z], [page:Float w] ) [page:Quaternion this]</h3>
+		<h3>[method:Quaternion clone]()</h3>
 		<div>
-		Sets values of this quaternion.
+			Creates a new Quaternion with identical [page:.x x], [page:.y y],
+			[page:.z z] and [page:.w w] properties to this one.
 		</div>
 
-		<h3>[method:Quaternion copy]( [page:Quaternion q] ) [page:Quaternion this]</h3>
-		<div>
-		Copies values of *q* to this quaternion.
-		</div>
 
-		<h3>[method:Quaternion fromArray]( [page:Array array], [page:Integer offset] ) [page:Quaternion this]</h3>
-		<div>
-		array -- Array of format (x, y, z, w) used to construct the quaternion.<br />
-		offset -- An optional offset into the array.
-		</div>
+		<h3>[method:Quaternion conjugate]()</h3>
 		<div>
-		Sets this quaternion's component values from an array.
+		Returns the rotational conjugate of this quaternion. The conjugate of a quaternion
+		represents the same rotation in the opposite direction about the rotational axis.
 		</div>
 
-		<h3>[method:Quaternion setFromEuler]( [page:Euler euler] ) [page:Quaternion this]</h3>
+		<h3>[method:Quaternion copy]( [page:Quaternion q] )</h3>
 		<div>
-		Sets this quaternion from rotation specified by Euler angle.
+			Copies the [page:.x x], [page:.y y],	[page:.z z] and [page:.w w] properties
+			of [page:Quaternion q] into this quaternion.
 		</div>
 
-		<h3>[method:Quaternion setFromAxisAngle]( [page:Vector3 axis], [page:Float angle] ) [page:Quaternion this]</h3>
+		<h3>[method:Boolean equals]( [page:Quaternion v] )</h3>
 		<div>
-		Sets this quaternion from rotation specified by axis and angle.<br />
-		Adapted from [link:http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm].<br />
-		*Axis* is asumed to be normalized, *angle* is in radians.
-		</div>
+		[page:Quaternion v] - Quaternion that this quaternion will be compared to.<br /><br />
 
-		<h3>[method:Quaternion setFromRotationMatrix]( [page:Matrix4 m] ) [page:Quaternion this]</h3>
-		<div>
-		Sets this quaternion from rotation component of *m*.<br />
-		Adapted from [link:http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm].
+		Compares the [page:.x x], [page:.y y],	[page:.z z] and [page:.w w] properties of
+		[page:Quaternion v] to the equivalent properties of this quaternion to determine if they
+		represent the same rotation.
 		</div>
 
-		<h3>[method:Quaternion setFromUnitVectors]( [page:Vector3 vFrom], [page:Vector3 vTo] ) [page:Quaternion this]</h3>
+		<h3>[method:Float dot]( [page:Quaternion v] )</h3>
 		<div>
-		Sets this quaternion to the rotation required to rotate direction vector *vFrom* to direction vector *vTo*.<br />
-		Adapted from [link:http://lolengine.net/blog/2013/09/18/beautiful-maths-quaternion-from-vectors].<br />
-		*vFrom* and *vTo* are assumed to be normalized.
+			Calculate the [link:https://en.wikipedia.org/wiki/Dot_product dot product] of
+			quaternions [page:Quaternion v] and this one.
 		</div>
 
-		<h3>[method:Quaternion inverse]() [page:Quaternion this]</h3>
+		<h3>[method:Quaternion fromArray]( [page:Array array], [page:Integer offset] )</h3>
 		<div>
-		Inverts this quaternion.
-		</div>
+		[page:Array array] - array of format (x, y, z, w) used to construct the quaternion.<br />
+		[page:Integer offset] - (optional) an offset into the array.<br /><br />
 
-		<h3>[method:Float length]() [page:Quaternion this]</h3>
-		<div>
-		Computes length of this quaternion.
+		Sets this quaternion's [page:.x x], [page:.y y],	[page:.z z] and [page:.w w] properties
+		from an array.
 		</div>
 
-		<h3>[method:Quaternion normalize]() [page:Quaternion this]</h3>
+		<h3>[method:Quaternion inverse]()</h3>
 		<div>
-		Normalizes this quaternion.
+			Inverts this quaternion - calculate the [page:.conjugate conjugate] and then
+			[page:.normalize normalizes] the result.
 		</div>
 
-		<h3>[method:Quaternion multiply]( [page:Quaternion q] ) [page:Quaternion this]</h3>
-		<div>
-		Multiplies this quaternion by *q*.
-		</div>
+		<h3>[method:Float length]()</h3>
+		<div>Computes the [link:https://en.wikipedia.org/wiki/Euclidean_distance Euclidean length]
+		(straight-line length) of this quaternion, considered as a 4 dimensional vector.</div>
 
-		<h3>[method:Quaternion premultiply]( [page:Quaternion q] ) [page:Quaternion this]</h3>
+		<h3>[method:Float lengthSq]()</h3>
 		<div>
-		Pre-multiplies this quaternion by *q*.
+			Computes the [link:https://en.wikipedia.org/wiki/Euclidean_distance Euclidean length]
+			(straight-line length) of this quaternion, considered as a 4 dimensional
+			vector. This can be useful if you are comparing the lengths of two quaternions,
+			as this is a slightly more efficient calculation than [page:.length length]().
 		</div>
 
-		<h3>[method:Quaternion multiplyQuaternions]( [page:Quaternion a], [page:Quaternion b] ) [page:Quaternion this]</h3>
+		<h3>[method:Quaternion normalize]()</h3>
 		<div>
-		Sets this quaternion to *a x b*<br />
-		Adapted from [link:http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm].
+			[link:https://en.wikipedia.org/wiki/Normalized_vector Normalizes] this quaternion - that is,
+		calculated the quaternion that performs the same rotation as this one, but has  [page:.length length]
+		equal to *1*.
 		</div>
 
-		<h3>[method:Quaternion multiplyVector3]( [page:Vector3 vector], [page:Vector3 dest] ) [page:Quaternion this]</h3>
-		<div>
-		Rotates *vector* by this quaternion into *dest*.<br />
-		If *dest* is not specified, result goes to *vec*.
-		</div>
+		<h3>[method:Quaternion multiply]( [page:Quaternion q] )</h3>
+		<div>Multiplies this quaternion by [page:Quaternion q].</div>
 
-		<h3>[method:Float lengthSq]() [page:Quaternion this]</h3>
+		<h3>[method:Quaternion multiplyQuaternions]( [page:Quaternion a], [page:Quaternion b] )</h3>
 		<div>
-		Calculates the squared length of the quaternion.
+		Sets this quaternion to [page:Quaternion a] x [page:Quaternion b].<br />
+		Adapted from the method outlined [link:http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm here].
 		</div>
 
-		<h3>[method:Quaternion conjugate]() [page:Quaternion this]</h3>
-		<div>
-		Returns the rotational conjugate of this quaternion. The conjugate of a quaternion
-		represents the same rotation in the opposite direction about the rotational axis.
-		</div>
+		<h3>[method:Quaternion onChange]( [page:Function onChangeCallback] )</h3>
+		<div>Set the [page:.onChangeCallback onChangeCallback]() method.</div>
 
-		<h3>[method:Quaternion slerp]( [page:Quaternion quaternionB], [page:float t] ) [page:Quaternion this]</h3>
+		<h3>[method:Quaternion onChangeCallback]( )</h3>
 		<div>
-		quaternionB -- The other quaternion rotation<br />
-		t -- Normalized 0 to 1 interpolation factor
+			This function is called whenever and of the following occur:
+			<ul>
+				<li>
+					The [page:.x x], [page:.y y], [page:.z z] or
+				  [page:.w w] properties are changed.
+				</li>
+				<li>
+					The [page:.set set](), [page:.copy copy](), [page:.clone clone](),
+					[page:.setFromAxisAngle setFromAxisAngle](),  [page:.setFromRotationMatrix setFromRotationMatrix](),
+					[page:.conjugate conjugate](), [page:.normalize normalize](),
+					[page:.multiplyQuaternions multiplyQuaternions](), [page:.slerp slerp]() or [page:.fromArray fromArray]()
+					functions are called.
+				</li>
+				<li>
+					[page:.setFromEuler setFromEuler]() function is called with its *update* argument set to true.
+				</li>
+			</ul>
+			By default it is the empty function, however you can change it if needed using [page:.onChange onChange]( [page:Function onChangeCallback] ).
 		</div>
-		<div>
-		Handles the spherical linear interpolation between quaternions. *t* represents the amount of rotation
-		between this quaternion (where *t* is 0) and quaternionB (where *t* is 1). This quaternion is set to
-		the result. Also see the static version of the *slerp* below.
-		</div>
-		<code>
-		// rotate a mesh towards a target quaternion
-		mesh.quaternion.slerp( endQuaternion, 0.01 );
-		</code>
 
-		<h3>[method:Boolean equals]( [page:Quaternion v] ) [page:Quaternion this]</h3>
+
+		<h3>[method:Quaternion premultiply]( [page:Quaternion q] )</h3>
+		<div>Pre-multiplies this quaternion by [page:Quaternion q].</div>
+
+		<h3>[method:Quaternion slerp]( [page:Quaternion qb], [page:float t] )</h3>
 		<div>
-		v -- Quaternion that this quaternion will be compared to.
+			[page:Quaternion qb] - The other quaternion rotation<br />
+			[page:float t] - interpolation factor in the closed interval [0, 1].<br /><br />
+
+			Handles the spherical linear interpolation between quaternions. [page:float t] represents the
+			amount of rotation between this quaternion (where [page:float t] is 0) and [page:Quaternion qb] (where
+			[page:float t] is 1). This quaternion is set to the result. Also see the static version of the
+			*slerp* below.
+
+			<code>
+			// rotate a mesh towards a target quaternion
+			mesh.quaternion.slerp( endQuaternion, 0.01 );
+			</code>
 		</div>
+
+		<h3>[method:Quaternion set]( [page:Float x], [page:Float y], [page:Float z], [page:Float w] )</h3>
+		<div>Sets [page:.x x], [page:.y y], [page:.z z], [page:.w w] properties of this quaternion.</div>
+
+		<h3>[method:Quaternion setFromAxisAngle]( [page:Vector3 axis], [page:Float angle] )</h3>
 		<div>
-		Compares each component of *v* to each component of this quaternion to determine if they
-		represent the same rotation.
+		Sets this quaternion from rotation specified by [page:Vector3 axis] and [page:Float angle].<br />
+		Adapted from the method [link:http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm here].<br />
+		*Axis* is asumed to be normalized, *angle* is in radians.
 		</div>
 
-		<h3>[method:Quaternion clone]() [page:Quaternion this]</h3>
+		<h3>[method:Quaternion setFromEuler]( [page:Euler euler] )</h3>
+		<div>Sets this quaternion from the rotation specified by [page:Euler] angle.</div>
+
+		<h3>[method:Quaternion setFromRotationMatrix]( [page:Matrix4 m] )</h3>
 		<div>
-		Clones this quaternion.
+		Sets this quaternion from rotation component of [page:Matrix4 m].<br />
+		Adapted from the method [link:http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm here].
 		</div>
 
-		<h3>[method:Array toArray]( [page:Array array], [page:Integer offset] ) [page:Quaternion this]</h3>
+		<h3>[method:Quaternion setFromUnitVectors]( [page:Vector3 vFrom], [page:Vector3 vTo] )</h3>
 		<div>
-		array -- An optional array to store the quaternion.<br/>
-		offset -- An optional offset into the output array.
+		Sets this quaternion to the rotation required to rotate direction vector [page:Vector3 vFrom] to
+		direction vector [page:Vector3 vTo].<br />
+		Adapted from the method [link:http://lolengine.net/blog/2013/09/18/beautiful-maths-quaternion-from-vectors here].<br />
+		[page:Vector3 vFrom] and [page:Vector3 vTo] are assumed to be normalized.
 		</div>
+
+		<h3>[method:Array toArray]( [page:Array array], [page:Integer offset] )</h3>
 		<div>
-		Returns the numerical elements of this quaternion in an array of format (x, y, z, w).
+		[page:Array array] - An optional array to store the quaternion. If not specified a new array will be created.<br/>
+		[page:Integer offset] - optional) if specified, the result will be copied
+		into this [page:Array].<br /><br />
+
+		Returns the numerical elements of this quaternion in an array of format [x, y, z, w].
 		</div>
 
 		<h2>Static Methods</h2>
 
-		<h3>[method:Quaternion slerp]( [page:Quaternion qStart], [page:Quaternion qEnd], [page:Quaternion qTarget], [page:Float t] )</h3>
 		<div>
-		qStart -- The starting quaternion (where *t* is 0)<br />
-		qEnd -- The ending quaternion (where *t* is 1)<br />
-		qTarget -- The target quaternion that gets set with the result<br />
-		t -- Normalized 0 to 1 interpolation factor
+			Static methods (as opposed to instance methods) are designed to be called directly from the class,
+			rather than from a specific instance. So to use the static version of, call it like so:
+			<code>
+THREE.Quaternion.slerp( qStart, qEnd, qTarget, t );
+			</code>
+			By contrast, to call the 'normal' or instanced slerp method, you would do the following:
+			<code>
+//instantiate a quaternion with default values
+var q = new THREE.Quaternion();
+
+//call the instanced slerp method
+q.slerp( qb, t )
+			</code>
+
 		</div>
+
+		<h3>[method:Quaternion slerp]( [page:Quaternion qStart], [page:Quaternion qEnd], [page:Quaternion qTarget], [page:Float t] )</h3>
 		<div>
-		Unlike the normal method, the static version of slerp sets a target quaternion to the result of the slerp operation.
+			[page:Quaternion qStart] - The starting quaternion (where [page:Float t] is 0)<br />
+			[page:Quaternion qEnd] - The ending quaternion (where [page:Float t] is 1)<br />
+			[page:Quaternion qTarget] - The target quaternion that gets set with the result<br />
+			[page:float t] - interpolation factor in the closed interval [0, 1].<br /><br />
+
+			Unlike the normal method, the static version of slerp sets a target quaternion to the result of the slerp operation.
+			<code>
+			// Code setup
+			var startQuaternion = new THREE.Quaternion().set( 0, 0, 0, 1 ).normalize();
+			var endQuaternion = new THREE.Quaternion().set( 1, 1, 1, 1 ).normalize();
+			var t = 0;
+
+			// Update a mesh's rotation in the loop
+			t = ( t + 0.01 ) % 1; // constant angular momentum
+			THREE.Quaternion.slerp( startQuaternion, endQuaternion, mesh.quaternion, t );
+			</code>
 		</div>
-		<code>
-		// Code setup
-		var startQuaternion = new THREE.Quaternion().set( 0, 0, 0, 1 ).normalize();
-		var endQuaternion = new THREE.Quaternion().set( 1, 1, 1, 1 ).normalize();
-		var t = 0;
-		</code>
-		<code>
-		// Update a mesh's rotation in the loop
-		t = ( t + 0.01 ) % 1; // constant angular momentum
-		THREE.Quaternion.slerp( startQuaternion, endQuaternion, mesh.quaternion, t );
-		</code>
 
-		<h3>[method:null slerpFlat]( [page:Array dst], [page:Integer dstOffset], [page:Array src0], [page:Integer srcOffset0], [page:Array src1], [page:Integer srcOffset1], [page:Float t] )</h3>
+
+		<h3>
+		[method:null slerpFlat](
+			[page:Array dst],
+			[page:Integer dstOffset],
+			[page:Array src0],
+			[page:Integer srcOffset0],
+			[page:Array src1],
+			[page:Integer srcOffset1],
+			[page:Float t]
+		)
+		</h3>
 		<div>
-		dst -- The output array.<br />
-		dstOffset -- An offset into the output array.<br />
-		src0 -- The source array of the starting quaternion.<br />
-		srcOffset0 -- An offset into the array *src0*.<br />
-		src1 -- The source array of the target quatnerion.<br />
-		srcOffset1 -- An offset into the array *src1*.<br />
-		t -- Interpolation factor 0 at start, 1 at end.
-		</div>
+		[page:Array dst] - The output array.<br />
+		[page:Integer dstOffset] - An offset into the output array.<br />
+		[page:Array src0] - The source array of the starting quaternion.<br />
+		[page:Integer srcOffset0] - An offset into the array *src0*.<br />
+		[page:Array src1] - The source array of the target quatnerion.<br />
+		[page:Integer srcOffset1] - An offset into the array *src1*.<br />
+		[page:float t] - Normalized interpolation factor (between 0 and 1).<br /><br />
 		<div>
 		Like the static *slerp* method above, but operates directly on flat arrays of numbers.
 		</div>

+ 107 - 101
docs/api/math/Ray.html

@@ -10,7 +10,12 @@
 	<body>
 		<h1>[name]</h1>
 
-		<div class="desc">A ray that emits from an origin in a certain direction.</div>
+		<div class="desc">
+			A ray that emits from an origin in a certain direction. This is used by the
+			[page:RayCaster] to assist with [link:https://en.wikipedia.org/wiki/Ray_casting raycasting].
+			Raycasting is used for mouse picking (working out what objects in the 3D space the mouse is over) amongst
+			other things.
+		</div>
 
 
 		<h2>Constructor</h2>
@@ -18,195 +23,196 @@
 
 		<h3>[name]( [page:Vector3 origin], [page:Vector3 direction] )</h3>
 		<div>
-		origin -- [page:Vector3] The origin of the [page:Ray].<br />
-		direction -- [page:Vector3] The direction of the [page:Ray]. This must be normalized (with [page:Vector3].normalize) for the methods to operate properly.
-		</div>
-		<div>
-		Initialises the origin and direction properties to the provided values.
+		[page:Vector3 origin] - (optional) the origin of the [page:Ray]. Default is a [page:Vector3] at (0, 0, 0).<br />
+		[page:Vector3 direction] - [page:Vector3] The direction of the [page:Ray]. This must be normalized
+		 (with [page:Vector3.normalize]) for the methods to operate properly.  Default is a [page:Vector3] at (0, 0, 0).<br /><br />
+
+		Creates a new [name].
 		</div>
 
 		<h2>Properties</h2>
 
 		<h3>[property:Vector3 origin]</h3>
-		<div>
-		The origin of the [page:Ray].
-		</div>
+		<div>The origin of the [page:Ray]. Default is a [page:Vector3] at (0, 0, 0).</div>
 
 		<h3>[property:Vector3 direction]</h3>
 		<div>
-		The direction of the [page:Ray]. This must be normalized (with [page:Vector3].normalize) for the methods to operate properly.
+		The direction of the [page:Ray]. This must be normalized (with [page:Vector3.normalize])
+		for the methods to operate properly. Default is a [page:Vector3] at (0, 0, 0).
 		</div>
 
+
+
+
 		<h2>Methods</h2>
 
 		<h3>[method:Ray applyMatrix4]( [page:Matrix4 matrix4] )</h3>
 		<div>
-		matrix4 -- [page:Matrix4] The [page:Matrix4] to transform this [page:Ray] by.
-		</div>
-		<div>
+		[page:Matrix4 matrix4] - the [page:Matrix4] to apply to this [page:Ray].<br /><br />
+
 		Transform this [page:Ray] by the [page:Matrix4].
 		</div>
 
-		<h3>[method:Vector3 at]( [page:Float t], [page:Vector3 optionalTarget] = null ) [page:Vector3]</h3>
-		<div>
-		t -- [page:Float] The distance along the [page:Ray] to retrieve a position for.<br />
-		optionalTarget -- [page:Vector3] Receives the position along the [page:Ray] if passed; otherwise a new [page:Vector3] is created.
-		</div>
+		<h3>[method:Vector3 at]( [page:Float t], [page:Vector3 optionalTarget] ) </h3>
 		<div>
+		[page:Float t] - the distance along the [page:Ray] to retrieve a position for.<br />
+		[page:Vector3 optionalTarget] - (optional) if specified, the result will be copied into this [page:Vector3],
+		otherwise a new [page:Vector3] will be created.<br /><br />
+
 		Get a [page:Vector3] that is a given distance along this [page:Ray].
 		</div>
 
 		<h3>[method:Ray clone]()</h3>
 		<div>
-		Create a clone of this [page:Ray].
+			Creates a new Ray with identical [page:.origin origin] and [page:.direction direction]  to this one.
 		</div>
 
 		<h3>[method:Vector3 closestPointToPoint]( [page:Vector3 point], [page:Vector3 optionalTarget] )</h3>
 		<div>
-		point -- [page:Vector3] The point to get the closest approach to. <br />
-		optionalTarget -- [page:Vector3] Receives the return value if passed; otherwise a new [page:Vector3] is created.
-		</div>
-		<div>
+		[page:Vector3 point] - the point to get the closest approach to. <br />
+		[page:Vector3 optionalTarget] - (optional) if specified, the result will be copied into this [page:Vector3],
+		otherwise a new [page:Vector3] will be created.<br /><br />
+
 		Get the point along this [page:Ray] that is closest to the [page:Vector3] provided.
 		</div>
 
 		<h3>[method:Ray copy]( [page:Ray ray] )</h3>
 		<div>
-		ray -- [page:Ray] The [page:Ray] to copy values from.
-		</div>
-		<div>
-		Copy the properties of the provided [page:Ray], then return this [page:Ray].
+			Copies the [page:.origin origin] and [page:.direction direction] properties
+			of [page:Ray ray] into this ray.
 		</div>
 
-		<h3>[method:Float distanceSqToSegment]( [page:Vector3 v0], [page:Vector3 v1], [page:Vector3 optionalPointOnRay] = null, [page:Vector3 optionalPointOnSegment] = null ) [page:Float]</h3>
+		<h3>[method:Float distanceSqToPoint]( [page:Vector3 point] )</h3>
 		<div>
-		v0 -- [page:Vector3] The start of the line segment.
-		v1 -- [page:Vector3] The end of the line segment.
-		optionalPointOnRay -- [page:Vector3] If this is provided, it receives the point on this [page:Ray] that is closest to the segment.
-		optionalPointOnSegment -- [page:Vector3] If this is provided, it receives the point on the line segment that is closest to this [page:Ray].
+		[page:Vector3 point] - the [page:Vector3] to compute a distance to.<br /><br />
+
+		Get the squared distance of the closest approach between the [page:Ray] and the [page:Vector3].
 		</div>
+
+		<h3>[method:Float distanceSqToSegment]( [page:Vector3 v0], [page:Vector3 v1], [page:Vector3 optionalPointOnRay], [page:Vector3 optionalPointOnSegment] )</h3>
 		<div>
+		[page:Vector3 v0] - the start of the line segment.<br />
+		[page:Vector3 v1] - the end of the line segment.<br />
+		optionalPointOnRay - (optional) if this is provided, it receives the point on this
+			[page:Ray] that is closest to the segment.<br />
+		optionalPointOnSegment - (optional) if this is provided, it receives the point
+			on the line segment that is closest to this [page:Ray].<br /><br />
+
 		Get the squared distance between this [page:Ray] and a line segment.
 		</div>
 
 		<h3>[method:Float distanceToPlane]( [page:Plane plane] )</h3>
 		<div>
-		plane -- [page:Plane] The [page:Plane] to get the distance to.
-		</div>
-		<div>
-		Get the distance from the origin to the [page:Plane], or *null* if the [page:Ray] doesn't intersect the [page:Plane].
+		[page:Plane plane] - the [page:Plane] to get the distance to.<br /><br />
+
+		Get the distance from [page:.origin origin] to the [page:Plane], or *null* if the [page:Ray] doesn't intersect the [page:Plane].
 		</div>
 
 		<h3>[method:Float distanceToPoint]( [page:Vector3 point] )</h3>
 		<div>
-		point -- [page:Vector3] The [page:Vector3] to compute a distance to.
-		</div>
-		<div>
-		Get the distance of the closest approach between the [page:Ray] and the [page:Vector3].
-		</div>
+		[page:Vector3 point] - [page:Vector3] The [page:Vector3] to compute a distance to.<br /><br />
 
-		<h3>[method:Float distanceSqToPoint]( [page:Vector3 point] )</h3>
-		<div>
-		point -- [page:Vector3] The [page:Vector3] to compute a distance to.
-		</div>
-		<div>
-		Get the squared distance of the closest approach between the [page:Ray] and the [page:Vector3].
+		Get the distance of the closest approach between the [page:Ray] and the [page:Vector3 point].
 		</div>
 
+
 		<h3>[method:Boolean equals]( [page:Ray ray] )</h3>
 		<div>
-		ray -- [page:Ray] The [page:Ray] to compare to.
-		</div>
-		<div>
-		Return whether this and the other [page:Ray] have equal offsets and directions.
-		</div>
+		[page:Ray ray] - the [page:Ray] to compare to.<br /><br />
 
-		<h3>[method:Vector3 intersectBox]( [page:Box3 box], [page:Vector3 optionalTarget] = null ) [page:Vector3]</h3>
-		<div>
-		box  -- [page:Box3] The [page:Box3] to intersect with.<br />
-		optionalTarget -- [page:Vector3] The [page:Vector3] to store the result in, or *null* to create a new [page:Vector3].
-		</div>
-		<div>
-		Intersect this [page:Ray] with a [page:Box3], returning the intersection point or *null* if there is no intersection.
+		Returns true if this and the other [page:Ray ray] have equal [page:.offset offset]
+		 and [page:.direction direction].
 		</div>
 
-		<h3>[method:Vector3 intersectPlane]( [page:Plane plane], [page:Vector3 optionalTarget] = null ) [page:Vector3]</h3>
+		<h3>[method:Vector3 intersectBox]( [page:Box3 box], [page:Vector3 optionalTarget] )</h3>
 		<div>
-		plane -- [page:Plane] The [page:Plane] to intersect with.<br />
-		optionalTarget -- [page:Vector3] The [page:Vector3] to store the result in, or *null* to create a new [page:Vector3].
-		</div>
-		<div>
-		Intersect this [page:Ray] with a [page:Plane], returning the intersection point or *null* if there is no intersection.
-		</div>
+		[page:Box3 box] - the [page:Box3] to intersect with.<br />
+		[page:Vector3 optionalTarget] - (optional) if specified, the result will be copied into this [page:Vector3],
+		otherwise a new [page:Vector3] will be created.<br /><br />
 
-		<h3>[method:Vector3 intersectSphere]( [page:Sphere sphere], [page:Vector3 optionalTarget] = null ) [page:Vector3]</h3>
-		<div>
-		sphere -- [page:Sphere] The [page:Sphere] to intersect with.<br />
-		optionalTarget -- [page:Vector3] The [page:Vector3] to store the result in, or *null* to create a new [page:Vector3].
+		Intersect this [page:Ray] with a [page:Box3], returning the intersection point or
+		*null* if there is no intersection.
 		</div>
+
+		<h3>[method:Vector3 intersectPlane]( [page:Plane plane], [page:Vector3 optionalTarget] )</h3>
 		<div>
-		Intersect this [page:Ray] with a [page:Sphere], returning the intersection point or *null* if there is no intersection.
+		[page:Plane plane] - the [page:Plane] to intersect with.<br />
+		[page:Vector3 optionalTarget] - (optional) if specified, the result will be copied into this [page:Vector3],
+		otherwise a new [page:Vector3] will be created.<br /><br />
+
+		Intersect this [page:Ray] with a [page:Plane], returning the intersection point or
+		*null* if there is no intersection.
 		</div>
 
-		<h3>[method:Vector3 intersectTriangle]( [page:Vector3 a], [page:Vector3 b], [page:Vector3 c], [page:Boolean backfaceCulling], [page:Vector3 optionalTarget] = null ) [page:Vector3]</h3>
+		<h3>[method:Vector3 intersectSphere]( [page:Sphere sphere], [page:Vector3 optionalTarget] )</h3>
 		<div>
-		a, b, c -- [page:Vector3] The [page:Vector3] points on the triangle.<br />
-		backfaceCulling -- [page:Boolean] Whether to use backface culling.<br />
-		optionalTarget -- [page:Vector3] The [page:Vector3] to store the result in, or *null* to create a new [page:Vector3].
+		[page:Sphere sphere] - the [page:Sphere] to intersect with.<br />
+		[page:Vector3 optionalTarget] - (optional) if specified, the result will be copied into this [page:Vector3],
+		otherwise a new [page:Vector3] will be created.<br /><br />
+
+		Intersect this [page:Ray] with a [page:Sphere], returning the intersection point or
+		*null* if there is no intersection.
 		</div>
+
+		<h3>[method:Vector3 intersectTriangle]( [page:Vector3 a], [page:Vector3 b], [page:Vector3 c], [page:Boolean backfaceCulling], [page:Vector3 optionalTarget] )</h3>
 		<div>
-		Intersect this [page:Ray] with a triangle, returning the intersection point or *null* if there is no intersection.
+		[page:Vector3 a], [page:Vector3 b], [page:Vector3 c] - The [page:Vector3] points making up the triangle.<br />
+		[page:Boolean backfaceCulling] - whether to use backface culling.<br />
+		[page:Vector3 optionalTarget] - (optional) if specified, the result will be copied into this [page:Vector3],
+		otherwise a new [page:Vector3] will be created.<br /><br />
+
+		Intersect this [page:Ray] with a triangle, returning the intersection point or *null*
+		if there is no intersection.
 		</div>
 
 		<h3>[method:Boolean intersectsBox]( [page:Box3 box] )</h3>
 		<div>
-		box -- [page:Box3] The [page:Box3] to intersect with.
-		</div>
-		<div>
-		Return whether or not this [page:Ray] intersects with the [page:Box3].
+		[page:Box3 box] - the [page:Box3] to intersect with.<br /><br />
+
+		Return true if this [page:Ray] intersects with the [page:Box3].
 		</div>
 
 		<h3>[method:Boolean intersectsPlane]( [page:Plane plane] )</h3>
 		<div>
-		plane -- [page:Plane] The [page:Plane] to intersect with.
-		</div>
-		<div>
-		Return whether or not this [page:Ray] intersects with the [page:Plane].
+		[page:Plane plane] - the [page:Plane] to intersect with.<br /><br />
+
+		Return true if this [page:Ray] intersects with the [page:Plane].
 		</div>
 
 		<h3>[method:Boolean intersectsSphere]( [page:Sphere sphere] )</h3>
 		<div>
-		sphere -- [page:Sphere] The [page:Sphere] to intersect with.
+		[page:Sphere sphere] - the [page:Sphere] to intersect with.<br /><br />
+
+		Return true if this [page:Ray] intersects with the [page:Sphere].
 		</div>
+
+		<h3>[method:Ray lookAt]( [page:Vector3 v] )</h3>
 		<div>
-		Return whether or not this [page:Ray] intersects with the [page:Sphere].
+		[page:Vector3 v] - The [page:Vector3] to look at.<br /><br />
+
+		Adjusts the direction of the ray to point at the vector in world coordinates.
 		</div>
 
 		<h3>[method:Ray recast]( [page:Float t] )</h3>
 		<div>
-		t -- The distance along the [page:Ray] to interpolate.
-		</div>
-		<div>
+		[page:Float t] - The distance along the [page:Ray] to interpolate.<br /><br />
+
 		Shift the origin of this [page:Ray] along its direction by the distance given.
 		</div>
 
 		<h3>[method:Ray set]( [page:Vector3 origin], [page:Vector3 direction] )</h3>
 		<div>
-		origin -- [page:Vector3] The origin of the [page:Ray].<br />
-		direction -- [page:Vector3] The direction of the [page:Ray]. This must be normalized (with [page:Vector3].normalize) for the methods to operate properly.
-		</div>
-		<div>
-		Copy the parameters to the origin and direction properties.
-		</div>
+		[page:Vector3 origin] - the [page:.origin origin] of the [page:Ray].<br />
+		[page:Vector3 origin] - the [page:.direction direction] of the [page:Ray].
+		This must be normalized (with [page:Vector3.normalize]) for the methods to operate
+		properly.<br /><br />
 
-		<h3>[method:Ray lookAt]( [page:Vector3 v] )</h3>
-		<div>
-		v -- [page:Vector3] The vector to look at.
-		</div>
-		<div>
-		Adjusts the direction of the ray to point at the vector in world coordinates.
+		Copy the parameters to the [page:.origin origin] and [page:.direction direction] properties
+		of this ray.
 		</div>
 
+
+
 		<h2>Source</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

+ 61 - 81
docs/api/math/Sphere.html

@@ -10,16 +10,16 @@
 	<body>
 		<h1>[name]</h1>
 
-		<div class="desc">A geometric sphere defined by a center position and radius.</div>
-
+		<div class="desc">A sphere defined by a center and radius.</div>
 
 		<h2>Constructor</h2>
-
-
 		<h3>[name]( [page:Vector3 center], [page:Float radius] )</h3>
 		<div>
-		center -- [page:Vector3] <br />
-		radius -- [page:Float]
+		[page:Vector3 center] - center of the sphere. Default is a [page:Vector3] at (0, 0, 0). <br />
+		[page:Float radius] - radius of the sphere. Default is 0.<br /><br />
+
+		Creates a new [name].
+
 		</div>
 
 
@@ -27,129 +27,109 @@
 
 
 		<h3>[property:Vector3 center]</h3>
+		<div>A [page:Vector3] defining the center of the sphere. Default is (0, 0, 0).</div>
 
 		<h3>[property:Float radius]</h3>
-
+		<div>The radius of the sphere. Default is 0.</div>
 
 		<h2>Methods</h2>
 
-
-
-		<h3>[method:Sphere set]( [page:Vector3 center], [page:Float radius] ) [page:Sphere this]</h3>
+		<h3>[method:Sphere applyMatrix4]( [page:Matrix4 matrix] )</h3>
 		<div>
-		center -- [page:Vector3] <br />
-		radius -- [page:Float]
-		</div>
-		<div>
-		Sets the center and radius.
-		</div>
+			[page:Matrix4 matrix] - the [Page:Matrix4] to apply <br /><br />
 
-		<h3>[method:Sphere applyMatrix4]( [page:Matrix4 matrix] ) [page:Sphere this]</h3>
-		<div>
-		matrix -- [page:Matrix4]
-		</div>
-		<div>
-		Transforms this sphere with the provided [page:Matrix4].
+			Transforms this sphere with the provided [page:Matrix4].
 		</div>
 
 		<h3>[method:Vector3 clampPoint]( [page:Vector3 point], [page:Vector3 optionalTarget] )</h3>
 		<div>
-		point -- [page:Vector3] The point to clamp <br />
-		optionalTarget -- [page:Vector3] The optional target point to return
-		</div>
-		<div>
-		Clamps a point within the sphere. If the point is is outside the sphere, it will clamp it to the closets point on the edge of the sphere.
-		</div>
+		[page:Vector3 point] - [page:Vector3] The point to clamp.<br />
+		[page:Vector3 optionalTarget] - (optional) if specified, the result will be copied into this [page:Vector3],
+		otherwise a new [page:Vector3] will be created.<br /><br />
 
-		<h3>[method:Sphere translate]( [page:Vector3 offset] ) [page:Sphere this]</h3>
-		<div>
-		offset -- [page:Vector3]
-		</div>
-		<div>
-		Translate the sphere's center by the provided offset vector.
+		Clamps a point within the sphere. If the point is is outside the sphere, it will clamp it to the
+		closets point on the edge of the sphere. Points already inside the sphere will not be affected.
 		</div>
 
 		<h3>[method:Sphere clone]()</h3>
-		<div>
-		Provides a new copy of the sphere.
-		</div>
+		<div>Returns a new sphere with the same [page:.center center] and [page:.radius radius] as this one.</div>
 
-		<h3>[method:Boolean equals]( [page:Sphere sphere] )</h3>
-		<div>
-		sphere -- [page:Sphere]
-		</div>
+		<h3>[method:Boolean containsPoint]( [page:Vector3 point] )</h3>
 		<div>
-		Checks to see if the two spheres' centers and radii are equal.
-		</div>
+		[page:Vector3 point] - the [page:Vector3] to be checked<br /><br />
 
-		<h3>[method:Sphere setFromPoints]( [page:Array points], [page:Vector3 optionalCenter] ) [page:Sphere this]</h3>
-		<div>
-		points -- [page:Array] of [page:Vector3] positions.<br />
-		optionalCenter -- Optional [page:Vector3] position for the sphere's center.<br />
+		Checks to see if the sphere contains the provided [page:Vector3 point] inclusive of the
+		surface of the sphere.
 		</div>
+
+		<h3>[method:Sphere copy]( [page:Sphere sphere] )</h3>
 		<div>
-		Computes the minimum bounding sphere for *points*. If *optionalCenter* is given, it is used as the sphere's center. Otherwise, the center of the axis-aligned bounding box encompassing *points* is calculated.
+		Copies the values of the passed sphere's [page:.center center] and [page:.radius radius]
+		properties to this sphere.
 		</div>
 
 		<h3>[method:Float distanceToPoint]( [page:Vector3 point] )</h3>
 		<div>
-		point -- [page:Vector3]
-		</div>
-		<div>
-		Returns the closest distance from the boundary of the sphere to the point. If the sphere contains the point, the distance will be negative.
+		Returns the closest distance from the boundary of the sphere to the [page:Vector3 point]. If the sphere contains the point,
+		the distance will be negative.
 		</div>
 
-		<h3>[method:Box3 getBoundingBox]( [page:Box optionalTarget] )</h3>
-		<div>
-		optionalTarget -- [page:Box]
-		</div>
-		<div>
-		Returns a bounding box for the sphere, optionally setting a provided box target.
-		</div>
+		<h3>[method:Boolean empty]()</h3>
+		<div>Checks to see if the sphere is empty (the radius set to 0).</div>
 
-		<h3>[method:Boolean containsPoint]( [page:Vector3 point] )</h3>
+		<h3>[method:Boolean equals]( [page:Sphere sphere] )</h3>
 		<div>
-		point -- [page:Vector3]
+		Checks to see if the two spheres' centers and radii are equal.
 		</div>
+
+		<h3>[method:Box3 getBoundingBox]( [page:Box3 optionalTarget] )</h3>
 		<div>
-		Checks to see if the sphere contains the provided point inclusive of the edge of the sphere.
+			[page:Box3 optionalTarget] - (optional) if specified, the result will be copied into this [page:Vector3], otherwise a new [page:Box3] will be created.<br /><br />
+
+			Returns a[link:https://en.wikipedia.org/wiki/Minimum_bounding_box Minimum Bounding Box] for the sphere.
 		</div>
 
-		<h3>[method:Sphere copy]( [page:Sphere sphere] )</h3>
+		<h3>[method:Boolean intersectsBox]( [page:Box3 box] )</h3>
 		<div>
-		sphere -- [page:Sphere] to copy
+		[page:Box3 box] - [page:Box3] to check for intersection against.<br /><br />
+
+		Determines whether or not this sphere intersects a given [page:Box3 box].
 		</div>
+
+		<h3>[method:Boolean intersectsPlane]( [page:Plane plane] )</h3>
 		<div>
-		Copies the values of the passed sphere to this sphere.
+		[page:Plane plane] - Plane to check for intersection against.<br /><br />
+
+		Determines whether or not this sphere intersects a given [page:Plane plane].
 		</div>
 
 		<h3>[method:Boolean intersectsSphere]( [page:Sphere sphere] )</h3>
 		<div>
-		sphere -- [page:Sphere]
-		</div>
-		<div>
+		[page:Sphere sphere] - Sphere to check for intersection against.<br /><br />
+
 		Checks to see if two spheres intersect.
 		</div>
 
-		<h3>[method:Boolean intersectsBox]( [page:Box3 box] ) [page:Sphere this]</h3>
-		<div>
-		box -- Box to check for intersection against.
-		</div>
+		<h3>[method:Sphere set]( [page:Vector3 center], [page:Float radius] )</h3>
 		<div>
-		Determines whether or not this sphere intersects *box*.
-		</div>
+			[page:Vector3 center] - center of the sphere.<br />
+			[page:Float radius] - radius of the sphere.<br /><br />
 
-		<h3>[method:Boolean intersectsPlane]( [page:Plane plane] ) [page:Sphere this]</h3>
-		<div>
-		plane -- Plane to check for intersection against.
+		Sets the [page:.center center] and [page:.radius radius] properties of this sphere.
 		</div>
+
+		<h3>[method:Sphere setFromPoints]( [page:Array points], [page:Vector3 optionalCenter] )</h3>
 		<div>
-		Determines whether or not this sphere intersects *plane*.
+		[page:Array points] - an [page:Array] of [page:Vector3] positions.<br />
+		[page:Vector3 optionalCenter] - Optional [page:Vector3] position for the sphere's center.<br /><br />
+
+		Computes the minimum bounding sphere for an array of [page:Array points]. If  [page:Vector3 optionalCenter]is given,
+		it is used as the sphere's center. Otherwise, the center of the axis-aligned bounding box encompassing
+		[page:Array points] is calculated.
 		</div>
 
-		<h3>[method:Boolean empty]()</h3>
-		<div>
-		Checks to see if the sphere is empty (the radius set to 0).
+		<h3>[method:Sphere translate]( [page:Vector3 offset] )</h3>
+		Translate the sphere's center by the provided offset [page:Vector3].
 		</div>
 
 		<h2>Source</h2>

+ 23 - 18
docs/api/math/Spherical.html

@@ -10,7 +10,7 @@
 	<body>
 		<h1>[name]</h1>
 
-		<div class="desc">A point's spherical coordinates.</div>
+		<div class="desc">A point's [link:https://en.wikipedia.org/wiki/Spherical_coordinate_system spherical coordinates].</div>
 
 
 		<h2>Constructor</h2>
@@ -18,11 +18,11 @@
 
 		<h3>[name]( [page:Float radius], [page:Float phi], [page:Float theta] )</h3>
 		<div>
-		radius -- [page:Float] the radius<br />
-		phi -- [page:Float] polar angle from the y (up) axis<br />
-		theta -- [page:Float] equator angle around the y (up) axis
-		</div>
-		<div>
+		[page:Float radius] - the radius, or the [link:https://en.wikipedia.org/wiki/Euclidean_distance Euclidean distance]
+		(straight-line distance) from the point to the origin. Default is *1.0*.<br />
+		[page:Float phi] - polar angle from the y (up) axis. Default is *0*.<br />
+		[page:Float theta] - equator angle around the y (up) axis. Default is *0*.<br /><br />
+
 		The poles (phi) are at the positive and negative y axis. The equator (theta) starts at positive z.
 		</div>
 
@@ -38,29 +38,34 @@
 
 		<h2>Methods</h2>
 
-		<h3>[method:Spherical set]( [page:Float radius], [page:Float phi], [page:Float theta] ) [page:Spherical this]</h3>
+		<h3>[method:Spherical clone]()</h3>
 		<div>
-		Sets values of this spherical's component coordinates.
+		Returns a new plane with the same [page:.radius radius], [page:.phi phi]
+		and [page:.theta theta] properties as this one.
 		</div>
 
-		<h3>[method:Spherical copy]( [page:Spherical s] ) [page:Spherical this]</h3>
+		<h3>[method:Spherical copy]( [page:Spherical s] )</h3>
 		<div>
-		Copies value of *s* to this spherical.
+			Copies the values of the passed Spherical's [page:.radius radius], [page:.phi phi]
+			and [page:.theta theta] properties to this spherical.
 		</div>
 
-		<h3>[method:Spherical clone]() [page:Spherical this]</h3>
+		<h3>[method:Spherical makeSafe]()</h3>
 		<div>
-		Clones this spherical.
+		Restricts the polar angle page:.phi phi] to be between 0.000001 and pi - 0.000001.
 		</div>
 
-		<h3>[method:Spherical makeSafe]() [page:Spherical this]</h3>
-		<div>
-		Restricts the polar angle phi to be between 0.000001 and pi - 0.000001.
-		</div>
+		<h3>[method:Spherical set]( [page:Float radius], [page:Float phi], [page:Float theta] )</h3>
+		<div>Sets values of this spherical's [page:.radius radius], [page:.phi phi]
+		and [page:.theta theta] properties.</div>
 
-		<h3>[method:Spherical setFromVector3]( [page:Vector3 v] ) [page:Spherical this]</h3>
+		<h3>[method:Spherical setFromVector3]( [page:Vector3 vec3] )</h3>
 		<div>
-		Sets this object from the vector *v*.
+			Sets values of this spherical's [page:.radius radius], [page:.phi phi]
+			and [page:.theta theta] properties from the [page:Vector3 Vector3].<br /><br />
+
+			The [page:.radius radius] is set the vector's [page:Vector3.length], while the
+			[page:.phi phi] and [page:.theta theta] properties are set from its direction.
 		</div>
 
 		<h2>Source</h2>

+ 0 - 69
docs/api/math/Spline.html

@@ -1,69 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		<h1>[name]</h1>
-
-		<div class="desc">Represents a spline.</div>
-
-
-		<h2>Constructor</h2>
-
-
-		<h3>[name]( [page:Array points] )</h3>
-
-		<div>Initialises the spline with *points*, which are the places through which the spline will go.</div>
-
-
-		<h2>Properties</h2>
-
-		<h3>[property:Array points]</h3>
-
-
-		<h2>Methods</h2>
-
-		<h3>[method:null initFromArray]( [page:Array a] )</h3>
-		<div>
-		a — array of triplets containing x, y, z coordinates<br />
-		</div>
-		<div>Initialises using the data in the array as a series of points. Each value in *a* must be another array with three values, where a[n] is v, the value for the *nth* point, and v[0], v[1] and v[2] are the x, y and z coordinates of that point n, respectively.
-		</div>
-
-		<h3>[method:Vector3 getPoint]( [page:Integer k] )</h3>
-		<div>
-		k — point index
-		</div>
-		<div>Return the interpolated point at *k*.</div>
-
-		<h3>[method:Array getControlPointsArray]( )</h3>
-		<div>Returns an array with triplets of x, y, z coordinates that correspond to the current control points.
-		</div>
-
-		<h3>[method:Object getLength]( [page:Integer nSubDivisions] )</h3>
-		<div>
-		nSubDivisions — number of subdivisions between control points. Default is *100*.
-		</div>
-		<div>
-			Returns an object with the two properties. The property .<strong>[page:Number total]</strong> contains
-			the length of the spline when using nSubDivisions. The property .[page:Array chunkLength]
-			contains an array with the total length from the beginning of the spline to the end of that chunk.
-		</div>
-
-		<h3>[method:null reparametrizeByArcLength]( [page:Float samplingCoef] )</h3>
-		<div>
-		samplingCoef — how many intermediate values to use between spline points
-		</div>
-		<div>Modifies the spline so that it looks similar to the original but has its points distributed in such way that moving along the spline it's done at a more or less constant speed. The points should also appear more uniformly spread along the curve.</div>
-		<div>This is done by resampling the original spline, with the density of sampling controlled by *samplingCoef*. Here it's interesting to note that denser sampling is not necessarily better: if sampling is too high, you may get weird kinks in curvature.</div>
-
-		<h2>Source</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-	</body>
-</html>

+ 57 - 76
docs/api/math/Triangle.html

@@ -10,7 +10,10 @@
 	<body>
 		<h1>[name]</h1>
 
-		<div class="desc">A geometric triangle as defined by three vectors.</div>
+		<div class="desc">
+			A geometric triangle as defined by three [page:Vector3 Vector3s] representing its
+			three corners.
+		</div>
 
 
 		<h2>Constructor</h2>
@@ -18,134 +21,112 @@
 
 		<h3>[name]( [page:Vector3 a], [page:Vector3 b], [page:Vector3 c] )</h3>
 		<div>
-		a -- [page:Vector3] <br />
-		b -- [page:Vector3] <br />
-		c -- [page:Vector3]
-		</div>
-		<div>
-		Sets the triangle's vectors to the passed vectors.
+		[page:Vector3 a] - the first corner of the triangle. Default is a [page:Vector3] at (0, 0, 0).<br />
+		[page:Vector3 b] - the second corner of the triangle. Default is a [page:Vector3] at (0, 0, 0).<br />
+		[page:Vector3 c] - the final corner of the triangle. Default is a [page:Vector3] at (0, 0, 0).<br /><br />
+
+		Creates a new [name].
 		</div>
 
 
 		<h2>Properties</h2>
 
-
-
 		<h3>[property:Vector3 a]</h3>
 		<div>
-		The first [page:Vector3] of the triangle.
+			The first corner of the triangle. Default is a [page:Vector3] at (0, 0, 0).
 		</div>
 
 		<h3>[property:Vector3 b]</h3>
 		<div>
-		The second [page:Vector3] of the triangle.
+			The second corner of the triangle. Default is a [page:Vector3] at (0, 0, 0).
 		</div>
 
 		<h3>[property:Vector3 c]</h3>
 		<div>
-		The third [page:Vector3] of the triangle.
+		the final corner of the triangle. Default is a [page:Vector3] at (0, 0, 0)
 		</div>
 
 		<h2>Methods</h2>
 
+		<h3>[method:Float area]()</h3>
+		<div>Return the area of the triangle.</div>
 
-
-		<h3>[method:Triangle setFromPointsAndIndices]( [page:Array points], [page:Integer i0], [page:Integer i1], [page:Integer i2] ) [page:Triangle this]</h3>
-		<div>
-		points -- [page:Array] of [page:Vector3]s <br />
-		i0 -- [page:Integer] index <br />
-		i1 -- [page:Integer] index <br />
-		i2 -- [page:Integer] index
-		</div>
+		<h3>[method:Vector3 barycoordFromPoint]( [page:Vector3 point], [page:Vector3 optionalTarget] )</h3>
 		<div>
-		Sets the triangle's vectors to the vectors in the array.
-		</div>
+		[page:Vector3 point] - [page:Vector3] <br />
+		[page:Vector3 optionalTarget] - (optional) if specified, the result will be copied into this [page:Vector3], otherwise a new [page:Vector3] will be created.<br /><br />
 
-		<h3>[method:Triangle set]( [page:Vector3 a], [page:Vector3 b], [page:Vector3 c] ) [page:Triangle this]</h3>
-		<div>
-		a -- [page:Vector3] <br />
-		b -- [page:Vector3] <br />
-		c -- [page:Vector3]
-		</div>
-		<div>
-		Sets the triangle's vectors to the passed vectors.
-		</div>
+		Return a [link:https://en.wikipedia.org/wiki/Barycentric_coordinate_system barycentric coordinate]
+		 from the given vector. <br/><br/>
 
-		<h3>[method:Vector3 normal]( [page:Vector3 optionalTarget] )</h3>
-		<div>
-		optionalTarget -- Optional [page:Vector3] target to set the result.
-		</div>
+		[link:http://commons.wikimedia.org/wiki/File:Barycentric_coordinates_1.png Picture of barycentric coordinates]
+	</div>
+
+		<h3>[method:Triangle clone]()</h3>
 		<div>
-		Return the calculated normal of the triangle.
+			Returns a new triangle with the same [page:.a a], [page:.b b] and  [page:.c c] properties as this one.
 		</div>
 
-		<h3>[method:Vector3 barycoordFromPoint]( [page:Vector3 point], [page:Vector3 optionalTarget] )</h3>
+		<h3>[method:Vector3 closestPointToPoint]( [page:Vector3 point], [page:Vector3 optionalTarget] )</h3>
 		<div>
-		point -- [page:Vector3] <br />
-		optionalTarget -- Optional [page:Vector3] target to set the result.
+		point - [page:Vector3] <br />
+		[page:Vector3 optionalTarget] - (optional) if specified, the result will be copied into this [page:Vector3], otherwise a new [page:Vector3] will be created.<br /><br />
+
+		Returns the closest point on the triangle to [page:Vector3 point].
 		</div>
+
+		<h3>[method:Boolean containsPoint]( [page:Vector3 point] )</h3>
 		<div>
-		Return a barycentric coordinate from the given vector. <br/><br/>
-		[link:http://commons.wikimedia.org/wiki/File:Barycentric_coordinates_1.png](Picture of barycentric coordinates)
+		[page:Vector3 point] - [page:Vector3] to check.<br /><br />
+
+		Returns true if the passed vector is within the triangle.
 		</div>
 
-		<h3>[method:Triangle clone]()</h3>
+		<h3>[method:Triangle copy]( [page:Triangle triangle] )</h3>
 		<div>
-		Return a new copy of this triangle.
+			Copies the values of the passed triangles's [page:.a a], [page:.b b] and [page:.c c]
+			properties to this triangle.
 		</div>
 
-		<h3>[method:Float area]()</h3>
+		<h3>[method:Boolean equals]( [page:Triangle triangle] )</h3>
 		<div>
-		Return the area of the triangle.
+		Returns true if the two triangles have identical [page:.a a], [page:.b b] and [page:.c c] properties.
 		</div>
 
 		<h3>[method:Vector3 midpoint]( [page:Vector3 optionalTarget] )</h3>
 		<div>
-		optionalTarget -- Optional [page:Vector3] target to set the result.
-		</div>
-		<div>
-		Return the midpoint of the triangle. Optionally sets a target vector.
-		</div>
+			[page:Vector3 optionalTarget] - (optional) if specified, the result will be copied into this [page:Vector3], otherwise a new [page:Vector3] will be created.<br /><br />
 
-		<h3>[method:Boolean equals]( [page:Triangle triangle] )</h3>
-		<div>
-		triangle -- [page:Triangle]
+		Calculate the midpoint of the triangle.
 		</div>
+
+		<h3>[method:Vector3 normal]( [page:Vector3 optionalTarget] )</h3>
 		<div>
-		Checks to see if two triangles are equal (share the same vectors).
+			[page:Vector3 optionalTarget] - (optional) if specified, the result will be copied into this [page:Vector3], otherwise a new [page:Vector3] will be created.<br /><br />
+
+		Calculate the [link:https://en.wikipedia.org/wiki/Normal_(geometry) normal vector] of the triangle.
 		</div>
 
 		<h3>[method:Plane plane]( [page:Plane optionalTarget] )</h3>
 		<div>
-		optionalTarget -- Optional [page:Plane] target to set the result.
-		</div>
-		<div>
-		Return a [page:Plane plane] based on the triangle. Optionally sets a target plane.
-		</div>
+			[page:Plane optionalTarget] - (optional) if specified, the result will be copied into this [page:Plane], otherwise a new [page:Plane] will be created.<br /><br />
 
-		<h3>[method:Boolean containsPoint]( [page:Vector3 point] )</h3>
-		<div>
-		point -- [page:Vector3]
-		</div>
-		<div>
-		Checks to see if the passed vector is within the triangle.
+		Create a [page:Plane plane] based on the triangle. .
 		</div>
 
-		<h3>[method:Vector3 closestPointToPoint]( [page:Vector3 point], [page:Vector3 optionalTarget] )</h3>
-		<div>
-		point -- [page:Vector3] <br />
-		optionalTarget -- Optional [page:Vector3] target to set the result.
-		</div>
+		<h3>[method:Triangle set]( [page:Vector3 a], [page:Vector3 b], [page:Vector3 c] ) [page:Triangle this]</h3>
 		<div>
-		Returns the closest point on the triangle.
+		Sets the triangle's [page:.a a], [page:.b b] and [page:.c c] properties to the passed [page:vector3 vector3s].
 		</div>
 
-		<h3>[method:Triangle copy]( [page:Triangle triangle] )</h3>
-		<div>
-		triangle -- [page:Triangle]
-		</div>
+		<h3>[method:Triangle setFromPointsAndIndices]( [page:Array points], [page:Integer i0], [page:Integer i1], [page:Integer i2] ) [page:Triangle this]</h3>
 		<div>
-		Copies the values of the vertices of the passed triangle to this triangle.
+		points - [page:Array] of [page:Vector3]s <br />
+		i0 - [page:Integer] index <br />
+		i1 - [page:Integer] index <br />
+		i2 - [page:Integer] index<br /><br />
+
+		Sets the triangle's vectors to the vectors in the array.
 		</div>
 
 		<h2>Source</h2>

+ 196 - 178
docs/api/math/Vector2.html

@@ -10,12 +10,38 @@
 	<body>
 		<h1>[name]</h1>
 
-		<div class="desc">2D vector.</div>
+		<div class="desc">
+			Class representing a 2D [link:https://en.wikipedia.org/wiki/Vector_space vector].
+
+			A 2D vector is an ordered pair of numbers (labeled x and y), which can be used to
+			represent a number of things, such as:
+
+			<ul>
+				<li>
+					A point in 2D space (i.e. a position on a plane).
+				</li>
+				<li>
+					A direction and length across a plane. In three.js the length will always be the
+					[link:https://en.wikipedia.org/wiki/Euclidean_distance Euclidean distance]
+					(straight-line distance) from (0, 0) to (x, y) and the direction is also
+					measured from (0, 0) towards (x, y).
+				</li>
+				<li>
+					Any arbitrary ordered pair of numbers.
+				</li>
+			</ul>
+
+			There are other things a 2D vector can be used to represent, such as momentum
+			vectors, complex numbers and so on,	however these are the most common uses in three.js.
+		</div>
 
 		<h2>Example</h2>
 
-		<code>var a = new THREE.Vector2( 0, 1 );
-		var b = new THREE.Vector2( 1, 0 );
+		<code>
+		var a = new THREE.Vector2( 0, 1 );
+
+		//no arguments; will be initialised to (0, 0)
+		var b = new THREE.Vector2( );
 
 		var d = a.distanceTo( b );
 		</code>
@@ -23,18 +49,29 @@
 
 		<h2>Constructor</h2>
 
-
 		<h3>[name]( [page:Float x], [page:Float y] )</h3>
 		<div>
-		x -- [page:Float] representing the x value of the vector <br />
-		y -- [page:Float] representing the y value of the vector
+		[page:Float x] - the x value of the vector. Default is *0*.<br />
+		[page:Float y] -  the y value of the vector. Default is *0*.<br /><br />
+
+		Created a new [name].
 		</div>
+
+
+		<h2>Properties</h2>
+
+		<h3>[property:Boolean isVector2]</h3>
 		<div>
-		A vector in 2 dimensional space
+			Used to check whether this or derived classes are Vector2s. Default is *true*.<br /><br />
+
+			You should not change this, as it used internally for optimisation.
 		</div>
 
+		<h3>[property:Float height]</h3>
+		<div>Alias for [page:.y y].</div>
 
-		<h2>Properties</h2>
+		<h3>[property:Float width]</h3>
+		<div>Alias for [page:.x x].</div>
 
 		<h3>[property:Float x]</h3>
 
@@ -43,270 +80,251 @@
 
 		<h2>Methods</h2>
 
-		<h3>[method:Vector2 set]( [page:Float x], [page:Float y] ) [page:Vector2 this]</h3>
-		<div>
-		Sets value of this vector.
-		</div>
+		<h3>[method:Vector2 add]( [page:Vector2 v] )</h3>
+		<div>Adds [page:Vector2 v] to this vector.</div>
 
-		<h3>[method:Vector2 setX]( [page:Float x] ) [page:Vector2 this]</h3>
-		<div>
-		x -- [page:Float]
-		</div>
-		<div>
-		replace this vector's x value with x.
-		</div>
+		<h3>[method:Vector2 addScalar]( [page:Float s] )</h3>
+		<div>Add the scalar value s to this vector's [page:.x x] and [page:.y y] values.</div>
 
-		<h3>[method:Vector2 setY]( [page:Float y] ) [page:Vector2 this]</h3>
-		<div>
-		y -- [page:Float]
-		</div>
-		<div>
-		replace this vector's y value with y.
-		</div>
+		<h3>[method:Vector2 addScaledVector]( [page:Vector2 v], [page:Float s] )</h3>
+		<div>Adds the multiple of [page:Vector2 v] and [page:Float s] to this vector.</div>
 
-		<h3>[method:Vector2 setScalar]( [page:Float scalar] ) [page:Vector2 this]</h3>
-		<div>
-		scalar -- [page:Float]
-		</div>
-		<div>
-		set all component values of this vector to *scalar*.
-		</div>
+		<h3>[method:Vector2 addVectors]( [page:Vector2 a], [page:Vector2 b] )</h3>
+		<div>Sets this vector to [page:Vector2 a] + [page:Vector2 b].</div>
 
-		<h3>[method:Vector2 copy]( [page:Vector2 v] ) [page:Vector2 this]</h3>
+		<h3>[method:Float angle]()</h3>
 		<div>
-		Copies value of *v* to this vector.
+		Computes the angle in radians of this vector with respect to the positive x-axis.
 		</div>
 
-		<h3>[method:Vector2 fromArray]( [page:Array array], [page:Integer offset] ) [page:Vector2 this]</h3>
-		<div>
-		array -- The source array of length 2 <br />
-		offset -- An optional offset into the array.
-		</div>
+		<h3>[method:Vector2 ceil]()</h3>
 		<div>
-		Sets this vector's x value to be array[0] and y value to be array[1].
+		The [page:.x x] and [page:.y y] components of the vector are rounded up to the nearest integer value.
 		</div>
 
-		<h3>[method:Vector2 add]( [page:Vector2 v] ) [page:Vector2 this]</h3>
+		<h3>[method:Vector2 clamp]( [page:Vector2 min], [page:Vector2 max] )</h3>
 		<div>
-		Adds *v* to this vector.
-		</div>
+		[page:Vector2 min] - the minimum x and y values.<br />
+		[page:Vector2 max] - the maximum x and y values in the desired range<br /><br />
 
-		<h3>[method:Vector2 addVectors]( [page:Vector2 a], [page:Vector2 b] ) [page:Vector2 this]</h3>
-		<div>
-		Sets this vector to *a + b*.
+		If this vector's x or y value is greater than the max vector's x or y value, it is replaced by the corresponding value. <br /><br />
+		If this vector's x or y value is less than the min vector's x or y value, it is replaced by the corresponding value.
 		</div>
 
-		<h3>[method:Vector2 addScaledVector]( [page:Vector2 v], [page:Float s] ) [page:Vector2 this]</h3>
+		<h3>[method:Vector2 clampLength]( [page:Float min], [page:Float max] )</h3>
 		<div>
-		Adds the multiple of v and s to this vector.
-		</div>
+		[page:Float min] - the minimum value the length will be clamped to <br />
+		[page:Float max] - the maximum value the length will be clamped to<br /><br />
 
-		<h3>[method:Vector2 sub]( [page:Vector2 v] ) [page:Vector2 this]</h3>
-		<div>
-		Subtracts *v* from this vector.
+		If this vector's length is greater than the max value, it is replaced by the max value. <br /><br />
+		If this vector's length is less than the min value, it is replaced by the min value.
 		</div>
 
-		<h3>[method:Vector2 subVectors]( [page:Vector2 a], [page:Vector2 b] ) [page:Vector2 this]</h3>
+		<h3>[method:Vector2 clampScalar]( [page:Float min], [page:Float max] )</h3>
 		<div>
-		Sets this vector to *a - b*.
-		</div>
+		[page:Float min] - the minimum value the components will be clamped to <br />
+		[page:Float max] - the maximum value the components will be clamped to<br /><br />
 
-		<h3>[method:Vector2 multiplyScalar]( [page:Float s] ) [page:Vector2 this]</h3>
-		<div>
-		Multiplies this vector by scalar *s*.
+		If this vector's x or y values are greater than the max value, they are replaced by the max value. <br /><br />
+		If this vector's x or y values are less than the min value, they are replaced by the min value.
 		</div>
 
-		<h3>[method:Vector2 divideScalar]( [page:Float s] ) [page:Vector2 this]</h3>
+		<h3>[method:Vector2 clone]()</h3>
 		<div>
-		Divides this vector by scalar *s*.<br />
-		Set vector to *( 0, 0 )* if *s == 0*.
+		Returns a new vector2 with the same [page:.x x] and [page:.y y] values as this one.
 		</div>
 
-		<h3>[method:Vector2 negate]() [page:Vector2 this]</h3>
+		<h3>[method:Vector2 copy]( [page:Vector2 v] )</h3>
 		<div>
-		Inverts this vector.
+			Copies the values of the passed vector2's [page:.x x] and [page:.y y]
+			properties to this vector2.
 		</div>
 
-		<h3>[method:Float dot]( [page:Vector2 v] ) [page:Vector2 this]</h3>
-		<div>
-		Computes dot product of this vector and *v*.
-		</div>
+		<h3>[method:Float distanceTo]( [page:Vector2 v] )</h3>
+		<div>Computes the distance from this vector to [page:Vector2 v].</div>
 
-		<h3>[method:Float lengthSq]() [page:Vector2 this]</h3>
+		<h3>[method:Float distanceToManhattan]( [page:Vector2 v] )</h3>
 		<div>
-		Computes the squared length of this vector.
+		Computes the [link:https://en.wikipedia.org/wiki/Taxicab_geometry Manhattan distance] from this vector to [page:Vector2 v].
 		</div>
 
-		<h3>[method:Float length]() [page:Vector2 this]</h3>
+		<h3>[method:Float distanceToSquared]( [page:Vector2 v] )</h3>
 		<div>
-		Computes the length of this vector.
+		Computes the squared distance from this vector to [page:Vector2 v]. If you are just
+		comparing the distance with another distance, you should compare the distance squared instead
+		as it is slightly more efficient to calculate.
 		</div>
 
-		<h3>[method:Float lengthManhattan]() [page:Vector2 this]</h3>
-		<div>
-		Computes the Manhattan length of this vector.<br />
-		[link:http://en.wikipedia.org/wiki/Taxicab_geometry]
-		</div>
+		<h3>[method:Vector2 divide]( [page:Vector2 v] )</h3>
+		<div>Divides this vector by [page:Vector2 v].</div>
 
-		<h3>[method:Vector2 normalize]() [page:Vector2 this]</h3>
+		<h3>[method:Vector2 divideScalar]( [page:Float s] )</h3>
 		<div>
-		Normalizes this vector.
+		Divides this vector by scalar [page:Float s].<br />
+		Sets vector to *( 0, 0 )* if [page:Float s] = 0.
 		</div>
 
-		<h3>[method:Float angle]() [page:Vector2 this]</h3>
+		<h3>[method:Float dot]( [page:Vector2 v] )</h3>
 		<div>
-		Computes the angle in radians of this vector with respect to the positive x-axis.
+		Calculate the [link:https://en.wikipedia.org/wiki/Dot_product dot product] of this
+	  vector and [page:Vector2 v].
 		</div>
 
-		<h3>[method:Float distanceTo]( [page:Vector2 v] )</h3>
-		<div>
-		Computes the distance from this vector to *v*.
-		</div>
+		<h3>[method:Boolean equals]( [page:Vector2 v] )</h3>
+		<div>Checks for strict equality of this vector and [page:Vector2 v].</div>
 
-		<h3>[method:Float distanceToSquared]( [page:Vector2 v] )</h3>
-		<div>
-		Computes the squared distance from this vector to *v*.
-		</div>
+		<h3>[method:Vector2 floor]()</h3>
+		<div>The components of the vector are rounded down to the nearest integer value.</div>
 
-		<h3>[method:Float distanceToManhattan]( [page:Vector2 v] )</h3>
+		<h3>[method:Vector2 fromArray]( [page:Array array], [page:Integer offset] )</h3>
 		<div>
-		Computes the Manhattan distance from this vector to *v*.
+		[page:Array array] - the source array.<br />
+		[page:Integer offset] - ( optional) offset into the array. Default is 0.<br /><br />
+
+		Sets this vector's [page:.x x] value to be array[0] and [page:.y y] value to be array[1].
 		</div>
 
-		<h3>[method:Vector2 setLength]( [page:Float l] ) [page:Vector2 this]</h3>
+		<h3>[method:Vector2 fromBufferAttribute]( [page:BufferAttribute attribute], [page:Integer index] )</h3>
 		<div>
-		Normalizes this vector and multiplies it by *l*.
+		[page:BufferAttribute attribute] - the source attribute.<br />
+		[page:Integer index] - index in the attribute.<br /><br />
+
+		Sets this vector's [page:.x x] and [page:.y y] values from the [page:BufferAttribute attribute].
 		</div>
 
-		<h3>[method:Vector2 clamp]( [page:Vector2 min], [page:Vector2 max] ) [page:Vector2 this]</h3>
+		<h3>[method:Float getComponent]( [page:Integer index] )</h3>
 		<div>
-		min -- [page:Vector2] containing the min x and y values in the desired range <br />
-		max -- [page:Vector2] containing the max x and y values in the desired range
+		[page:Integer index] - 0 or 1.<br /><br />
+
+		If index equals 0 returns the [page:.x x] value. <br />
+		If index equals 1 returns the [page:.y y] value.
 		</div>
+
+		<h3>[method:Float length]()</h3>
+		<div>Computes the [link:https://en.wikipedia.org/wiki/Euclidean_distance Euclidean length]
+		(straight-line length) from (0, 0) to (x, y).</div>
+
+		<h3>[method:Float lengthManhattan]()</h3>
 		<div>
-		If this vector's x or y value is greater than the max vector's x or y value, it is replaced by the corresponding value. <br /><br />
-		If this vector's x or y value is less than the min vector's x or y value, it is replaced by the corresponding value.
+		Computes the [link:http://en.wikipedia.org/wiki/Taxicab_geometry Manhattan length] of this vector.
 		</div>
 
-		<h3>[method:Vector2 clampScalar]( [page:Float min], [page:Float max] ) [page:Vector2 this]</h3>
+		<h3>[method:Float lengthSq]()</h3>
 		<div>
-		min -- [page:Float] the minimum value the components will be clamped to <br />
-		max -- [page:Float] the maximum value the components will be clamped to
+		Computes the square of the [link:https://en.wikipedia.org/wiki/Euclidean_distance Euclidean length]
+		(straight-line length) from (0, 0) to (x, y). If you are 	comparing the lengths of
+		vectors, you should compare the length squared instead as it is slightly more efficient to calculate.
 		</div>
+
+		<h3>[method:Vector2 lerp]( [page:Vector2 v], [page:Float alpha] )</h3>
 		<div>
-		If this vector's x or y values are greater than the max value, they are replaced by the max value. <br /><br />
-		If this vector's x or y values are less than the min value, they are replaced by the min value.
+		[page:Vector2 v] - [page:Vector2] to interpolate towards.<br />
+		alpha - interpolation factor in the closed interval [0, 1].<br /><br />
+
+		Linearly interpolate between this vector and [page:Vector2 v], where alpha is the
+		distance along the line - alpha = 0 will be this vector, and alpha = 1 will be [page:Vector2 v].
 		</div>
 
-		<h3>[method:Vector2 clampLength]( [page:Float min], [page:Float max] ) [page:Vector2 this]</h3>
+		<h3>[method:Vector2 lerpVectors]( [page:Vector2 v1], [page:Vector2 v2], [page:Float alpha] )</h3>
 		<div>
-		min -- [page:Float] the minimum value the length will be clamped to <br />
-		max -- [page:Float] the maximum value the length will be clamped to
+		[page:Vector2 v1] - the starting [page:Vector2].<br />
+		[page:Vector2 v2] - [page:Vector2] to interpolate towards.<br />
+		[page:Float alpha] - interpolation factor in the closed interval [0, 1].<br /><br />
+
+		Sets this vector to be the vector linearly interpolated between [page:Vector2 v1] and
+		[page:Vector2 v2] where alpha is the distance along the line connecting the two vectors
+		- alpha = 0 will be [page:Vector2 v1], and alpha = 1 will be [page:Vector2 v2].
 		</div>
+
+		<h3>[method:Vector2 negate]()</h3>
+		<div>Inverts this vector - i.e. sets x = -x and y = -y.</div>
+
+		<h3>[method:Vector2 normalize]()</h3>
 		<div>
-		If this vector's length is greater than the max value, it is replaced by the max value. <br /><br />
-		If this vector's length is less than the min value, it is replaced by the min value.
+		Convert this vector to a [link:https://en.wikipedia.org/wiki/Unit_vector unit vector] - that is, sets it equal to the vector with the same direction
+		as this one, but [page:.length length] 1.
 		</div>
 
-		<h3>[method:Vector2 floor]() [page:Vector2 this]</h3>
+		<h3>[method:Vector2 max]( [page:Vector2 v] )</h3>
 		<div>
-		The components of the vector are rounded downwards (towards negative infinity) to an integer value.
+		If this vector's x or y value is less than [page:Vector2 v's] x or y value, replace
+		that value with the corresponding max value.
 		</div>
 
-		<h3>[method:Vector2 ceil]() [page:Vector2 this]</h3>
+		<h3>[method:Vector2 min]( [page:Vector2 v] )</h3>
 		<div>
-		The components of the vector are rounded upwards (towards positive infinity) to an integer value.
+		If this vector's x or y value is greater than [page:Vector2 v's] x or y value, replace
+		that value with the corresponding min value.
 		</div>
 
-		<h3>[method:Vector2 round]() [page:Vector2 this]</h3>
+		<h3>[method:Vector2 multiply]( [page:Vector2 v] )</h3>
+		<div>Multiplies this vector by [page:Vector2 v].</div>
+
+
+		<h3>[method:Vector2 multiplyScalar]( [page:Float s] )</h3>
+		<div>Multiplies this vector by scalar [page:Float s].</div>
+
+		<h3>[method:Vector2 rotateAround]( [page:Vector2 center], [page:float angle] )</h3>
 		<div>
-		The components of the vector are rounded towards the nearest integer value.
+			[page:Vector2 center] - the point around which to rotate.<br />
+			[page:float angle] - the angle to rotate, in radians.<br /><br />
+
+			Rotate the vector arounf [page:Vector2 center] by [page:float angle] radians.
 		</div>
 
-		<h3>[method:Vector2 roundToZero]() [page:Vector2 this]</h3>
+		<h3>[method:Vector2 round]()</h3>
+		<div>The components of the vector are rounded to the nearest integer value.</div>
+
+		<h3>[method:Vector2 roundToZero]()</h3>
 		<div>
 		The components of the vector are rounded towards zero (up if negative, down if positive) to an integer value.
 		</div>
 
-		<h3>[method:Vector2 lerp]( [page:Vector2 v], [page:Float alpha] ) [page:Vector2 this]</h3>
-		<div>
-		v -- [page:Vector2] <br />
-		alpha -- [page:Float] between 0 and 1;
-		</div>
-		<div>
-		Linear interpolation between this vector and v, where alpha is the percent along the line.
-		</div>
+		<h3>[method:Vector2 set]( [page:Float x], [page:Float y] )</h3>
+		<div>Sets the [page:.x x] and [page:.y y] components of this vector.</div>
 
-		<h3>[method:Vector2 lerpVectors]( [page:Vector2 v1], [page:Vector2 v2], [page:Float alpha] ) [page:Vector2 this]</h3>
+		<h3>[method:null setComponent]( [page:Integer index], [page:Float value] )</h3>
 		<div>
-		v1 -- [page:Vector2] <br />
-		v2 -- [page:Vector2] <br />
-		alpha -- [page:Float] between 0 and 1.
-		</div>
-		<div>
-		Sets this vector to be the vector linearly interpolated between *v1* and *v2* with *alpha* factor.
-		</div>
+		[page:Integer index] - 0 or 1.<br />
+		[page:Float value] - [page:Float]<br /><br />
 
-		<h3>[method:null setComponent]( [page:Integer index], [page:Float value] ) [page:Vector2 this]</h3>
-		<div>
-		index -- 0 or 1 <br />
-		value -- [page:Float]
-		</div>
-		<div>
-		if index equals 0 method replaces this.x with value. <br />
-		if index equals 1 method replaces this.y with value.
+		If index equals 0 set [page:.x x] to [page:Float value]. <br />
+		If index equals 1 set [page:.y y] to [page:Float value]
 		</div>
 
-		<h3>[method:Vector2 addScalar]( [page:Float s] ) [page:Vector2 this]</h3>
+		<h3>[method:Vector2 setLength]( [page:Float l] )</h3>
 		<div>
-		s -- [page:Float]
-		</div>
-		<div>
-		Add the scalar value s to this vector's x and y values.
+		Set this vector to the vector with the same direction as this one, but [page:.length length]
+		[page:Float l].
 		</div>
 
-		<h3>[method:Float getComponent]( [page:Integer index] ) [page:Vector2 this]</h3>
-		<div>
-		index -- 0 or 1
-		</div>
+		<h3>[method:Vector2 setScalar]( [page:Float scalar] )</h3>
 		<div>
-		if index equals 0 returns the x value. <br />
-		if index equals 1 returns the y value.
+		Set the [page:.x x] and [page:.y y] values of this vector both equal to [page:Float scalar].
 		</div>
 
-		<h3>[method:Vector2 min]( [page:Vector2 v] ) [page:Vector2 this]</h3>
-		<div>
-		v -- [page:Vector2]
-		</div>
-		<div>
-		If this vector's x or y value is greater than v's x or y value, replace that value with the corresponding min value.
-		</div>
+		<h3>[method:Vector2 setX]( [page:Float x] )</h3>
+		<div>Replace this vector's [page:.x x] value with [page:Float x].</div>
 
-		<h3>[method:Vector2 max]( [page:Vector2 v] ) [page:Vector2 this]</h3>
-		<div>
-		v -- [page:Vector2]
-		</div>
-		<div>
-		If this vector's x or y value is less than v's x or y value, replace that value with the corresponding max value.
-		</div>
+		<h3>[method:Vector2 setY]( [page:Float y] )</h3>
+		<div>Replace this vector's [page:.y y] value with [page:Float y].</div>
 
-		<h3>[method:Boolean equals]( [page:Vector2 v] ) [page:Vector2 this]</h3>
-		<div>
-		Checks for strict equality of this vector and *v*.
-		</div>
+		<h3>[method:Vector2 sub]( [page:Vector2 v] )</h3>
+		<div>Subtracts [page:Vector2 v] from this vector.</div>
 
-		<h3>[method:Vector2 clone]() [page:Vector2 this]</h3>
-		<div>
-		Clones this vector.
-		</div>
+		<h3>[method:Vector2 subScalar]( [page:Float s] )</h3>
+		<div>Subtracts [page:Float s]  from this vector's [page:.x x] and [page:.y y] compnents.</div>
 
-		<h3>[method:Array toArray]( [page:Array array], [page:Integer offset] ) [page:Vector2 this]</h3>
-		<div>
-		array -- An optional array to store the vector to. <br />
-		offset -- An optional offset into the array.
-		</div>
+		<h3>[method:Vector2 subVectors]( [page:Vector2 a], [page:Vector2 b] )</h3>
+		<div>Sets this vector to [page:Vector2 a] - [page:Vector2 b].</div>
+
+		<h3>[method:Array toArray]( [page:Array array], [page:Integer offset] )</h3>
 		<div>
-		Returns an array [x, y].
+		[page:Array array] - (optional) array to store the vector to. If this is not provided
+		a new array will be created.<br />
+		[page:Integer offset] - (optional) optional offset into the array.<br /><br />
+
+		Returns an array [x, y], or copies x and y into the provided [page:Array array].
 		</div>
 
 		<h2>Source</h2>

+ 244 - 298
docs/api/math/Vector3.html

@@ -10,35 +10,64 @@
 	<body>
 		<h1>[name]</h1>
 
-		<div class="desc">3D vector.</div>
+		<div class="desc">Class representing a 3D [link:https://en.wikipedia.org/wiki/Vector_space vector].
+
+		A 3D vector is an ordered triplet of numbers (labeled x, y, and z), which can be used to
+		represent a number of things, such as:
+
+		<ul>
+			<li>
+				A point in 3D space.
+			</li>
+			<li>
+				A direction and length in 3D space. In three.js the length will always be the
+				[link:https://en.wikipedia.org/wiki/Euclidean_distance Euclidean distance]
+				(straight-line distance) from (0, 0, 0) to (x, y, z) and the direction is also
+				measured from (0, 0, 0) towards (x, y, z).
+			</li>
+			<li>
+				Any arbitrary ordered triplet of numbers.
+			</li>
+		</ul>
+
+		There are other things a 3D vector can be used to represent, such as momentum
+		vectors and so on, however these are the most common uses in three.js.
+		</div>
 
 
 		<h2>Example</h2>
 
-		<code>var a = new THREE.Vector3( 1, 0, 0 );
-		var b = new THREE.Vector3( 0, 1, 0 );
+		<code>
+var a = new THREE.Vector3( 0, 1, 0 );
+
+//no arguments; will be initialised to (0, 0, 0)
+var b = new THREE.Vector3( );
 
-		var c = new THREE.Vector3();
-		c.crossVectors( a, b );
+var d = a.distanceTo( b );
 		</code>
 
 
 		<h2>Constructor</h2>
 
-
 		<h3>[name]( [page:Float x], [page:Float y], [page:Float z] )</h3>
 		<div>
-		x -- [page:Float] the vector's x value <br />
-		y -- [page:Float] the vector's y value <br />
-		z -- [page:Float] the vector's z value
-		</div>
-		<div>
-		A 3 dimensional vector
+		[page:Float x] - the x value of the vector. Default is *0*.<br />
+		[page:Float y] -  the y value of the vector. Default is *0*.<br />
+		[page:Float z] - the z value of the vector. Default is *0*.<br /><br />
+
+		Creates a new [name].
 		</div>
 
 
 		<h2>Properties</h2>
 
+		<h3>[property:Boolean isVector3]</h3>
+		<div>
+			Used to check whether this or derived classes are Vector3s. Default is *true*.<br /><br />
+
+			You should not change this, as it used internally for optimisation.
+		</div>
+
 		<h3>[property:Float x]</h3>
 
 		<h3>[property:Float y]</h3>
@@ -48,443 +77,360 @@
 
 		<h2>Methods</h2>
 
-		<h3>[method:Vector3 set]( [page:Float x], [page:Float y], [page:Float z] ) [page:Vector3 this]</h3>
-		<div>
-		Sets value of this vector.
-		</div>
+		<h3>[method:Vector3 add]( [page:Vector3 v] )</h3>
+		<div>Adds [page:Vector3 v] to this vector.</div>
 
-		<h3>[method:Vector3 setX]( [page:Float x] ) [page:Vector3 this]</h3>
-		<div>
-		Sets x value of this vector.
-		</div>
+		<h3>[method:Vector3 addScalar]( [page:Float s] )</h3>
+		<div>Add the scalar value s to this vector's [page:.x x], [page:.y y] and [page:.z z] values.</div>
 
-		<h3>[method:Vector3 setY]( [page:Float y] ) [page:Vector3 this]</h3>
-		<div>
-		Sets y value of this vector.
-		</div>
+		<h3>[method:Vector3 addScaledVector]( [page:Vector3 v], [page:Float s] )</h3>
+		<div>Adds the multiple of [page:Vector3 v] and [page:Float s] to this vector.</div>
 
-		<h3>[method:Vector3 setZ]( [page:Float z] ) [page:Vector3 this]</h3>
-		<div>
-		Sets z value of this vector.
-		</div>
+		<h3>[method:Vector3 addVectors]( [page:Vector3 a], [page:Vector3 b] )</h3>
+		<div>Sets this vector to [page:Vector3 a] + [page:Vector3 b].</div>
 
-		<h3>[method:Vector3 setScalar]( [page:Float scalar] ) [page:Vector3 this]</h3>
-		<div>
-		scalar -- [page:Float]
-		</div>
+		<h3>[method:Vector3 applyAxisAngle]( [page:Vector3 axis], [page:Float angle] )</h3>
 		<div>
-		set all component values of this vector to *scalar*.
-		</div>
+		[page:Vector3 axis] - A normalized [page:Vector3].<br />
+		[page:Float angle] - An angle in radians.<br /><br />
 
-		<h3>[method:Vector3 copy]( [page:Vector3 v] ) [page:Vector3 this]</h3>
-		<div>
-		Copies value of *v* to this vector.
+		Applies a rotation specified by an axis and an angle to this vector.
 		</div>
 
-		<h3>[method:Vector3 fromArray]( [page:Array array], [page:Integer offset] ) [page:Vector3 this]</h3>
-		<div>
-		array -- The source array in the form [x, y, z].<br />
-		offset -- An optional offset into the array.
-		</div>
+		<h3>[method:Vector3 applyEuler]( [page:Euler euler] )</h3>
 		<div>
-		Sets the vector's components based on an array formatted like [x, y, z]
+		Applies euler transform to this vector by converting the [page:Euler] object to a
+		[page:Quaternion] and applying.
 		</div>
 
-		<h3>[method:Vector3 add]( [page:Vector3 v] ) [page:Vector3 this]</h3>
-		<div>
-		Adds *v* to this vector.
-		</div>
+		<h3>[method:Vector3 applyMatrix3]( [page:Matrix3 m] )</h3>
+		<div>Multiply this vector by [page:Matrix3 m]</div>
 
-		<h3>[method:Vector3 addVectors]( [page:Vector3 a], [page:Vector3 b] ) [page:Vector3 this]</h3>
+		<h3>[method:Vector3 applyMatrix4]( [page:Matrix4 m] )</h3>
 		<div>
-		Sets this vector to *a + b*.
+		Multiplies this vector (with an implicit 1 in the 4th dimension) and m, and divides by perspective.
 		</div>
 
-		<h3>[method:Vector3 addScaledVector]( [page:Vector3 v], [page:Float s] ) [page:Vector3 this]</h3>
+		<h3>[method:Vector3 applyQuaternion]( [page:Quaternion quaternion] )</h3>
 		<div>
-		Adds the multiple of v and s to this vector.
+		Applies a [page:Quaternion] transform to this vector.
 		</div>
 
-		<h3>[method:Vector3 sub]( [page:Vector3 v] ) [page:Vector3 this]</h3>
-		<div>
-		Subtracts *v* from this vector.
-		</div>
 
-		<h3>[method:Vector3 subVectors]( [page:Vector3 a], [page:Vector3 b] ) [page:Vector3 this]</h3>
+		<h3>[method:Float angleTo]( [page:Vector3 v] )</h3>
 		<div>
-		Sets this vector to *a - b*.
+		Returns the angle between this vector and vector [page:Vector3 v] in radians.
 		</div>
 
-		<h3>[method:Vector3 multiplyScalar]( [page:Float s] ) [page:Vector3 this]</h3>
+		<h3>[method:Vector3 ceil]()</h3>
 		<div>
-		Multiplies this vector by scalar *s*.
+		The [page:.x x], [page:.y y] and [page:.z z] components of the vector are rounded up to the nearest integer value.
 		</div>
 
-		<h3>[method:Vector3 divideScalar]( [page:Float s] ) [page:Vector3 this]</h3>
+		<h3>[method:Vector3 clamp]( [page:Vector3 min], [page:Vector3 max] )</h3>
 		<div>
-		Divides this vector by scalar *s*.<br />
-		Set vector to *( 0, 0, 0 )* if *s == 0*.
+		[page:Vector3 min] - the minimum [page:.x x], [page:.y y] and [page:.z z] values.<br />
+		[page:Vector3 max] - the maximum [page:.x x], [page:.y y] and [page:.z z] values in the desired range<br /><br />
+
+		If this vector's x, y or z value is greater than the max vector's x, y or z value, it is replaced by the corresponding value. <br /><br />
+		If this vector's x, y or z value is less than the min vector's x, y or z value, it is replaced by the corresponding value.
 		</div>
 
-		<h3>[method:Vector3 negate]() [page:Vector3 this]</h3>
+		<h3>[method:Vector3 clampLength]( [page:Float min], [page:Float max] )</h3>
 		<div>
-		Inverts this vector.
+		[page:Float min] - the minimum value the length will be clamped to <br />
+		[page:Float max] - the maximum value the length will be clamped to<br /><br />
+
+		If this vector's length is greater than the max value, it is replaced by the max value. <br /><br />
+		If this vector's length is less than the min value, it is replaced by the min value.
 		</div>
 
-		<h3>[method:Float dot]( [page:Vector3 v] ) [page:Vector3 this]</h3>
+		<h3>[method:Vector3 clampScalar]( [page:Float min], [page:Float max] )</h3>
 		<div>
-		Computes dot product of this vector and *v*.
+		[page:Float min] - the minimum value the components will be clamped to <br />
+		[page:Float max] - the maximum value the components will be clamped to<br /><br />
+
+		If this vector's x, y or z values are greater than the max value, they are replaced by the max value. <br /><br />
+		If this vector's x, y or z values are less than the min value, they are replaced by the min value.
 		</div>
 
-		<h3>[method:Float lengthSq]() [page:Vector3 this]</h3>
+		<h3>[method:Vector3 clone]()</h3>
 		<div>
-		Computes the squared length of this vector.
+		Returns a new vector3 with the same [page:.x x], [page:.y y] and [page:.z z] values as this one.
 		</div>
 
-		<h3>[method:Float length]() [page:Vector3 this]</h3>
+		<h3>[method:Vector3 copy]( [page:Vector3 v] )</h3>
 		<div>
-		Computes the length of this vector.
+			Copies the values of the passed vector3's [page:.x x], [page:.y y] and [page:.z z]
+			properties to this vector3.
 		</div>
 
-		<h3>[method:Float lengthManhattan]() [page:Vector3 this]</h3>
+		<h3>[method:Vector3 cross]( [page:Vector3 v] )</h3>
 		<div>
-		Computes the Manhattan length of this vector.<br />
-		[link:http://en.wikipedia.org/wiki/Taxicab_geometry]
+		Sets this vector to [link:https://en.wikipedia.org/wiki/Cross_product cross product] of itself and [page:Vector3 v].
 		</div>
 
-		<h3>[method:Vector3 normalize]() [page:Vector3 this]</h3>
+		<h3>[method:Vector3 crossVectors]( [page:Vector3 a], [page:Vector3 b] )</h3>
 		<div>
-		Normalizes this vector. Transforms this Vector into a Unit vector by dividing the vector by its length.
+		Sets this vector to [link:https://en.wikipedia.org/wiki/Cross_product cross product] of [page:Vector3 a] and [page:Vector3 b].
 		</div>
 
 		<h3>[method:Float distanceTo]( [page:Vector3 v] )</h3>
+		<div>Computes the distance from this vector to [page:Vector3 v].</div>
+
+		<h3>[method:Float distanceToManhattan]( [page:Vector3 v] )</h3>
 		<div>
-		Computes the distance from this vector to *v*.
+		Computes the [link:https://en.wikipedia.org/wiki/Taxicab_geometry Manhattan distance] from this vector to [page:Vector3 v].
 		</div>
 
 		<h3>[method:Float distanceToSquared]( [page:Vector3 v] )</h3>
 		<div>
-		Computes the squared distance from this vector to *v*.
+		Computes the squared distance from this vector to [page:Vector3 v]. If you are just
+		comparing the distance with another distance, you should compare the distance squared instead
+		as it is slightly more efficient to calculate.
 		</div>
 
-		<h3>[method:Float distanceToManhattan]( [page:Vector3 v] )</h3>
-		<div>
-		Computes the Manhattan distance from this vector to *v*.
-		</div>
+		<h3>[method:Vector3 divide]( [page:Vector3 v] )</h3>
+		<div>Divides this vector by [page:Vector3 v].</div>
 
-		<h3>[method:Vector3 setLength]( [page:Float l] ) [page:Vector3 this]</h3>
+		<h3>[method:Vector3 divideScalar]( [page:Float s] )</h3>
 		<div>
-		Normalizes this vector and multiplies it by *l*.
+		Divides this vector by scalar [page:Float s].<br />
+		Sets vector to *( 0, 0 )* if *[page:Float s] = 0*.
 		</div>
 
-		<h3>[method:Vector3 cross]( [page:Vector3 v] ) [page:Vector3 this]</h3>
+		<h3>[method:Float dot]( [page:Vector3 v] )</h3>
 		<div>
-		Sets this vector to cross product of itself and *v*.
+		Calculate the [link:https://en.wikipedia.org/wiki/Dot_product dot product] of this
+		vector and [page:Vector3 v].
 		</div>
 
-		<h3>[method:Vector3 crossVectors]( [page:Vector3 a], [page:Vector3 b] ) [page:Vector3 this]</h3>
-		<div>
-		Sets this vector to cross product of *a* and *b*.
-		</div>
+		<h3>[method:Boolean equals]( [page:Vector3 v] )</h3>
+		<div>Checks for strict equality of this vector and [page:Vector3 v].</div>
 
-		<h3>[method:Vector3 setFromMatrixPosition]( [page:Matrix4 m] ) [page:Vector3 this]</h3>
-		<div>
-		Sets this vector extracting position from matrix transform.
-		</div>
+		<h3>[method:Vector3 floor]()</h3>
+		<div>The components of the vector are rounded down to the nearest integer value.</div>
 
-		<h3>[method:Vector3 setFromMatrixScale]( [page:Matrix4 m] ) [page:Vector3 this]</h3>
+		<h3>[method:Vector3 fromArray]( [page:Array array], [page:Integer offset] )</h3>
 		<div>
-		Sets this vector extracting scale from matrix transform.
-		</div>
+		[page:Array array] - the source array.<br />
+		[page:Integer offset] - ( optional) offset into the array. Default is 0.<br /><br />
 
-		<h3>[method:Vector3 setFromSpherical]( [page:Spherical s] ) [page:Vector3 this]</h3>
-		<div>
-		Sets this vector from the spherical coordinates *s*.
+		Sets this vector's [page:.x x] value to be array[ offset + 0 ], [page:.y y] value to be array[ offset + 1 ]
+		and [page:.z z] value to be array[ offset + 2 ].
 		</div>
 
-		<h3>[method:Vector3 setFromCylindrical]( [page:Cylindrical c] ) [page:Vector3 this]</h3>
+		<h3>[method:Vector3 fromBufferAttribute]( [page:BufferAttribute attribute], [page:Integer index] )</h3>
 		<div>
-		Sets this vector from the cylindrical coordinates *c*.
-		</div>
+		[page:BufferAttribute attribute] - the source attribute.<br />
+		[page:Integer index] - index in the attribute.<br /><br />
 
-		<h3>[method:Vector3 clamp]( [page:Vector3 min], [page:Vector3 max] ) [page:Vector3 this]</h3>
-		<div>
-		min -- [page:Vector3] <br />
-		max -- [page:Vector3]
-		</div>
-		<div>
-		If this vector's x, y or z value is greater than the max vector's x, y or z value, it is replaced by the corresponding value. <br /><br />
-		If this vector's x, y or z value is less than the min vector's x, y or z value, it is replaced by the corresponding value.
+		Sets this vector's [page:.x x], [page:.y y] and [page:.z z] values from the [page:BufferAttribute attribute].
 		</div>
 
-		<h3>[method:Vector3 clampScalar]( [page:Float min], [page:Float max] ) [page:Vector3 this]</h3>
+		<h3>[method:Float getComponent]( [page:Integer index] )</h3>
 		<div>
-		min -- [page:Float] the minimum value the components will be clamped to <br />
-		max -- [page:Float] the maximum value the components will be clamped to
-		</div>
-		<div>
-		If this vector's x, y or z values are greater than the max value, they are replaced by the max value. <br /><br />
-		If this vector's x, y or z values are less than the min value, they are replaced by the min value.
-		</div>
+		[page:Integer index] - 0, 1 or 2.<br /><br />
 
-		<h3>[method:Vector3 clampLength]( [page:Float min], [page:Float max] ) [page:Vector3 this]</h3>
-		<div>
-		min -- [page:Float] the minimum value the length will be clamped to <br />
-		max -- [page:Float] the maximum value the length will be clamped to
-		</div>
-		<div>
-		If this vector's length is greater than the max value, it is replaced by the max value. <br /><br />
-		If this vector's length is less than the min value, it is replaced by the min value.
+		If index equals 0 returns the [page:.x x] value. <br />
+		If index equals 1 returns the [page:.y y] value. <br />
+		If index equals 2 returns the [page:.z z] value.
 		</div>
 
-		<h3>[method:Vector3 floor]() [page:Vector3 this]</h3>
-		<div>
-		The components of the vector are rounded downwards (towards negative infinity) to an integer value.
-		</div>
+		<h3>[method:Float length]()</h3>
+		<div>Computes the [link:https://en.wikipedia.org/wiki/Euclidean_distance Euclidean length]
+		(straight-line length) from (0, 0, 0) to (x, y, z).</div>
 
-		<h3>[method:Vector3 ceil]() [page:Vector3 this]</h3>
+		<h3>[method:Float lengthManhattan]()</h3>
 		<div>
-		The components of the vector are rounded upwards (towards positive infinity) to an integer value.
+		Computes the [link:http://en.wikipedia.org/wiki/Taxicab_geometry Manhattan length] of this vector.
 		</div>
 
-		<h3>[method:Vector3 round]() [page:Vector3 this]</h3>
+		<h3>[method:Float lengthSq]()</h3>
 		<div>
-		The components of the vector are rounded towards the nearest integer value.
+		Computes the square of the [link:https://en.wikipedia.org/wiki/Euclidean_distance Euclidean length]
+		(straight-line length) from (0, 0, 0) to (x, y, z). If you are 	comparing the lengths of
+		vectors, you should compare the length squared instead as it is slightly more efficient to calculate.
 		</div>
 
-		<h3>[method:Vector3 roundToZero]() [page:Vector3 this]</h3>
+		<h3>[method:Vector3 lerp]( [page:Vector3 v], [page:Float alpha] )</h3>
 		<div>
-		The components of the vector are rounded towards zero (up if negative, down if positive) to an integer value.
-		</div>
+		[page:Vector3 v] - [page:Vector3] to interpolate towards.<br />
+		alpha - interpolation factor in the closed interval [0, 1].<br /><br />
 
-		<h3>[method:Vector3 applyMatrix3]( [page:Matrix3 m] ) [page:Vector3 this]</h3>
-		<div>
-		m -- [page:Matrix3]
-		</div>
-		<div>
-		Multiplies this vector times a 3 x 3 matrix.
+		Linearly interpolate between this vector and [page:Vector3 v], where alpha is the
+		distance along the line - alpha = 0 will be this vector, and alpha = 1 will be [page:Vector3 v].
 		</div>
 
-		<h3>[method:Vector3 applyMatrix4]( [page:Matrix3 m] ) [page:Vector3 this]</h3>
-		<div>
-		m -- [page:Matrix4]
-		</div>
+		<h3>[method:Vector3 lerpVectors]( [page:Vector3 v1], [page:Vector3 v2], [page:Float alpha] )</h3>
 		<div>
-		Multiplies this vector by 4 x 3 subset of a Matrix4.
-		</div>
+		[page:Vector3 v1] - the starting [page:Vector3].<br />
+		[page:Vector3 v2] - [page:Vector3] to interpolate towards.<br />
+		[page:Float alpha] - interpolation factor in the closed interval [0, 1].<br /><br />
 
-		<h3>[method:Vector3 projectOnPlane]( [page:Vector3 planeNormal] ) [page:Vector3 this]</h3>
-		<div>
-		planeNormal -- [page:Vector3 planeNormal] A vector representing a plane normal.
-		</div>
-		<div>
-		Projects this vector onto a plane by subtracting this vector projected onto the plane's normal from this vector.
+		Sets this vector to be the vector linearly interpolated between [page:Vector3 v1] and
+		[page:Vector3 v2] where alpha is the distance along the line connecting the two vectors
+		- alpha = 0 will be [page:Vector3 v1], and alpha = 1 will be [page:Vector3 v2].
 		</div>
 
-		<h3>[method:Vector3 projectOnVector]( [page:Vector3] ) [page:Vector3 this]</h3>
-		<div>
-		vector -- [page:Vector3]
-		</div>
-		<div>
-		Projects this vector onto another vector.
-		</div>
+		<h3>[method:Vector3 negate]()</h3>
+		<div>Inverts this vector - i.e. sets x = -x, y = -y and z = -z.</div>
 
-		<h3>[method:Vector3 addScalar]( [page:Float] ) [page:Vector3 this]</h3>
-		<div>
-		s -- [page:Float]
-		</div>
+		<h3>[method:Vector3 normalize]()</h3>
 		<div>
-		Adds a s to this vector.
+		Convert this vector to a [link:https://en.wikipedia.org/wiki/Unit_vector unit vector] - that is, sets it equal to the vector with the same direction
+		as this one, but [page:.length length] 1.
 		</div>
 
-		<h3>[method:Vector3 divide]( [page:Vector3 v] ) [page:Vector3 this]</h3>
+		<h3>[method:Vector3 max]( [page:Vector3 v] )</h3>
 		<div>
-		v -- [page:Vector3]
-		</div>
-		<div>
-		Divides this vector by vector v.
+		If this vector's x, y or z value is less than [page:Vector3 v's] x, y or z value, replace
+		that value with the corresponding max value.
 		</div>
 
-		<h3>[method:Vector3 min]( [page:Vector3 v] ) [page:Vector3 this]</h3>
+		<h3>[method:Vector3 min]( [page:Vector3 v] )</h3>
 		<div>
-		v -- [page:Vector3]
-		</div>
-		<div>
-		If this vector's x, y, or z value is greater than vector v's x, y, or z value, that value is replaced by the corresponding vector v value.
+		If this vector's x, y or z value is greater than [page:Vector3 v's] x, y or z value, replace
+		that value with the corresponding min value.
 		</div>
 
-		<h3>[method:Vector3 max]( [page:Vector3 v] ) [page:Vector3 this]</h3>
-		<div>
-		v -- [page:Vector3]
-		</div>
-		<div>
-		If this vector's x, y, or z value is less than vector v's x, y, or z value, that value is replaced by the corresponding vector v value.
-		</div>
+		<h3>[method:Vector3 multiply]( [page:Vector3 v] )</h3>
+		<div>Multiplies this vector by [page:Vector3 v].</div>
 
-		<h3>[method:null setComponent]( [page:Integer index], [page:Float value] ) [page:Vector3 this]</h3>
-		<div>
-		index -- 0, 1, or 2 <br />
-		value -- [page:Float]
-		</div>
-		<div>
-		If index equals 0 the method sets this vector's x value to value <br />
-		If index equals 1 the method sets this vector's y value to value <br />
-		If index equals 2 the method sets this vector's z value to value
-		</div>
+		<h3>[method:Vector3 multiplyScalar]( [page:Float s] )</h3>
+		<div>Multiplies this vector by scalar [page:Float s].</div>
 
-		<h3>[method:Vector3 transformDirection]( [page:Matrix4 m] ) [page:Vector3 this]</h3>
-		<div>
-		m -- [page:Matrix4]
-		</div>
-		<div>
-		Transforms the direction of this vector by a matrix (a 3 x 3 subset of a Matrix4) and then normalizes the result.
-		</div>
+		<h3>[method:Vector3 multiplyVectors]( [page:Vector3 a], [page:Vector3 b] )</h3>
+		<div>Sets this vector equal to [page:Vector3 a] x [page:Vector3 b].</div>
 
-		<h3>[method:Vector3 multiplyVectors]( [page:Vector3 a], [page:Vector3 b] ) [page:Vector3 this]</h3>
-		<div>
-		a -- [page:Vector3] <br />
-		b -- [page:Vector3]
-		</div>
+		<h3>[method:Vector3 project]( [page:Camera camera] )</h3>
 		<div>
-		Sets this vector equal to the result of multiplying vector a by vector b.
-		</div>
+		[page:Camera camera] — camera to use in the projection.<br /><br />
 
-		<h3>[method:Float getComponent]( [page:Integer index] ) [page:Vector3 this]</h3>
-		<div>
-		index -- [page:Integer] 0, 1, or 2
+		[link:https://en.wikipedia.org/wiki/Vector_projection Projects] the vector with the camera.
 		</div>
-		<div>
 
-		Returns the value of the vector component x, y, or z by an index. <br /><br />
+		<h3>[method:Vector3 projectOnPlane]( [page:Vector3 planeNormal] )</h3>
+		<div>
+		[page:Vector3 planeNormal] - A vector representing a plane normal.<br /><br />
 
-		Index 0: x <br />
-		Index 1: y <br />
-		Index 2: z <br />
+		[link:https://en.wikipedia.org/wiki/Vector_projection Projects] this vector onto a plane by subtracting this vector projected onto the plane's
+		normal from this vector.
 		</div>
 
-		<h3>[method:Vector3 applyAxisAngle]( [page:Vector3 axis], [page:Float angle] ) [page:Vector3 this]</h3>
-		<div>
-		axis -- A normalized [page:Vector3] <br />
-		angle -- An angle in radians
-		</div>
-		<div>
-		Applies a rotation specified by an axis and an angle to this vector.
-		</div>
+		<h3>[method:Vector3 projectOnVector]( [page:Vector3] )</h3>
+		<div>[link:https://en.wikipedia.org/wiki/Vector_projection Projects] this vector onto another vector.</div>
 
-		<h3>[method:Vector3 lerp]( [page:Vector3 v], [page:Float alpha] ) [page:Vector3 this]</h3>
-		<div>
-		v -- [page:Vector3] <br />
-		alpha -- [page:Float] between 0 and 1.
-		</div>
+		<h3>[method:Vector3 reflect]( [page:Vector3 normal] )</h3>
 		<div>
-		Linear Interpolation between this vector and vector v, where alpha is the percent along the line.
-		</div>
+		[page:Vector3 normal] - the normal to the reflecting plane<br /><br />
 
-		<h3>[method:Vector3 lerpVectors]( [page:Vector3 v1], [page:Vector3 v2], [page:Float alpha] ) [page:Vector3 this]</h3>
-		<div>
-		v1 -- [page:Vector3] <br />
-		v2 -- [page:Vector3] <br />
-		alpha -- [page:Float] between 0 and 1.
-		</div>
-		<div>
-		Sets this vector to be the vector linearly interpolated between *v1* and *v2* with *alpha* factor.
+		Reflect the vector off of plane orthogonal to [page:Vector3 normal]. Normal is assumed to
+		have unit length.
 		</div>
 
-		<h3>[method:Float angleTo]( [page:Vector3 v] ) [page:Vector3 this]</h3>
-		<div>
-		v -- [page:Vector3]
-		</div>
-		<div>
-		Returns the angle between this vector and vector v in radians.
-		</div>
+		<h3>[method:Vector3 round]()</h3>
+		<div>The components of the vector are rounded to the nearest integer value.</div>
 
-		<h3>[method:Vector3 setFromMatrixColumn]( [page:Matrix4 matrix], [page:Integer index] ) [page:Vector3 this]</h3>
-		<div>
-		matrix -- [page:Matrix4]<br />
-		index -- 0, 1, 2, or 3
-		</div>
+		<h3>[method:Vector3 roundToZero]()</h3>
 		<div>
-		Sets this vector's x, y, and z equal to the column of the matrix specified by the index.
+		The components of the vector are rounded towards zero (up if negative, down if positive) to an integer value.
 		</div>
 
-		<h3>[method:Vector3 reflect]( [page:Vector3 normal] ) [page:Vector3 this]</h3>
-		<div>
-		normal -- [page:Vector3] the normal to the reflecting plane
-		</div>
-		<div>
-		Reflect incident vector off of plane orthogonal to normal. Normal is assumed to have unit length.
-		</div>
+		<h3>[method:Vector3 set]( [page:Float x], [page:Float y], [page:Float z] )</h3>
+		<div>Sets the [page:.x x], [page:.y y] and [page:.z z] components of this vector.</div>
 
-		<h3>[method:Vector3 multiply]( [page:Vector3 v] ) [page:Vector3 this]</h3>
+		<h3>[method:null setComponent]( [page:Integer index], [page:Float value] )</h3>
 		<div>
-		v -- [page:Vector3] <br />
-		</div>
-		<div>
-		Multiplies this vector by vector v.
-		</div>
+		[page:Integer index] - 0, 1 or 2.<br />
+		[page:Float value] - [page:Float]<br /><br />
 
-		<h3>[method:Vector3 applyProjection]( [page:Matrix4 m] ) [page:Vector3 this]</h3>
-		<div>
-		m -- [page:Matrix4] projection matrix.
-		</div>
-		<div>
-		Multiplies this vector and m, and divides by perspective.
+		If index equals 0 set [page:.x x] to [page:Float value].<br />
+		If index equals 1 set [page:.y y] to [page:Float value].<br />
+		If index equals 2 set [page:.z z] to [page:Float value]
 		</div>
 
-		<h3>[method:Vector3 applyEuler]( [page:Euler euler] ) [page:Vector3 this]</h3>
+		<h3>[method:Vector3 setFromCylindrical]( [page:Cylindrical c] )</h3>
 		<div>
-		euler -- [page:Euler]
-		</div>
-		<div>
-		Applies euler transform to this vector by converting the [page:Euler] object to a [page:Quaternion] and applying.
+		Sets this vector from the cylindrical coordinates [page:Cylindrical c].
 		</div>
 
-		<h3>[method:Vector3 applyQuaternion]( [page:Quaternion quaternion] ) [page:Vector3 this]</h3>
-		<div>
-		quaternion -- [page:Quaternion]
-		</div>
+		<h3>[method:Vector3 setFromMatrixColumn]( [page:Matrix4 matrix], [page:Integer index] )</h3>
 		<div>
-		Applies a [page:Quaternion] transform to this vector.
+		Sets this vector's [page:.x x], [page:.y y] and [page:.z z] equal to the column of
+		the [page:Matrix4 matrix] specified by the [page:Integer index].
 		</div>
 
-		<h3>[method:Vector3 project]( [page:Camera camera] ) [page:Vector3 this]</h3>
+		<h3>[method:Vector3 setFromMatrixPosition]( [page:Matrix4 m] )</h3>
 		<div>
-		[page:Camera camera] — camera to use in the projection.<br />
+		Sets this vector to the position elements of the
+		[link:https://en.wikipedia.org/wiki/Transformation_matrix transformation matrix] [page:Matrix4 m].
 		</div>
+
+		<h3>[method:Vector3 setFromMatrixScale]( [page:Matrix4 m] )</h3>
 		<div>
-		Projects the vector with the camera.
+		Sets this vector to the scale elements of the
+		[link:https://en.wikipedia.org/wiki/Transformation_matrix transformation matrix] [page:Matrix4 m].
 		</div>
 
-		<h3>[method:Vector3 unproject]( [page:Camera camera] ) [page:Vector3 this]</h3>
+		<h3>[method:Vector3 setFromSpherical]( [page:Spherical s] )</h3>
 		<div>
-		[page:Camera camera] — camera to use in the projection.<br />
+		Sets this vector from the spherical coordinates [page:Spherical s].
 		</div>
+
+		<h3>[method:Vector3 setLength]( [page:Float l] )</h3>
 		<div>
-		Unprojects the vector with the camera.
+		Set this vector to the vector with the same direction as this one, but [page:.length length]
+		[page:Float l].
 		</div>
 
-		<h3>[method:Boolean equals]( [page:Vector3 v] ) [page:Vector3 this]</h3>
+		<h3>[method:Vector3 setScalar]( [page:Float scalar] )</h3>
 		<div>
-		Checks for strict equality of this vector and *v*.
+		Set the [page:.x x], [page:.y y] and [page:.z z] values of this vector both equal to [page:Float scalar].
 		</div>
 
-		<h3>[method:Vector3 clone]() [page:Vector3 this]</h3>
+		<h3>[method:Vector3 setX]( [page:Float x] )</h3>
+		<div>Replace this vector's [page:.x x] value with [page:Float x].</div>
+
+		<h3>[method:Vector3 setY]( [page:Float y] )</h3>
+		<div>Replace this vector's [page:.y y] value with [page:Float y].</div>
+
+		<h3>[method:Vector3 setZ]( [page:Float z] )</h3>
+		<div>Replace this vector's [page:.z z] value with [page:Float z].</div>
+
+		<h3>[method:Vector3 sub]( [page:Vector3 v] )</h3>
+		<div>Subtracts [page:Vector3 v] from this vector.</div>
+
+		<h3>[method:Vector3 subScalar]( [page:Float s] )</h3>
+		<div>Subtracts [page:Float s]  from this vector's [page:.x x], [page:.y y] and [page:.z z] compnents.</div>
+
+		<h3>[method:Vector3 subVectors]( [page:Vector3 a], [page:Vector3 b] )</h3>
+		<div>Sets this vector to [page:Vector3 a] - [page:Vector3 b].</div>
+
+		<h3>[method:Array toArray]( [page:Array array], [page:Integer offset] )</h3>
 		<div>
-		Clones this vector.
+		[page:Array array] - (optional) array to store the vector to. If this is not provided
+		a new array will be created.<br />
+		[page:Integer offset] - (optional) optional offset into the array.<br /><br />
+
+		Returns an array [x, y, z], or copies x, y and z into the provided [page:Array array].
 		</div>
 
-		<h3>[method:Array toArray]( [page:Array array], [page:Integer offset] ) [page:Vector3 this]</h3>
+		<h3>[method:Vector3 transformDirection]( [page:Matrix4 m] )</h3>
 		<div>
-		array -- An optional array to store the vector to. <br />
-		offset -- An optional offset into the array.
+		Transforms the direction of this vector by a matrix (the upper left 3 x 3 subset of a [page:Matrix4 m])
+		and then [page:.normalize normalizes] the result.
 		</div>
+
+		<h3>[method:Vector3 unproject]( [page:Camera camera] )</h3>
 		<div>
-		Assigns this vector's x value to array[0]. <br />
-		Assigns this vector's y value to array[1]. <br />
-		Assigns this vector's z value to array[2]. <br />
-		Returns the created array.
+		[page:Camera camera] — camera to use in the projection.<br /><br />
+
+		[link:https://en.wikipedia.org/wiki/Vector_projection Unprojects] the vector with the
+		camera's projection matrix.
 		</div>
 
+
 		<h2>Source</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

Some files were not shown because too many files changed in this diff