javascript Spline代码

代码是通过网上一个winform代码中提取修改而来的。后转为javascript 版本。

/*
points = new Array();
points.push({x:1,y:2});
*/
function Spline(points) {
    var NewArrayFloat = function(n) {
        var arr = new Array(n);
        for (var i = 0; i < n; i++) {
            arr[i] = 0.0;
        }
        return arr;
    }
    /*
    C# (float[] sub, float[] diag, float[] sup, ref float[] b, int n)
    Js return float[] b;
    */
    var solveTridiag = function(sub, diag, sup, b, n) {
        /*
        solve linear system with tridiagonal n by n matrix a
        using Gaussian elimination *without* pivoting
        where   a(i,i-1) = sub[i]  for 2<=i<=n
        a(i,i)   = diag[i] for 1<=i<=n
        a(i,i+1) = sup[i]  for 1<=i<=n-1
        (the values sub[1], sup[n] are ignored)
        right hand side vector b[1:n] is overwritten with solution 
        NOTE: 1...n is used in all arrays, 0 is unused */
        var i;
        /*factorization and forward substitution */
        for (i = 2; i <= n; i++) {
            sub[i] = sub[i] / diag[i - 1];
            diag[i] = diag[i] - sub[i] * sup[i - 1];
            b[i] = b[i] - sub[i] * b[i - 1];
        }
        b[n] = b[n] / diag[n];
        for (i = n - 1; i >= 1; i--) {
            b[i] = (b[i] - sup[i] * b[i + 1]) / diag[i];
        }
        return b;
    }

    var resultPoint = new Array();
    var precision = 10;

    var np = points.length;
    var yCoords = NewArrayFloat(np);
    var xCoords = NewArrayFloat(np);
    var x;
    var y;
    var oldy = 0;
    var oldx = 0;

    var npp = np * precision;

    // draw a border around the canvas
    if (np > 0) {
        // draw the control points
        for (var i = 0; i < np; i++) {
            var p = { x: points[i].x, y: points[i].y };
            xCoords[i] = p.x;
            yCoords[i] = p.y;
        }

        if (np > 1) {
            var a = new NewArrayFloat(np);
            var x1;
            var x2;
            var h = new NewArrayFloat(np);
            for (var i = 1; i <= np - 1; i++) {
                h[i] = xCoords[i] - xCoords[i - 1];
            }
            if (np > 2) {
                var sub = NewArrayFloat(np - 1);
                var diag = NewArrayFloat(np - 1);
                var sup = NewArrayFloat(np - 1);

                for (var i = 1; i <= np - 2; i++) {
                    diag[i] = (h[i] + h[i + 1]) / 3;
                    sup[i] = h[i + 1] / 6;
                    sub[i] = h[i] / 6;
                    a[i] = (yCoords[i + 1] - yCoords[i]) / h[i + 1] - (yCoords[i] - yCoords[i - 1]) / h[i];
                }

                //C# CODE param [a] = [ref a];
                a = solveTridiag(sub, diag, sup, a, np - 2);
            }
            // note that a[0]=a[np-1]=0

            oldx = xCoords[0];
            oldy = yCoords[0];

            resultPoint.push({ x: oldx, y: oldy });

            for (var i = 1; i <= np - 1; i++) {
                // loop over intervals between nodes
                for (var j = 1; j <= precision; j++) {
                    x1 = (h[i] * j) / precision;
                    x2 = h[i] - x1;
                    y = ((-a[i - 1] / 6 * (x2 + h[i]) * x1 + yCoords[i - 1]) * x2 +
                        (-a[i] / 6 * (x1 + h[i]) * x2 + yCoords[i]) * x1) / h[i];
                    x = xCoords[i - 1] + x1;

                    resultPoint.push({ x: x, y: y });

                    oldx = x;
                    oldy = y;
                }
            }
        }
    }
    return resultPoint;
}

 

转载于:https://www.cnblogs.com/jgjgjg23/p/3460997.html

### 回答1: smartrf flash programmer是一款用于编程和调试无线电设备的软件。安装该软件需要按照以下步骤进行: 1. 首先,从TI官网下载smartrf flash programmer软件安装包。 2. 打开安装包,按照提示进行安装。在安装过程中,需要选择安装路径和安装组件。 3. 安装完成后,打开smartrf flash programmer软件。在软件界面中,可以选择设备类型、端口和波特率等参数。 4. 连接无线电设备到计算机,并按照设备连接方式进行设置。 5. 在smartrf flash programmer软件中,选择需要编程的程序或固件,并进行编程和调试操作。 总之,smartrf flash programmer是一款功能强大的无线电设备编程和调试软件,安装使用都比较简单。 ### 回答2: Smartrf Flash Programmer是一款用于编程TI公司的无线芯片的软件,使用它可以对TI公司的无线芯片进行特定的编程操作,包括各种参数的修改、程序的烧录等。该软件的安装较为繁琐,以下是安装Smartrf Flash Programmer的步骤: 第一步,前往TI公司官网下载Smartrf Flash Programmer软件安装包。在官网下载页面中,找到Smartrf Flash Programmer的入口,选择下载适合自己操作系统的软件安装包。 第二步,双击下载的安装包进行安装。在安装过程中,需要按照软件提示选择安装路径、选择需要安装的组件,设置快捷方式等。 第三步,启动Smartrf Flash Programmer软件。在第一次启动时,需要进行一些设置。首先,选择使用的接口类型,根据自己编程使用的无线芯片型号以及所用的编程工具选择相应的接口类型。同时,还需要设置目标设备的型号、厂商、Flash大小等参数。 第四步,进行编程操作。将需要编程的无线芯片连接上电脑,并进行相应的连接、校验等步骤,如出现错误提示,需要根据提示进行处理。在编程完成后,再次进行连接的检测以及程序的校验等操作,确保编程成功。 总体来说,Smartrf Flash Programmer是一款十分实用的无线芯片编程软件,通过以上步骤可以较为方便地安装使用。但是,在进行编程操作时,需要注意相关的细节和操作步骤,以确保编程等操作的顺利完成。 ### 回答3: Smartrf flash programmer是一款用于CCxxxx系列微控制器固件编程的软件。在使用该软件之前,我们需要先将其安装到电脑上。以下是安装步骤: 第一步:下载软件 在TI官网上下载Smartrf flash programmer。下载完成后解压缩压缩包,找到“setup.exe”文件。 第二步:安装软件 执行“setup.exe”文件,进入安装界面,在其中可以选择需要安装的组件。建议将所有组件都安装上,以便更好地支持微控制器的固件编程。安装过程中需要选择安装路径,这里建议直接使用默认路径即可。等待安装完成后,点击“完成”按钮退出安装程序。 第三步:连接设备 Smartrf flash programmer需要通过USB连接计算机和目标设备。所以在把编程器接入计算机前需要先安装驱动程序。根据不同的操作系统,需下载对应的驱动程序并完成安装。 第四步:启动软件 安装完成后,可以在桌面上找到软件图标双击启动。如果安装路径不在桌面上,也可以通过搜索或进入安装路径手动启动软件。 到这里,安装就已经完成了。接下来,您可以使用Smartrf flash programmer进行CCxxxx系列微控制器的固件编程了。需要注意的是,在使用Smartrf flash programmer之前,最好先阅读一下使用手册,了解其操作及相关注意事项,以确保成功完成固件编程工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值