88 * @licence MIT License
99 */
1010
11- import { colors , geometries , maths , extrusions } from '@jscad/modeling'
11+ import { colorize , geom2 , vec3 , mat4 , extrudeFromSlices } from '@jscad/modeling'
1212import { cuboid , circle } from '@jscad/modeling'
1313import { translate } from '@jscad/modeling'
1414import { slice } from '@jscad/modeling'
@@ -36,45 +36,45 @@ const tube = (bezierControlPoints) => {
3636 // Create the initial slice
3737 const circ = circle ( { radius : 1 , segments : 32 } )
3838 const l = bezierControlPoints . length - 1
39- const circPoints = geometries . geom2 . toPoints ( circ )
39+ const circPoints = geom2 . toPoints ( circ )
4040 let tubeSlice = slice . fromVertices ( circPoints )
4141
4242 // Rotate it close to the direction we are going in. Rotation gets funky around 180˚
43- const bezierDelta = maths . vec3 . clone ( [
43+ const bezierDelta = vec3 . clone ( [
4444 bezierControlPoints [ l ] [ 0 ] - bezierControlPoints [ 0 ] [ 0 ] ,
4545 bezierControlPoints [ l ] [ 1 ] - bezierControlPoints [ 0 ] [ 1 ] ,
4646 bezierControlPoints [ l ] [ 2 ] - bezierControlPoints [ 0 ] [ 2 ]
4747 ] )
48- tubeSlice = slice . transform ( rotationMatrixFromVectors ( maths . vec3 . clone ( [ 0 , 0 , 1 ] ) , bezierDelta ) , tubeSlice )
48+ tubeSlice = slice . transform ( rotationMatrixFromVectors ( vec3 . clone ( [ 0 , 0 , 1 ] ) , bezierDelta ) , tubeSlice )
4949
5050 // Create the bezier function
5151 const tubeCurve = bezier . create ( bezierControlPoints )
5252
5353 // ...and extrude.
54- return extrusions . extrudeFromSlices ( {
54+ return extrudeFromSlices ( {
5555 numberOfSlices : 60 ,
5656 capStart : true ,
5757 capEnd : true ,
5858 callback : function ( progress , count , base ) {
5959 const positionArray = bezier . valueAt ( progress , tubeCurve )
6060 const tangentArray = bezier . tangentAt ( progress , tubeCurve )
61- const rotationMatrix = rotationMatrixFromVectors ( bezierDelta , maths . vec3 . clone ( tangentArray ) )
62- const translationMatrix = maths . mat4 . fromTranslation ( maths . mat4 . create ( ) , positionArray )
63- return slice . transform ( maths . mat4 . multiply ( translationMatrix , translationMatrix , rotationMatrix ) , base )
61+ const rotationMatrix = rotationMatrixFromVectors ( bezierDelta , vec3 . clone ( tangentArray ) )
62+ const translationMatrix = mat4 . fromTranslation ( mat4 . create ( ) , positionArray )
63+ return slice . transform ( mat4 . multiply ( translationMatrix , translationMatrix , rotationMatrix ) , base )
6464 }
6565 } , tubeSlice )
6666}
6767
6868const rotationMatrixFromVectors = ( srcVector , targetVector ) => {
6969 // From https://gist.github.com/kevinmoran/b45980723e53edeb8a5a43c49f134724
70- srcVector = maths . vec3 . normalize ( maths . vec3 . create ( ) , srcVector )
71- targetVector = maths . vec3 . normalize ( maths . vec3 . create ( ) , targetVector )
70+ srcVector = vec3 . normalize ( vec3 . create ( ) , srcVector )
71+ targetVector = vec3 . normalize ( vec3 . create ( ) , targetVector )
7272
73- const axis = maths . vec3 . cross ( maths . vec3 . create ( ) , targetVector , srcVector )
74- const cosA = maths . vec3 . dot ( targetVector , srcVector )
73+ const axis = vec3 . cross ( vec3 . create ( ) , targetVector , srcVector )
74+ const cosA = vec3 . dot ( targetVector , srcVector )
7575 const k = 1 / ( 1 + cosA )
7676
77- return maths . mat4 . fromValues (
77+ return mat4 . fromValues (
7878 ( axis [ 0 ] * axis [ 0 ] * k ) + cosA , ( axis [ 1 ] * axis [ 0 ] * k ) - axis [ 2 ] , ( axis [ 2 ] * axis [ 0 ] * k ) + axis [ 1 ] , 0 ,
7979 ( axis [ 0 ] * axis [ 1 ] * k ) + axis [ 2 ] , ( axis [ 1 ] * axis [ 1 ] * k ) + cosA , ( axis [ 2 ] * axis [ 1 ] * k ) - axis [ 0 ] , 0 ,
8080 ( axis [ 0 ] * axis [ 2 ] * k ) - axis [ 1 ] , ( axis [ 1 ] * axis [ 2 ] * k ) + axis [ 0 ] , ( axis [ 2 ] * axis [ 2 ] * k ) + cosA , 0 ,
@@ -84,6 +84,5 @@ const rotationMatrixFromVectors = (srcVector, targetVector) => {
8484
8585const box4x4 = ( translation , color ) => {
8686 const b = cuboid ( { size : [ 4 , 4 , 4 ] } )
87- return colors . colorize ( color , translate ( translation , b ) )
87+ return colorize ( color , translate ( translation , b ) )
8888}
89-
0 commit comments