javascript数学公式。找到反

时间:2016-02-12 06:42:02

标签: javascript algorithm math rotation

我有一些功能:

function calc_degree(a,b,c,cnt) {
    if(cnt==0) {
        return a;
    }
    b = b+c;
    a = a-b;
    return calc_degree(a,b,c,cnt-1);
}

不久,它的旋转度有些碾压,其转速平稳增加。函数返回轮换的汇总度数。例如:

calc_degree(0,0,1.5,6*1000/time_out);
//a - start angle; b-value of increasing ratoation degree every tick. 
//c-increase value; time_out - interval of rotation.

在此示例中,函数返回汇总旋转度6秒。 那么,如果我知道“a”和“cnt”,我如何计算“c”参数?我需要获得增加值,知道轮换的总轮次和时间/刻度。如果我的“a”值是2790,我需要每次减去“c”值,“a”的最后一个值必须为零。

2 个答案:

答案 0 :(得分:0)

使用索引和所有内容进行正确的递归:

b[n] = b[n-1] + c => b[n] = b[0] + n*c

a[n] = a[n-1] - b[n] = a[n-1] - b[0] - n*c

结果

a[n] = a[0] - n*b[0] - n*(n+1)/2 * c

这会向您展示如何c a[0]=b[0]=0获得a[n]=b[n]=0

要获得c=-b[0]/n,您首先需要c=-a[n]/(n*(n-1)/2),然后2*a[0] == (n-1)*b[0]。这只适用于开头<div class="row"> <div class="col-md-6"> <p class="input-group"> <input type="text" class="form-control" uib-datepicker-popup="{{format}}" ng-model="dt" is-open="popup1.opened" min-date="minDate" max-date="maxDate" datepicker-options="dateOptions" date-disabled="disabled(date, mode)" ng-required="true" close-text="Close" alt-input-formats="altInputFormats" /> <span class="input-group-btn"> <button type="button" class="btn btn-default" ng-click="open1()"><i class="glyphicon glyphicon-calendar"></i></button> </span> </p> </div>

答案 1 :(得分:0)

我还不能评论,所以我会在这里添加。 LutzL的回答是正确的。问题是如果你为问题添加了多个约束(在你的情况下要求a和b都转到0),你就会降低问题的自由度。在你的情况下,如果没有LutzL在开头所述的关系,你就不能顺利地进行归零(同时使用a和b 0)。你可以通过增加另一个平滑度来解决它(例如:c [n] = c [n-1] + d。)但是你不能使a,b和c倾向于0而没有额外的约束。