日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

看看样条插值区间查找函数写的多细腻

發(fā)布時間:2023/12/31 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 看看样条插值区间查找函数写的多细腻 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? 優(yōu)秀的程序猿不僅要有深厚理論基礎,更要有縝密的思維, 一個簡單的函數(shù), 有非常多人都寫不好,為什么,

? ? 不是做不到,不是想不到,? 往往是因為懶而不愿意深入思考.? 有句話叫, 天下大事, 必做于細.


??? int Spline::findTimeInterval(Number time, int startIndex)

??? {
???????? int length = this->_times.size();
???????? if (time < this->_times[0] || time > this->_times[length - 1])
???????? {
????????????? throw? DeveloperError("time is out of range.");
???????? }

???????? if (startIndex < 0 || startIndex > length-1)
???????? {
???????????? throw DeveloperError("length is out of range.");
???????? }

????????? // Take advantage of temporal coherence by checking current, next and previous intervals
????????? // for containment of time.
????????? if (time >= this->_times[startIndex])
????????? {
????????????? if (startIndex + 1 < length && time < this->_times[startIndex + 1])
????????????? {
????????????????? return startIndex;
????????????? }
????????????? else if (startIndex + 2 < length && time < this->_times[startIndex + 2])
????????????? {
????????????????? return startIndex + 1;
????????????? }
????????? }
????????? else if (startIndex - 1 >= 0 && time >= this->_times[startIndex - 1])
????????? {
????????????? return startIndex - 1;
????????? }

????????? // The above failed so do a linear search. For the use cases so far, the
????????? // length of the list is less than 10. In the future, if there is a bottle neck,
????????? // it might be here.

????????? int i;
????????? if (time > this->_times[startIndex])
????????? {
????????????? for (i = startIndex; i < length - 1; ++i) {
????????????????? if (time >= this->_times[i] && time < this->_times[i + 1]) {
????????????????????? break;
????????????????? }
????????????? }
????????? } else {
????????????? for (i = startIndex - 1; i >= 0; --i) {
????????????????? if (time >= this->_times[i] && time < this->_times[i + 1]) {
????????????????????? break;
????????????????? }
????????????? }
????????? }

????????? if (i == length - 1) {
????????????? i = length - 2;
????????? }

????????? return i;
?? ?}

總結

以上是生活随笔為你收集整理的看看样条插值区间查找函数写的多细腻的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。