• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            芳草春暉

            偶爾記錄自己思緒的地方...

             

            游戲中的曲線插值簡(jiǎn)單介紹

            我看了不少插值的方法,有的方法講得莫名其妙,一個(gè)程序,一些系數(shù),為什么這個(gè)系數(shù)是1,而不是0.5從來不講,讓人很懷疑其可用性。

            后來做刀光的時(shí)候,采集的刀光的點(diǎn)不夠圓滑,需要用到插值——想想自己的高數(shù)還沒有完全忘光,干脆自己推導(dǎo)一個(gè)得了。

            首先我們要明白什么叫做光滑的曲線,可以這么認(rèn)為,這個(gè)曲線是一個(gè)運(yùn)動(dòng)物體,在時(shí)間[0,1]內(nèi)運(yùn)動(dòng)的軌跡。而要求的光滑的曲線,就是要求物體運(yùn)動(dòng) 過程中沒有速度的突變。且要求不同的曲線段之間,速度也不能有突變。據(jù)此,我們可以大約知道插值一段曲線,需要指導(dǎo)曲線其實(shí)點(diǎn)的位置和速度,結(jié)束點(diǎn)的位置 和速度。由于有四個(gè)已知變量,顯然,用一個(gè)四次方程來描述這個(gè)曲線是再合適不過了。

            方程如下:

            f(t) = a * t ^ 3 + b * t ^ 2 + c * t + d               [0 <= t <= 1]

            對(duì)f(t)求導(dǎo),得到速度方程:

            f'(t) = 3 * a * t ^ 2 + 2 * b * t + c              [0 <= t <= 1]

            所以
            f(0) = d = x0(起始點(diǎn)位置)
            f(1) = a + b + c + d = x1(結(jié)束點(diǎn)位置)
            f'(0) = c = y0(起始點(diǎn)速度)
            f'(1) = 3 * a + 2 * b + c = y1(結(jié)束點(diǎn)速度)

            聯(lián)合上面四個(gè)式子可解得

            a = 2 * x0 - 2 * x1 + y0 + y1
            b = 3 * x1 - 3 * x0 - y1 - 2 * y0
            c = y0
            d = x0

            再利用

            f(t) = a * t ^ 3 + b * t ^ 2 + c * t + d               [0 <= t <= 1]

            就可以插值這斷曲線了

            當(dāng)然,事情還沒有完,通常情況下,我們得到的數(shù)據(jù)只有各個(gè)采樣點(diǎn)的位置,沒有速度。這個(gè)時(shí)候,速度怎么辦?我的解決辦法是,在有3個(gè)采樣點(diǎn)的時(shí)候(p0,p1,p2),計(jì)算出p1采樣點(diǎn)的速度,另外,再假設(shè)采樣時(shí)間間隔是均勻的,因此:

            v1 = (p2 - p0) * 0.5

            在有N個(gè)采樣的時(shí)候,特殊處理起始點(diǎn)和結(jié)束點(diǎn)的速度

            v0 = p1 - p0;

            vn = pn - p(n-1)

            這樣得到的曲線完全滿足平滑的要求,缺點(diǎn)是,曲線開始插值的時(shí)候要延遲一個(gè)采樣點(diǎn)的時(shí)間,有的時(shí)候,v0 速度很快,因此,會(huì)出現(xiàn)一條有縫隙刀光。針對(duì)當(dāng)前項(xiàng)目,我在第一次采樣的時(shí)候,將時(shí)間稍微往后加了0.001秒,按照當(dāng)前的運(yùn)動(dòng)趨勢(shì)多采樣了一次,從而消 除了這個(gè)縫隙。因?yàn)轭A(yù)測(cè)的運(yùn)動(dòng)時(shí)間很短,即使預(yù)測(cè)錯(cuò)誤,也不影響刀光的外觀。

            posted on 2010-04-27 20:45 CrazyDev 閱讀(824) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 圖形技術(shù)

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(1)

            隨筆檔案

            文章分類

            文章檔案

            C/C++

            CEGUI

            Friend Bog

            Game Industry

            Lua

            OGRE

            Other

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            亚洲AV无一区二区三区久久| 久久精品免费一区二区三区| 久久夜色精品国产www| 色8激情欧美成人久久综合电| 思思久久99热只有频精品66| 亚洲AV无码久久| 国产99久久久久久免费看 | 亚洲国产日韩欧美综合久久| 亚洲中文字幕无码久久2020| 久久九九亚洲精品| 一日本道伊人久久综合影| 久久男人Av资源网站无码软件| 国产成人久久777777| 久久精品国产亚洲AV香蕉| 国产免费久久久久久无码| 午夜精品久久久久久99热| 久久精品一区二区影院| 亚洲色大成网站www久久九| 国产成人久久精品二区三区| 国内精品久久久久伊人av| 伊人久久亚洲综合影院| 99久久成人18免费网站| 香蕉久久av一区二区三区| 一级女性全黄久久生活片免费| 丰满少妇人妻久久久久久| 久久久精品人妻一区二区三区蜜桃| 亚洲狠狠久久综合一区77777| 久久SE精品一区二区| 亚洲欧美国产日韩综合久久 | 人人狠狠综合88综合久久| 久久久久久亚洲精品成人 | 国产亚洲美女精品久久久久狼| 久久午夜免费视频| 日韩精品久久久久久久电影| 久久久久无码专区亚洲av| 久久亚洲国产午夜精品理论片| av午夜福利一片免费看久久| 97久久超碰国产精品旧版| 久久综合九色综合网站| 久久夜色精品国产噜噜亚洲AV| 久久天天躁夜夜躁狠狠躁2022|