js 组合和管道

function compose() {
    var fns = [].slice.call(arguments)
    return function (initialArg) {
        var res = initialArg
        for (var i = fns.length - 1; i > -1; i--) {
            res = fns[i](res)
        }
        return res
    }
}

function pipe() {
    var fns = [].slice.call(arguments)
    return function (initialAgr) {
        var res = initialAgr
        for (var i = 0; i < fns.length; i++) {
            res = fns[i](res)
        }
        return res
    }
}

var greet = function (name) { return 'hi:' + name }
var exclaim = function (statement) { return statement.toUpperCase() + '!' }
var transform = function (str) { return str.replace(/[dD]/, 'DDDDD') }
var welcome1 = compose(greet, exclaim, transform)
var welcome2 = pipe(greet, exclaim, transform)
console.log(welcome1('dot'))//hi:DDDDDOT!
console.log(welcome2('dolb'))//HI:DDDDDOLB!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在three.js中创建管道截面,可以使用THREE.TubeGeometry和THREE.PlaneGeometry。 首先,我们需要创建一个THREE.TubeGeometry对象,该对象需要以下参数: - path:管道路径,可以是一个THREE.Curve路径或一个THREE.SplineCurve3路径。 - radius:管道半径。 - segments:管道在周向上的分段数。 - radiusSegments:管道在径向上的分段数。 - closed:管道是否封闭。 接下来,我们需要创建一个THREE.PlaneGeometry对象,该对象需要以下参数: - width:平面的宽度。 - height:平面的高度。 - widthSegments:平面在水平方向上的分段数。 - heightSegments:平面在垂直方向上的分段数。 最后,我们需要使用THREE.ShapeGeometry将管道和平面组合在一起。 以下是一个示例代码,用于创建一个带有管道截面的THREE.Mesh对象: ``` // 创建管道路径 var path = new THREE.SplineCurve3([ new THREE.Vector3(0, 0, 0), new THREE.Vector3(0, 0, 10), new THREE.Vector3(10, 0, 10), new THREE.Vector3(10, 5, 10), new THREE.Vector3(20, 5, 0), new THREE.Vector3(20, 0, 0) ]); // 创建管道几何体 var tubeGeometry = new THREE.TubeGeometry(path, 64, 0.5, 32, true); // 创建平面几何体 var planeGeometry = new THREE.PlaneGeometry(20, 20, 32, 32); // 创建管道截面几何体 var shape = new THREE.Shape(); shape.moveTo(-10, -10); shape.lineTo(-10, 10); shape.lineTo(10, 10); shape.lineTo(10, -10); var hole = new THREE.Path(); hole.moveTo(-5, -5); hole.lineTo(-5, 5); hole.lineTo(5, 5); hole.lineTo(5, -5); shape.holes.push(hole); var shapeGeometry = new THREE.ShapeGeometry(shape); // 组合管道和平面 var tubeMesh = new THREE.Mesh(tubeGeometry, new THREE.MeshBasicMaterial({ color: 0xff0000 })); var planeMesh = new THREE.Mesh(planeGeometry, new THREE.MeshBasicMaterial({ color: 0x00ff00 })); var shapeMesh = new THREE.Mesh(shapeGeometry, new THREE.MeshBasicMaterial({ color: 0x0000ff })); // 将所有物体添加到场景中 scene.add(tubeMesh); scene.add(planeMesh); scene.add(shapeMesh); ``` 这将创建一个带有管道截面的场景,其中红色物体是管道,绿色物体是平面,蓝色物体是管道截面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值