專利名稱:插補(bǔ)處理方法以及插補(bǔ)處理裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及對(duì)點(diǎn)群數(shù)據(jù)進(jìn)行插補(bǔ)或近似,來生成曲線或者曲面的擬合處理方法、擬合處理裝置、以及使CPU執(zhí)行該擬合處理的程序。
背景技術(shù):
在船舶、汽車、飛機(jī)等各種工業(yè)產(chǎn)品的機(jī)體上使用自由曲面,兼具功能性和美感這兩方面的優(yōu)點(diǎn),并且在家用電子產(chǎn)品或多種消費(fèi)品的外觀等具有創(chuàng)造性美感的外形的設(shè)計(jì)中使用自由曲面。
近年來,通過3D激光掃描可以高速并且容易地收集高密度的點(diǎn)群數(shù)據(jù),可以高精度地測定物體形狀。例如,在3D建模領(lǐng)域中,使用所謂的形狀的逆向工程的方法,即通過3D激光掃描測量設(shè)計(jì)者通過手工作業(yè)作成的實(shí)體模型,根據(jù)輸入到計(jì)算機(jī)中的點(diǎn)群數(shù)據(jù)或多邊形數(shù)據(jù),生成為了生產(chǎn)產(chǎn)品所需要的曲面數(shù)據(jù)等CAD數(shù)據(jù)。
一般通過實(shí)體模型或NURBS或B-Spline等曲面碎片,在計(jì)算機(jī)上表現(xiàn)3D模型。
已知在CAD/CAM中根據(jù)點(diǎn)群的位置信息對(duì)B-Spline、NURBS、細(xì)分等曲線或曲面進(jìn)行插補(bǔ)或近似的方法(非專利文獻(xiàn)1、專利文獻(xiàn)1)。在該插補(bǔ)或近似中,除了各點(diǎn)的位置信息之外還附加法線信息,由此可以提高設(shè)計(jì)的自由度,可以提高偏移曲線或曲面的近似精度。
非專利文獻(xiàn)1les Piegel,Wayne Tiller“The NURBS Book”P373~P376Springer-Verlag Berlin Heidenberg 1995 and 1997 專利文獻(xiàn)1特開2004-192209號(hào)公報(bào)
發(fā)明內(nèi)容
在包含法線的插補(bǔ)中,與僅對(duì)點(diǎn)群的位置進(jìn)行修正的情況相比,控制點(diǎn)的個(gè)數(shù)增加。例如,在為曲線時(shí),控制點(diǎn)的點(diǎn)數(shù)是插補(bǔ)點(diǎn)數(shù)的2倍,在為曲面時(shí),控制點(diǎn)的點(diǎn)數(shù)是插補(bǔ)點(diǎn)數(shù)的3倍。
并且,在為了指定法線而使用的切線矢量中,除了與方向有關(guān)的信息之外,還需要在各插補(bǔ)點(diǎn)指定大小的信息。因?yàn)橥ㄟ^人工反復(fù)進(jìn)行在各插補(bǔ)點(diǎn)的切線矢量大小的指定以及根據(jù)指定的大小得到的曲線或曲面的插補(bǔ)結(jié)果的評(píng)價(jià),所以該切線矢量大小的指定需要花費(fèi)插補(bǔ)處理的大量時(shí)間和負(fù)擔(dān)。
因此,在除了點(diǎn)群的位置信息之外通過附加法線信息進(jìn)行的插補(bǔ)處理中,由于控制點(diǎn)的增加和切線矢量的方向和大小的指定等,存在需要設(shè)定的數(shù)據(jù)量增加的問題。該數(shù)據(jù)量的增加除了引起運(yùn)算處理的處理時(shí)間增加之外,還有人工要進(jìn)行的處理也會(huì)變多的問題。
另外,控制點(diǎn)增加時(shí),有時(shí)會(huì)在曲線中產(chǎn)生不需要的振動(dòng)。
因此,本發(fā)明的目的在于解決上述現(xiàn)有的問題點(diǎn),在使用了點(diǎn)群的位置信息和法線信息的插補(bǔ)處理中,降低處理數(shù)據(jù)的數(shù)據(jù)量。
更詳細(xì)地說,目的在于在使用了點(diǎn)群的位置信息和法線信息的插補(bǔ)處理中,抑制控制點(diǎn)的增加,此外,目的還在于不需要指定切線矢量的大小。
本發(fā)明根據(jù)成為擬合對(duì)象的點(diǎn)群被給出的狀態(tài),求出對(duì)該點(diǎn)群進(jìn)行插補(bǔ)的曲線或曲面。首先,使成為擬合對(duì)象的點(diǎn)群為初始控制點(diǎn),使用該控制點(diǎn)群的控制點(diǎn)生成曲線或曲面。通過該控制點(diǎn)表示的曲線可以應(yīng)用B-Spline,此外,通過控制點(diǎn)表示的曲面可以應(yīng)用B-Spline曲面或細(xì)分曲面。
然后,使相同的點(diǎn)群為插補(bǔ)點(diǎn),通過使生成曲線或曲面時(shí)得到的控制點(diǎn)移動(dòng),使用生成的曲線或曲面對(duì)插補(bǔ)點(diǎn)進(jìn)行插補(bǔ)。以下將曲線或曲面表記為曲線·曲面來進(jìn)行說明。
在本發(fā)明的插補(bǔ)處理中,在使用生成的曲線·曲面對(duì)插補(bǔ)點(diǎn)進(jìn)行插補(bǔ)時(shí),使用構(gòu)成點(diǎn)群的插補(bǔ)點(diǎn)的位置信息和在各插補(bǔ)點(diǎn)設(shè)定的單位方向矢量的矢量信息,計(jì)算出使控制點(diǎn)移動(dòng)的移動(dòng)矢量,使控制點(diǎn)在該移動(dòng)矢量的移動(dòng)方向上移動(dòng)移動(dòng)量。
通過重復(fù)進(jìn)行上述的、對(duì)插補(bǔ)點(diǎn)進(jìn)行插補(bǔ)的曲線·曲面的生成以及控制點(diǎn)移動(dòng)的工序,求出對(duì)于點(diǎn)群的位置以及單位方向矢量擬合曲線·曲面的控制點(diǎn)位置。
在本發(fā)明中,關(guān)于在插補(bǔ)點(diǎn)決定的位置和方向,在位置誤差和角度誤差小于預(yù)定的大小之前,一直重復(fù)進(jìn)行第一工序、第二工序以及第三工序,所述第一工序求出與各點(diǎn)群的距離最短的曲線·曲面上的點(diǎn),所述第二工序求出具有曲線·曲面上的切線和所設(shè)定的單位方向矢量垂直的切線的點(diǎn),所述第三工序求出從第二工序求得的點(diǎn)向各點(diǎn)群的矢量使各控制點(diǎn)移動(dòng)該矢量。
關(guān)于位置誤差,在點(diǎn)群和曲線·曲面的距離滿足閾值之前,此外在小于閾值之前,一直重復(fù)進(jìn)行上述的第一、第二、第三工序來使其減小。此外,關(guān)于角度誤差,在曲線·曲面上的與點(diǎn)群的距離最短的點(diǎn)的法線矢量和在插補(bǔ)點(diǎn)設(shè)定的單位方向矢量的角度差滿足閾值之前,此外在小于閾值之前,一直重復(fù)進(jìn)行第一工序、第二工序以及第三工序來使其減少。由此,生成對(duì)點(diǎn)群進(jìn)行擬合的曲線·曲面。
本發(fā)明具有插補(bǔ)處理方法的方式和插補(bǔ)處理裝置的方式。
插補(bǔ)處理方法的方式是根據(jù)由控制點(diǎn)定義的曲線·曲面對(duì)點(diǎn)群進(jìn)行插補(bǔ)的插補(bǔ)處理方法,點(diǎn)群具有插補(bǔ)點(diǎn)的位置信息、以及決定在該插補(bǔ)點(diǎn)的曲線或曲面的方向的單位方向矢量的矢量信息。
插補(bǔ)處理包含第一插補(bǔ)工序、第二插補(bǔ)工序和第三插補(bǔ)工序,第一插補(bǔ)工序進(jìn)行在由控制點(diǎn)定義的曲線·曲面中,根據(jù)插補(bǔ)點(diǎn)的位置信息,求出從插補(bǔ)點(diǎn)落在曲線·曲面上的垂線的垂足來作為第一點(diǎn)的幾何算法的運(yùn)算,第二插補(bǔ)工序進(jìn)行根據(jù)矢量信息,求出與單位方向矢量垂直相交的曲線的切線或曲面的切平面的切點(diǎn)來作為第二點(diǎn)的幾何算法的運(yùn)算,第三插補(bǔ)工序進(jìn)行求出從第一點(diǎn)向插補(bǔ)點(diǎn)的矢量、從第二點(diǎn)向所述插補(bǔ)點(diǎn)的矢量、以及從第二點(diǎn)向第一點(diǎn)的矢量來作為移動(dòng)矢量,使用從所述三個(gè)移動(dòng)矢量選擇出的移動(dòng)矢量移動(dòng)定義曲線或曲面的控制點(diǎn)的位置,將移動(dòng)后的位置決定為新的曲線或曲面的控制點(diǎn)的位置的幾何算法的運(yùn)算。通過納入了幾何算法的運(yùn)算單元來執(zhí)行進(jìn)行這些各插補(bǔ)工序的運(yùn)算處理。
此外,在插補(bǔ)處理裝置的方式中,是通過由控制點(diǎn)定義的曲線或曲面對(duì)點(diǎn)群進(jìn)行插補(bǔ)的插補(bǔ)處理裝置,點(diǎn)群具有插補(bǔ)點(diǎn)的位置信息、以及在該插補(bǔ)點(diǎn)決定曲線或曲面的方向以及曲率的單位方向矢量的矢量信息。
作為進(jìn)行插補(bǔ)處理的結(jié)構(gòu),插補(bǔ)處理裝置具有第一~第三幾何運(yùn)算單元。
第一幾何運(yùn)算單元,通過在由控制點(diǎn)定義的曲線或曲面中,根據(jù)插補(bǔ)點(diǎn)的位置信息,求出從插補(bǔ)點(diǎn)下落到曲線上或曲面上的垂足來作為第一點(diǎn)的幾何算法,來進(jìn)行第一插補(bǔ)工序。
第二幾何運(yùn)算單元,通過根據(jù)矢量信息,求出與單位方向矢量垂直相交的曲線的切線或曲面的切平面的切點(diǎn)來作為第二點(diǎn)的幾何算法,來進(jìn)行第二插補(bǔ)工序。
第三幾何運(yùn)算單元,通過求出從第一點(diǎn)向插補(bǔ)點(diǎn)的矢量、從第二點(diǎn)向所述插補(bǔ)點(diǎn)的矢量、以及從第二點(diǎn)向第一點(diǎn)的矢量來作為移動(dòng)矢量,使用某一個(gè)移動(dòng)矢量移動(dòng)定義曲線或曲面的控制點(diǎn)的位置,將移動(dòng)后的位置決定為新的曲線或曲面的控制點(diǎn)的位置的幾何算法,來進(jìn)行第三插補(bǔ)工序。
在此,第一幾何運(yùn)算單元、第二幾何運(yùn)算單元以及第三幾何運(yùn)算單元,可以做成具備用于通過軟件執(zhí)行各幾何算法的CPU以及存儲(chǔ)裝置,或用于通過硬件執(zhí)行各幾何算法的電路的結(jié)構(gòu)。
在本發(fā)明中,決定曲線·曲面的方向或曲率的單位方向矢量可以僅具有方向的信息,不具有與大小有關(guān)的信息。此外,除了使該單位方向矢量為對(duì)插補(bǔ)點(diǎn)進(jìn)行插補(bǔ)的曲線或曲面上的插補(bǔ)點(diǎn)處的法線矢量之外,還可以為與法線矢量具有預(yù)定的角度關(guān)系的方向矢量。
插補(bǔ)處理的結(jié)束,一直重復(fù)到被判斷為曲線·曲面充分地對(duì)插補(bǔ)點(diǎn)進(jìn)行了插補(bǔ)的時(shí)刻?;谠撝貜?fù)的收斂,可以將距離和角度差作為指標(biāo)來進(jìn)行。
在以距離為指標(biāo)進(jìn)行重復(fù)時(shí),根據(jù)通過運(yùn)算處理得到的控制點(diǎn)求出新的曲線·曲面,把插補(bǔ)點(diǎn)與求出的曲線或曲面的距離和閾值進(jìn)行比較,在該距離滿足閾值之前,或者在小于閾值之前,一直重復(fù)第一插補(bǔ)工序、第二插補(bǔ)工序以及第三插補(bǔ)工序。
此外,在以角度為指標(biāo)進(jìn)行重復(fù)時(shí),根據(jù)通過運(yùn)算處理得到的控制點(diǎn)求出新的曲線·曲面,求出在各插補(bǔ)點(diǎn)設(shè)定的單位方向矢量和在第一插補(bǔ)工序中求出的成為垂足的第一點(diǎn)處的曲線或曲面的法線矢量所形成的角度差,將該兩矢量的角度差與閾值進(jìn)行比較,在角度差滿足閾值之前,或者在小于閾值之前,一直重復(fù)第一插補(bǔ)工序、第二插補(bǔ)工序以及第三插補(bǔ)工序。
上述的以距離為指標(biāo)的收斂和以角度差為指標(biāo)的收斂,除了各自單獨(dú)地進(jìn)行之外,還可以將雙方組合起來進(jìn)行。
此外,在本發(fā)明的插補(bǔ)處理中,當(dāng)首先在點(diǎn)群被給出的狀態(tài)下開始插補(bǔ)處理時(shí),在第一次進(jìn)行的各插補(bǔ)工序中,將所給出的點(diǎn)群的插補(bǔ)點(diǎn)作為初始控制點(diǎn)來生成曲線·曲面,通過進(jìn)行各幾何算法的運(yùn)算來生成控制點(diǎn)。然后,在第二次及以后進(jìn)行的插補(bǔ)工序中,把在插補(bǔ)工序中得到的控制點(diǎn)的位置作為新的控制點(diǎn)的位置,通過進(jìn)行各幾何算法的運(yùn)算來修正控制點(diǎn),重復(fù)以上的插補(bǔ)工序。
本發(fā)明的插補(bǔ)處理因?yàn)榫植康靥幚砀骺刂泣c(diǎn),所以在不需要線性系統(tǒng)本身的基礎(chǔ)上,可以僅通過幾何學(xué)的工序生成對(duì)點(diǎn)群進(jìn)行擬合的曲線·曲面。因此,根據(jù)本發(fā)明的插補(bǔ)處理,與現(xiàn)有方法相比,在為曲線時(shí)可以將定義曲線·曲面的控制點(diǎn)的數(shù)量減少到二分之一,在為曲面時(shí)可以將定義曲線·曲面的控制點(diǎn)的數(shù)量減少到三分之一。
此外,在本發(fā)明的插補(bǔ)處理中,在插補(bǔ)點(diǎn)設(shè)定的單位方向矢量作為矢量信息僅包含方向,而不需要有關(guān)大小的信息。在現(xiàn)有的使用切線矢量的處理中,需要一邊通過目視觀察曲線或曲面的形狀一邊逐次在曲線或曲面上的各點(diǎn)進(jìn)行切線矢量的大小的變更,來進(jìn)行擬合,需要較多的勞力和時(shí)間,但根據(jù)本發(fā)明,在從工序開始到結(jié)束的期間內(nèi),可以無需人工介入地進(jìn)行曲線·曲面的擬合。另外,在此所說的擬合假定為是包含插補(bǔ)和近似這兩方面。
如上所述,根據(jù)本發(fā)明,在使用點(diǎn)群的位置信息和法線信息的插補(bǔ)處理中,可以抑制控制點(diǎn)的增加,可以減低處理數(shù)據(jù)的處理量。
此外,在使用點(diǎn)群的位置信息和法線信息的插補(bǔ)處理中,不需要指定切線矢量的大小,可以使自動(dòng)插補(bǔ)變得容易。
此外,可以抑制伴隨控制點(diǎn)的增加而產(chǎn)生的、插補(bǔ)時(shí)的不必要的振動(dòng)。
圖1是用于說明本發(fā)明的插補(bǔ)處理的概要的概要圖。
圖2是用于說明本發(fā)明的插補(bǔ)處理的概要的流程圖。
圖3用于說明本發(fā)明的插補(bǔ)處理的第一、第二插補(bǔ)工序。
圖4用于說明本發(fā)明的插補(bǔ)處理的第三插補(bǔ)工序。
圖5是本發(fā)明的插補(bǔ)處理裝置的概要結(jié)構(gòu)圖。
圖6是用于說明由本發(fā)明的二維點(diǎn)群生成曲線的情形的流程圖。
圖7是用于說明由本發(fā)明的二維點(diǎn)群生成曲線的情形的控制點(diǎn)和曲線的概要圖。
圖8是用于說明由本發(fā)明的二維點(diǎn)群生成曲線的情形的控制點(diǎn)和曲線的概要圖。
圖9是用于說明由本發(fā)明的二維點(diǎn)群生成曲線的情形的控制點(diǎn)和曲線的概要圖。
圖10表示對(duì)本發(fā)明的二維點(diǎn)群進(jìn)行插補(bǔ)的曲線例子。
圖11將本發(fā)明的插補(bǔ)結(jié)果與現(xiàn)有方法的插補(bǔ)結(jié)果進(jìn)行比較。
圖12將本發(fā)明的插補(bǔ)結(jié)果與現(xiàn)有方法的插補(bǔ)結(jié)果進(jìn)行比較。
圖13是用于說明由三維點(diǎn)群生成曲面的情形的流程圖。
符號(hào)說明 1輸入單元、2存儲(chǔ)單元、2a數(shù)據(jù)存儲(chǔ)部、2b運(yùn)算工具程序存儲(chǔ)部、2c運(yùn)算處理程序存儲(chǔ)部、2d一次存儲(chǔ)部、2e運(yùn)算結(jié)果存儲(chǔ)部、3運(yùn)算單元、4顯示單元、5輸出單元
具體實(shí)施例方式 以下一邊參照附圖一邊對(duì)本發(fā)明的實(shí)施方式進(jìn)行詳細(xì)說明。以下,作為由控制點(diǎn)定義的曲線·曲面,主要說明B-Spline曲線·曲面,但本發(fā)明并不限于B-Spline曲線·曲面,關(guān)于使用控制點(diǎn)表現(xiàn)的細(xì)分曲面等曲線·曲面,也可以同樣地應(yīng)用。
圖1是用于說明本發(fā)明的插補(bǔ)處理的概要圖,圖2是用于說明本發(fā)明的插補(bǔ)處理的流程圖,圖3、圖4用于說明本發(fā)明的插補(bǔ)處理。此外,圖5是本發(fā)明的插補(bǔ)處理的概要結(jié)構(gòu)圖。此外,圖5是本發(fā)明的插補(bǔ)處理裝置的概要結(jié)構(gòu)圖。
圖1、圖2、圖3、圖4概要性地表示了給予包含位置信息以及單位方向矢量的矢量信息的點(diǎn)群Q,根據(jù)這些點(diǎn)群Q求出B-Spline曲線的順序。以下作為單位方向矢量說明法線矢量的例子。在單位方向矢量為法線矢量以外的矢量時(shí),通過相對(duì)于法線矢量設(shè)定預(yù)定的角度關(guān)系,由此可以確定單位方向矢量的方向。
此外,在此,將成為插補(bǔ)對(duì)象的點(diǎn)群簡單地稱為點(diǎn)群,把通過輸入對(duì)各點(diǎn)群給出的法線矢量簡單地稱為法線矢量。
在此主要說明曲線,但在曲面中也可以同樣地處理。
以下,使用圖1的概要圖和圖2的流程圖,說明根據(jù)所給出的點(diǎn)群Q生成B-Spline曲線·曲面的順序。
首先,將所給出的點(diǎn)群Q作成初始控制點(diǎn)P0。點(diǎn)群Q包含各點(diǎn)的位置信息和在各點(diǎn)設(shè)定的方向信息。方向信息是決定對(duì)點(diǎn)群進(jìn)行插補(bǔ)的曲線或曲面的方向或曲率的信息,可以通過單位方向矢量來表示。單位方向矢量可以僅具有方向的信息,而不具有大小的信息。除了使單位方向矢量為該點(diǎn)的法線矢量之外,例如還可以為相對(duì)于該法線矢量具有預(yù)定的角度關(guān)系的矢量。以下,作為單位方向矢量,說明法線矢量的例子。圖1中(S1)所示的部位的左方表示點(diǎn)群Q和在該點(diǎn)的法線矢量N*(在圖中N上表記為箭頭),右方表示以該點(diǎn)群Q為初始控制點(diǎn),通過直線連接這些初始控制點(diǎn)時(shí)的形狀(S1)。
在第一次的B-Spline曲線·曲面的生成中,因?yàn)闆]有設(shè)定控制點(diǎn),所以將所給出的點(diǎn)群作為初始控制點(diǎn),根據(jù)該初始控制點(diǎn)生成B-Spline曲線C0。在圖1中,附加了(S2)的箭頭表示根據(jù)連接初始控制點(diǎn)形成的形狀生成B-Spline曲線·曲面的狀態(tài)(S2)。
然后,通過插補(bǔ)處理移動(dòng)控制點(diǎn),形成更加忠實(shí)地對(duì)插補(bǔ)點(diǎn)進(jìn)行插補(bǔ)的B-Spline曲線·曲面。
在該插補(bǔ)處理中,根據(jù)B-Spline曲線·曲面上的點(diǎn)和插補(bǔ)點(diǎn)的關(guān)系求出移動(dòng)矢量,通過使用求出的移動(dòng)矢量移動(dòng)控制點(diǎn)的位置來進(jìn)行插補(bǔ)處理。更詳細(xì)地說,如后所述,通過三個(gè)插補(bǔ)工序(S3a)~(S3c)進(jìn)行插補(bǔ)處理。在圖1中,附加了(S3)的箭頭表示了通過插補(bǔ)工序求出了新的控制點(diǎn)的狀態(tài)(S3)。
在通過S3的插補(bǔ)處理移動(dòng)了控制點(diǎn)的位置后,根據(jù)移動(dòng)的控制點(diǎn)生成B-Spline曲線Cn。在圖1中,附加了(S4)的箭頭表示使用移動(dòng)后的控制點(diǎn),生成B-Spline曲線·曲面的狀態(tài)(S4)。
將生成的B-Spline曲線·曲面和點(diǎn)群Q進(jìn)行比較,在B-Spline曲線良好地對(duì)點(diǎn)群Q進(jìn)行插補(bǔ)之前,一直重復(fù)S3的插補(bǔ)處理。重復(fù)進(jìn)行該S3的插補(bǔ)處理,直到點(diǎn)群Q的各點(diǎn)與B-Spline曲線·曲面上與該點(diǎn)群Q對(duì)應(yīng)的點(diǎn)之間的距離誤差、對(duì)點(diǎn)群Q的各點(diǎn)賦予的法線矢量和在B-Spline曲線·曲面上在該點(diǎn)群Q對(duì)應(yīng)的點(diǎn)的法線的角度差收斂。通過在距離誤差、法線的角度差滿足閾值之前一直重復(fù)進(jìn)行S3的工序,由此來進(jìn)行收斂。
關(guān)于上述的B-Spline曲線·曲面的收斂,除了使用以點(diǎn)之間的距離誤差作為收斂條件和以法線之間的角度差作為收斂條件的這兩個(gè)收斂條件來進(jìn)行之外,還可以使用某一方的收斂條件來進(jìn)行(S5)。
以下說明以上的S3的插補(bǔ)處理。S3的插補(bǔ)處理具備三個(gè)插補(bǔ)工序S3a、S3b和S3c。
在第一插補(bǔ)工序S3a中,求出使垂線從插補(bǔ)點(diǎn)向B-Spline曲線·曲面上下落時(shí)的垂足。可以將該垂足決定為在B-Spline曲線·曲面上與插補(bǔ)點(diǎn)的距離為最短的最短距離點(diǎn)。
在第二插補(bǔ)工序S3b中,在對(duì)各個(gè)插補(bǔ)點(diǎn)所給出的法線矢量和B-Spline曲線·曲面上的切線或切平面垂直相交時(shí),求出具有這樣的切線或切平面的曲線·曲面上的切點(diǎn)。
在第三插補(bǔ)工序S3c中,求出在第一插補(bǔ)工序以及第二插補(bǔ)工序中求出的B-Spline曲線·曲面上的點(diǎn)和插補(bǔ)點(diǎn)之間形成的矢量,將求出的矢量作為移動(dòng)矢量來移動(dòng)控制點(diǎn)的位置,設(shè)定新的控制點(diǎn)。
以下使用圖3、4說明S3的插補(bǔ)處理。
圖3(a)用于說明第一插補(bǔ)工序S3a的工序,圖3(b)用于說明第二插補(bǔ)工序S3b的工序,圖4用于說明第三插補(bǔ)工序S3c的工序。
此外,在圖3、4中,通過Pa表示位移前的控制點(diǎn),通過Pb表示位移后的控制點(diǎn),通過Fn表示在曲線Cn上求出的近旁點(diǎn)。此外,將法線矢量表示為N*(在圖中的N上表記為箭頭),通過Gn表示具有與法線矢量N*垂直相交的切線的曲線Cn上的點(diǎn)。此外,以下使用B-Spline曲線進(jìn)行說明。
在圖3(a)所示的第一插補(bǔ)工序S3a中,在第一次的插補(bǔ)工序中,控制點(diǎn)Pa是與所給出的點(diǎn)群的插補(bǔ)點(diǎn)Q相同位置的點(diǎn),在第二次及其以后的插補(bǔ)工序中,控制點(diǎn)Pa是通過上次的插補(bǔ)工序位置被移動(dòng)后的控制點(diǎn)。
在第一次的插補(bǔ)工序S3a中,在通過控制點(diǎn)定義的B-Spline曲線Cn中,根據(jù)插補(bǔ)點(diǎn)的位置信息,通過幾何算法的運(yùn)算處理求出從插補(bǔ)點(diǎn)Q下落到B-Spline曲線Cn上的垂線的垂足,將其作為第一點(diǎn)Fn。
然后,在圖3(b)所示的第二插補(bǔ)工序S3b中,對(duì)各點(diǎn)群Q給出了法線矢量N*。
在第二插補(bǔ)工序S3b中,在Fn的附近求出具有與法線矢量N*垂直相交的切線的曲線上的切點(diǎn),作為第二點(diǎn)Gn。在為曲面時(shí),將與法線矢量垂直相交的曲面的切平面的切點(diǎn)作為第二點(diǎn)Gn,通過幾何算法的運(yùn)算來求出。
圖4表示了在第三插補(bǔ)工序S3c進(jìn)行的控制點(diǎn)的移動(dòng)方式的三個(gè)例子。
在第三插補(bǔ)工序S3c中,求出在第一插補(bǔ)工序中求出的第一點(diǎn)Fn、在第二插補(bǔ)工序中求出的第二點(diǎn)Gn、以及插補(bǔ)點(diǎn)Q之間形成的矢量,將求出的矢量作為移動(dòng)矢量使控制點(diǎn)的位置移動(dòng)來設(shè)定新的控制點(diǎn)。
圖4(a)表示把從第二點(diǎn)Gn向插補(bǔ)點(diǎn)Q的矢量作為移動(dòng)矢量使控制點(diǎn)P移動(dòng)的移動(dòng)方式,圖4(b)表示把從第二點(diǎn)Gn向第一點(diǎn)Fn的矢量作為移動(dòng)矢量使控制點(diǎn)P移動(dòng)的移動(dòng)方式,圖4(c)表示把從第一點(diǎn)Fn向插補(bǔ)點(diǎn)Q的矢量作為移動(dòng)矢量使控制點(diǎn)P移動(dòng)的移動(dòng)方式。
在第三插補(bǔ)工序S3c中,使用這些各個(gè)移動(dòng)方式的移動(dòng)矢量中的某一個(gè)來使控制點(diǎn)移動(dòng),由此求出新的控制點(diǎn)。該第三插補(bǔ)工序可以通過幾何算法的運(yùn)算來執(zhí)行,該運(yùn)算處理可以通過納入了幾何算法的運(yùn)算單元來執(zhí)行。
然后,在移動(dòng)控制點(diǎn)Pa的位置來在新的位置求出控制點(diǎn)Pb的第三插補(bǔ)工序中,在圖4(a)所示的移動(dòng)形式中,求出從在第二插補(bǔ)工序S3b的工序中求出的第二點(diǎn)Gn向?qū)?yīng)的插補(bǔ)點(diǎn)Q的矢量A(用圖中的虛線表示),將該矢量A作為移動(dòng)矢量來移動(dòng)控制點(diǎn)Pa,求出新的控制點(diǎn)Pb。
在圖4(b)所述的移動(dòng)方式中,求出從在第二插補(bǔ)工序S3b的工序中求出的第二點(diǎn)Gn向在第一插補(bǔ)處理S3a的工序中求出的第一點(diǎn)Fn的矢量B(用圖中的虛線表示),將該矢量B作為移動(dòng)矢量來移動(dòng)控制點(diǎn)Pa,求出新的控制點(diǎn)Pb。
在圖4(c)所示的移動(dòng)形式中,求出從在第一插補(bǔ)工序S3a的工序中求出的第一點(diǎn)Fn向?qū)?yīng)的插補(bǔ)點(diǎn)Q的矢量C(用圖中的虛線表示),將該矢量C作為移動(dòng)矢量來移動(dòng)控制點(diǎn)Pa,求出新的控制點(diǎn)Pb。
從這三個(gè)移動(dòng)方式中選擇一個(gè)來移動(dòng)控制點(diǎn),決定新的控制點(diǎn)的位置。該控制點(diǎn)移動(dòng)位置的選擇,可以按如下方式進(jìn)行。
如圖4(a)所示,在重復(fù)進(jìn)行位移到移動(dòng)了從第二點(diǎn)Gn向?qū)?yīng)的插補(bǔ)點(diǎn)Q的矢量的位置的插補(bǔ)處理時(shí),當(dāng)插補(bǔ)點(diǎn)Q和曲線Cn的距離誤差變小時(shí),存在即使移動(dòng)控制點(diǎn)Pa,法線矢量的角度差也不會(huì)變小的情形。
在成為這樣的狀態(tài)時(shí),如圖4(b)所示,通過位移到使控制點(diǎn)Pa移動(dòng)了從第二點(diǎn)Gn向第一點(diǎn)Fn的矢量的位置,可以減小角度差。
此外,相反地,在角度差充分地變小,且即便使控制點(diǎn)P位移距離誤差也不會(huì)變小的情況下,通過使控制點(diǎn)P位移到移動(dòng)了從第一點(diǎn)Fn向插補(bǔ)點(diǎn)Q的矢量的位置,可以減小距離誤差??梢愿鶕?jù)狀況選擇這些各個(gè)移動(dòng)方式。
重復(fù)進(jìn)行該第一插補(bǔ)工序S3a、第二插補(bǔ)工序S3b以及第三插補(bǔ)工序S3c來進(jìn)行插補(bǔ)處理S3。通過使用在該第三工序中得到的控制點(diǎn)Pb,由上述的S4的工序生成B-Spline曲線·曲面。
在S5的工序中,將生成的B-Spline曲線·曲面和點(diǎn)群的距離以及法線矢量進(jìn)行比較,直到對(duì)應(yīng)的點(diǎn)之間的距離誤差、對(duì)應(yīng)的法線矢量的角度差收斂之前,一直重復(fù)進(jìn)行S3的插補(bǔ)工序。該收斂,一直重復(fù)到距離誤差和法線矢量的角度差分別滿足預(yù)先設(shè)定的閾值,或者在小于閾值。
通過插補(bǔ)處理距離誤差以及法線矢量的角度差收斂時(shí)得到的B-Spline曲線·曲面,成為在插補(bǔ)點(diǎn)的位置進(jìn)行插補(bǔ),并且在插補(bǔ)點(diǎn)的法線矢量變得與設(shè)定的法線矢量相同的曲線·曲面。
圖5表示使計(jì)算機(jī)執(zhí)行存儲(chǔ)有本發(fā)明的插補(bǔ)處理的軟件的程序時(shí)的一構(gòu)成例。
輸入單元1輸入點(diǎn)群Q、法線矢量N*的數(shù)據(jù),并存儲(chǔ)在存儲(chǔ)單元2的數(shù)據(jù)存儲(chǔ)部2a中。除了數(shù)據(jù)存儲(chǔ)部2a之外,存儲(chǔ)單元2還具備存儲(chǔ)用于進(jìn)行微分幾何學(xué)運(yùn)算的運(yùn)算工具程序的運(yùn)算工具程序存儲(chǔ)部2b;除了插補(bǔ)處理的微分幾何學(xué)運(yùn)算之外,還存儲(chǔ)B-Spline曲線·曲面生成處理等運(yùn)算處理的程序的運(yùn)算處理程序存儲(chǔ)部2c;臨時(shí)存儲(chǔ)中途運(yùn)算結(jié)果等的一次存儲(chǔ)部2d;存儲(chǔ)通過插補(bǔ)處理等得到的曲面的運(yùn)算結(jié)果的運(yùn)算結(jié)果存儲(chǔ)部2e等。
運(yùn)算單元3使用在數(shù)據(jù)存儲(chǔ)部2a中存儲(chǔ)的點(diǎn)群Q的數(shù)據(jù),按照在運(yùn)算處理程序存儲(chǔ)部2c中存儲(chǔ)的程序的運(yùn)算順序,并且從運(yùn)算工序程序存儲(chǔ)部2b中逐次讀出通過該程序指定的運(yùn)算工具的程序,來進(jìn)行運(yùn)算處理。
在運(yùn)算結(jié)果存儲(chǔ)部2e中存儲(chǔ)的運(yùn)算結(jié)果可以讀出并顯示在顯示單元4上,或者可以輸出給輸出單元5。輸出單元5可以為在記錄介質(zhì)中記錄運(yùn)算結(jié)果的記錄裝置,例如可以為加工裝置等的、使用運(yùn)算結(jié)果執(zhí)行預(yù)定動(dòng)作的外部裝置。
上述進(jìn)行軟件處理的結(jié)構(gòu)可以適用于專用的軟件處理裝置或通常的個(gè)人計(jì)算機(jī)。
此外,在上述結(jié)構(gòu)中,通過使用電路來構(gòu)成由包含存儲(chǔ)單元的運(yùn)算單元執(zhí)行的功能,還可以通過硬件來執(zhí)行。
然后,關(guān)于本發(fā)明的插補(bǔ)處理的詳細(xì)內(nèi)容,說明根據(jù)二維的點(diǎn)群(包含位置、法線信息)生成B-Spline曲線的情形和根據(jù)三維的點(diǎn)群(包含位置、法線信息)生成B-Spline曲面的情形。
以下首先使用圖6的流程圖、圖7~9的說明控制點(diǎn)和曲線的關(guān)系的概要圖以及圖10~12的曲線插補(bǔ)例子的圖,說明根據(jù)二維的點(diǎn)群(包含位置、法線信息)生成B-Spline曲線的情形,然后使用圖13的流程圖說明根據(jù)三維的點(diǎn)群(包含位置、法線信息)生成B-Spline曲面的情形。
首先說明根據(jù)二維的點(diǎn)群(包含位置、法線信息)生成B-Spline曲線的情形。以下的流程為一個(gè)例子,只要是執(zhí)行本發(fā)明的第一插補(bǔ)工序、第二插補(bǔ)工序以及第三插補(bǔ)工序的工序以及順序,還可以通過其他的流程來構(gòu)成。
取得二維的點(diǎn)群數(shù)據(jù)(位置、法線信息)(S11),將點(diǎn)群的位置作為Qi進(jìn)行存儲(chǔ),將法線矢量作為N*進(jìn)行存儲(chǔ)(S12)。圖7(a)表示S12的狀態(tài)。將得到的插補(bǔ)點(diǎn)Qi作為初始控制點(diǎn)P0i進(jìn)行存儲(chǔ)(S13)。
根據(jù)控制點(diǎn)Pk-1i生成B-Spline曲線Ck-1。在此,上標(biāo)文字K表示插補(bǔ)處理的次數(shù)。在第一次中,因?yàn)闆]有設(shè)定控制點(diǎn)P,所以將所給出的插補(bǔ)點(diǎn)Qi作為初始控制點(diǎn)P0i,使用該初始控制點(diǎn)P0i生成B-Spline曲線·曲面。圖7(b)表示使用初始控制點(diǎn)P0i生成了曲線·曲面的狀態(tài)(S14)。
以下,通過重復(fù)進(jìn)行S15、S16所示的第一插補(bǔ)工序、S17、S18所示的第二插補(bǔ)工序以及S21~S23所示的第三插補(bǔ)工序中的某一個(gè)工序,來生成關(guān)于位置以及法線矢量對(duì)點(diǎn)群進(jìn)行插補(bǔ)的B-Spline曲線。
在第一插補(bǔ)工序中,將垂線從插補(bǔ)點(diǎn)Q下落到曲線C上,求出該垂線的垂足,將其作為第一點(diǎn)Fki。在此,落下垂線的曲線C是初次根據(jù)在S13的工序中得到的初始控制點(diǎn)P0生成的曲線C0。在第二次及其以后,是根據(jù)在S21~S23的某一個(gè)工序中位移后的控制點(diǎn)Pki生成的曲線CK(S15)。
求出插補(bǔ)點(diǎn)Qi和在S14中求出的作為垂線的垂足的第一點(diǎn)Fki的距離∥Qi-Fki∥(=Δd)??梢酝ㄟ^微分幾何學(xué)運(yùn)算進(jìn)行求出垂線以及距離的運(yùn)算。圖7(c)表示初次的第一插補(bǔ)工序S15、S16的狀態(tài)(S16)。
然后,在第二插補(bǔ)工序中,求出在各插補(bǔ)點(diǎn)Q被給出的法線矢量Ni*與在垂線的垂足的第一點(diǎn)Fki處的曲線C的法線矢量的角度差Δθ(S17),求出與切線相切的曲線上的切點(diǎn)來作為第二Gki,該切線與法線矢量Ni*垂直相交??梢酝ㄟ^微分幾何學(xué)運(yùn)算來求出角度差以及與法線矢量垂直相交的切線與曲線相切的切點(diǎn)。圖7(d)表示初次的插補(bǔ)工序S18的狀態(tài)。
然后,在第三插補(bǔ)工序中,根據(jù)在S16中求出的距離Δd和在S18中求出的角度差Δθ,從S22~S24的三個(gè)插補(bǔ)工序中選擇一個(gè)插補(bǔ)工序來執(zhí)行。
在插補(bǔ)點(diǎn)和曲線的距離誤差Δd以及法線矢量的角度差Δθ都不滿足閾值時(shí)(S19、S21),將定義了當(dāng)前曲線的控制點(diǎn)Pki的位置位移從在S18中求出的曲線上的第二點(diǎn)Gki向插補(bǔ)點(diǎn)Qi的矢量A的方向以及大小,將位移后的位置作為新的控制點(diǎn)Pki的位置。圖8(a)表示了基于該修正工序的移動(dòng)狀態(tài)(S22)。
在插補(bǔ)點(diǎn)和曲線的距離誤差Δd滿足閾值(S19),但法線矢量的角度差Δθ不滿足閾值的情況下(S20),將定義了當(dāng)前曲線的控制點(diǎn)Pki的位置位移從在S18中求出的曲線上的第二點(diǎn)Gki向在S15中求出的垂線的垂足的第一點(diǎn)Fki的矢量B的方向以及大小,將位移后的位置作為新的控制點(diǎn)Pki的位置。圖8(b)表示了基于該修正工序的移動(dòng)狀態(tài)(S24)。
在插補(bǔ)點(diǎn)和曲線的距離誤差Δd不滿足閾值(S19),但法線矢量的角度差Δθ滿足閾值的情況下(S21),將定義了當(dāng)前曲線的控制點(diǎn)Pki的位置位移從S15中求出的垂線的垂足、即第一點(diǎn)Fki向插補(bǔ)點(diǎn)Qi的矢量C的方向以及大小,將位移后的位置作為新的控制點(diǎn)Pki的位置。圖8(c)表示了基于該修正工序的移動(dòng)狀態(tài)(S23)。
可以通過幾何學(xué)運(yùn)算來進(jìn)行使控制點(diǎn)位移的運(yùn)算。圖8(a)表示初次的插補(bǔ)處理中的S21的狀態(tài)。圖8(b)表示初次的插補(bǔ)處理中的S22的狀態(tài),圖8(c)表示初次的插補(bǔ)處理中的S23的狀態(tài)。
此外,圖9(a)、(c)表示了通過第二次及其以后的插補(bǔ)處理S14生成了B-Spline曲線C(1)、C(2)的狀態(tài)。此外,圖9(b)表示了通過第二次及其以后的插補(bǔ)處理的S21使控制點(diǎn)(P1)移動(dòng)到控制點(diǎn)(P2)的狀態(tài)。
在S14中求出的曲線C與插補(bǔ)點(diǎn)Qi的距離誤差Δd、法線矢量Ni*與在垂線垂足的第一點(diǎn)Fki處的曲線C的法線矢量的角度差Δθ滿足各自的閾值之前,一直重復(fù)進(jìn)行S14~S23的工序。距離誤差Δd的閾值相當(dāng)于對(duì)于對(duì)點(diǎn)群進(jìn)行插補(bǔ)的曲線可以允許的允許距離誤差,角度差Δθ的閾值相當(dāng)于對(duì)于法線的角度差可以允許的允許法線矢量角度差。
因此,通過在S19、S20、s21的比較工序中,確認(rèn)距離、法線矢量的角度差滿足閾值,曲線C對(duì)于給出點(diǎn)群的位置以及法線矢量,在允許誤差范圍內(nèi)進(jìn)行插補(bǔ)。
圖10是二維(平面)的曲線插補(bǔ)的一例,從Bowditch曲線和Trochoid曲線中提取點(diǎn)群以及在該點(diǎn)的法線矢量,關(guān)于點(diǎn)群的位置以及法線矢量進(jìn)行了插補(bǔ)。在圖10(a)、(c)中表示了成為插補(bǔ)對(duì)象的點(diǎn)群的各點(diǎn)、以及通過線段表示的法線矢量。在圖10(b)(d)中表示了根據(jù)本發(fā)明,通過三維的B-Spline曲線,關(guān)于位置以及法線矢量分別對(duì)點(diǎn)群進(jìn)行了插補(bǔ)后的結(jié)果。
在表1中表示采用本發(fā)明的方法的計(jì)算結(jié)果,在表2中表示僅僅關(guān)于點(diǎn)的位置通過現(xiàn)有的方法(非專利文獻(xiàn)1)進(jìn)行插補(bǔ)后的結(jié)果。在此,關(guān)于距離誤差,以各模型中的bounding box的對(duì)角線為基準(zhǔn)通過百分比來表示。當(dāng)觀察關(guān)于距離誤差的結(jié)果時(shí),可知幾乎成為零。當(dāng)觀察關(guān)于角度差的結(jié)果時(shí),在使用本發(fā)明的方法的情況下,最大角度差為Bowditch曲線,為0.024°左右,Trochoid曲線成為0.005°左右,與此相對(duì),在采用現(xiàn)有方法時(shí),在Bowditch曲線中為2.0°左右,在Trochoid曲線中為0.14°左右??芍景l(fā)明可以將最大角度差抑制為較小。在表2中,*標(biāo)記表示計(jì)算時(shí)間不滿0.01秒。
(表1) (表2) 然后,在圖11(a)中表示進(jìn)行了本發(fā)明的插補(bǔ)的曲線的曲率線圖,圖11(b)表示通過現(xiàn)有的方法(非專利文獻(xiàn)1)進(jìn)行了插補(bǔ)的曲線的曲率線圖,在圖11(c)中表示通過現(xiàn)有的方法(厄米特(Hermitian)插補(bǔ))進(jìn)行了插補(bǔ)的曲線的曲率線圖。
在現(xiàn)有的方法(非專利文獻(xiàn)1)中,在曲線中需要使控制點(diǎn)大約為插補(bǔ)點(diǎn)的兩倍,在曲面中需要使控制點(diǎn)大約為插補(bǔ)點(diǎn)的三倍,由于控制點(diǎn)增多引起曲線不必要的振動(dòng)(圖11(b))。對(duì)于這一點(diǎn),在本發(fā)明的插補(bǔ)中,因?yàn)榭刂泣c(diǎn)與插補(bǔ)點(diǎn)大體為相同的數(shù)量,所以可以抑制這樣的不必要的振動(dòng)。
此外,在現(xiàn)有方法中,需要輸入在各點(diǎn)的切線矢量的大小,但在本發(fā)明中不需要這樣的輸入,可以在沒有人介入的情況下進(jìn)行所有的的插補(bǔ)處理,可以實(shí)現(xiàn)處理的自動(dòng)化。
在圖12(a)中放大地表示圖11(a)所示的進(jìn)行了本發(fā)明的插補(bǔ)后的曲線的曲率線圖的一部分,在圖12(b)中放大地表示圖11(c)所示的通過現(xiàn)有的方法(厄米特插補(bǔ))進(jìn)行了插補(bǔ)后的曲線的曲率線圖的一部分。
本發(fā)明的插補(bǔ)使用三維的B-Spline曲線,因?yàn)閷⑷S的B-Spline曲線保障到C2連續(xù),所以曲率成為連續(xù)(圖12(a))(在此,C2表示曲率連續(xù)性,與表示上述曲線的C相區(qū)別)。現(xiàn)有的方法(厄米特插補(bǔ))因?yàn)闆]有保證曲線的連續(xù),所以如同圖中的圓圈包圍的部位所示那樣,在曲線的各處曲率不連續(xù)(圖12(b))。
如上所述,本發(fā)明的插補(bǔ)與現(xiàn)有方法相比,可以生成曲率連續(xù)平滑的曲線。
然后,使用圖13的流程圖說明由三維的點(diǎn)群(包含位置、發(fā)現(xiàn)信息)生成B-Spline曲面的情況。以下的圖13所述的流程圖是一個(gè)例子,如果是執(zhí)行本發(fā)明的第一插補(bǔ)處理、第二插補(bǔ)處理以及第三插補(bǔ)處理的工序以及順序,則可以通過其他的流程來構(gòu)成。
從點(diǎn)群開始將位置作為Q進(jìn)行存儲(chǔ),將法線矢量作為N*進(jìn)行存儲(chǔ)(S31、S32)。將得到的插補(bǔ)點(diǎn)Qi作為初始控制點(diǎn)P0i進(jìn)行存儲(chǔ)(S33)。根據(jù)控制點(diǎn)PFk-1i生成B-Spline曲線Sk-1。在此,上標(biāo)文字k表示插補(bǔ)處理的次數(shù)。
以下,通過重復(fù)進(jìn)行S35、S36所示的第一插補(bǔ)處理、S37、S38所示的第二插補(bǔ)處理以及S42~S44所示的第三插補(bǔ)處理中的某一個(gè)工序,來生成關(guān)于位置以及法線矢量對(duì)點(diǎn)群進(jìn)行插補(bǔ)的B-Spline曲面S。
在第一插補(bǔ)處理中,求出將垂線從插補(bǔ)點(diǎn)下落到曲面S上、成為垂線的垂足的第一點(diǎn)Fki。曲面S是在初次的處理中,根據(jù)在S33的工序中得到的控制點(diǎn)P0生成的曲面S0,第二次及其以后的插補(bǔ)處理中,是根據(jù)在S41~S43的某一個(gè)工序中位移后的控制點(diǎn)Pki生成的曲面SK(S35)。求出插補(bǔ)點(diǎn)Qi和垂線的垂足的第一點(diǎn)Fki的距離∥Qi-Fki∥(=Δd)(S36)??梢酝ㄟ^微分幾何學(xué)運(yùn)算進(jìn)行求出垂線以及距離的運(yùn)算。
然后,在第二插補(bǔ)處理中,求出在各插補(bǔ)點(diǎn)Q所給出的法線矢量Ni*與在垂線的垂足的第一點(diǎn)Fki處的曲面S的法線矢量的角度差Δθ(S37),求出與法線矢量Ni*垂直相交的切平面在曲面上相切的切點(diǎn)Gki來作為第二點(diǎn)(S38)。可以通過微分幾何學(xué)運(yùn)算來求出角度差Δθ以及與法線矢量垂直相交的切平面在曲面上相切的點(diǎn)。
然后,在第三插補(bǔ)處理中,根據(jù)在S36中求出的距離Δd和在S38中求出的角度差Δθ,從S41~S43的三個(gè)工序中選擇一個(gè)工序來執(zhí)行。在插補(bǔ)點(diǎn)Q和曲線的距離誤差Δd以及法線矢量的角度差Δθ都不滿足閾值時(shí)(S39、S41),將定義了當(dāng)前曲面的控制點(diǎn)Pk-1i的位置位移從在S38中求出的曲面上的點(diǎn)Gki向插補(bǔ)點(diǎn)Qi的矢量,將位移后的位置作為新的控制點(diǎn)Pki的位置(S42)。
在插補(bǔ)點(diǎn)Q和曲面的距離誤差Δd滿足閾值(S39),但法線矢量的角度差Δθ不滿足閾值的情況下(S40),將定義了當(dāng)前曲面的控制點(diǎn)Pk-1i的位置位移從在S38中求出的曲面上的點(diǎn)Gki向在S35中求出的垂線的垂足的第一點(diǎn)Fki的矢量,將位移后的位置作為新的控制點(diǎn)Pki的位置(S44)。
在插補(bǔ)點(diǎn)Q和曲面的距離誤差Δd不滿足閾值(S39),但法線矢量的角度差滿足閾值的情況下(S41),將定義了當(dāng)前曲面的控制點(diǎn)Pk-1i的位置位移從S35中求出的垂線的垂足Fki向插補(bǔ)點(diǎn)Qi的矢量,將位移后的位置作為新的控制點(diǎn)Pki的位置(S43)。可以通過幾何學(xué)運(yùn)算進(jìn)行使控制點(diǎn)位移的運(yùn)算。
在S34中求出的曲面S與插補(bǔ)點(diǎn)Qi的距離誤差Δd、法線矢量Ni*與在垂線垂足的第一點(diǎn)Fki處的曲面S的法線矢量的角度差Δθ滿足各自的閾值之前,一直重復(fù)進(jìn)行S34~S44的工序。距離誤差的閾值相當(dāng)于對(duì)于距離誤差可以允許的允許距離誤差,所述距離誤差是針對(duì)對(duì)點(diǎn)群進(jìn)行插補(bǔ)的曲面的距離誤差,角度差的閾值相當(dāng)于對(duì)于法線的角度差可以允許的允許法線矢量角度差。
因此,通過在S39、S40、s41的比較工序中,確認(rèn)距離、法線矢量的角度差滿足閾值,曲面S就成為對(duì)于給出了點(diǎn)群的位置以及法線矢量,在允許誤差范圍內(nèi)進(jìn)行插補(bǔ)的曲面。
作為本發(fā)明的一應(yīng)用例子,具有向偏移曲線·曲面的應(yīng)用。通過應(yīng)用本發(fā)明,可以提高通過B-Spline曲線·曲面表現(xiàn)偏移曲線·曲面時(shí)的精度。
作為偏移曲線·曲面是指將曲線·曲面向法線方向位移一定距離后的曲線·曲面。在一般銷售的CAD/CAM軟件中,作為下拉菜單必定具備偏移功能,在現(xiàn)實(shí)中當(dāng)根據(jù)在NC切削加工等中輸入的CAD/CAM數(shù)據(jù),求出考慮了工具半徑的工具中心的軌跡,即工具路徑時(shí),使用CAD/CAM數(shù)據(jù)上的曲線·曲面的偏移曲線·曲面。在此,因?yàn)橐话銦o法通過多項(xiàng)式表現(xiàn)偏移曲線·曲面,所以無法通過由區(qū)分多項(xiàng)式表現(xiàn)的B-Spline曲線·曲面來直接表現(xiàn)。此時(shí),需要將偏移曲線·曲面作為一定的點(diǎn)群進(jìn)行采樣進(jìn)行對(duì),通過B-Spline曲線·曲面對(duì)取得的點(diǎn)群進(jìn)行插補(bǔ)的作業(yè)。此時(shí),由于偏移曲線·曲面的性質(zhì),可以容易地取出在采樣的點(diǎn)的法線,因此不僅關(guān)于位置,還關(guān)于法線矢量,通過B-Spline曲線·曲面進(jìn)行插補(bǔ),由此可以得到更接近偏移曲線·曲面的B-Spline曲線·曲面,可以減少所需要的采樣點(diǎn)。在進(jìn)行包含該法線的B-Spline曲線·曲面的插補(bǔ)時(shí),通過使用本發(fā)明可以得到不必要的振動(dòng)較少的高品質(zhì)的曲線,可以實(shí)現(xiàn)CAD/CAM軟件上的偏移功能的精度的提高。此外,因?yàn)椴恍枰芯€矢量的大小,所以可以沒有人的介入自動(dòng)地進(jìn)行插補(bǔ)處理。
作為其他的應(yīng)用例子,還舉出了當(dāng)在CAD/CAM上建模時(shí),在實(shí)際裝配中除了位置以外,還導(dǎo)入了指定在該位置的法線的功能的例子。在現(xiàn)有的作成CAD/CAM模型的過程中,一般僅進(jìn)行位置指定。由此,需要僅對(duì)位置信息進(jìn)行操作,來變更設(shè)計(jì)或技術(shù)規(guī)格。在此,如果能夠不僅針對(duì)位置還針對(duì)法線對(duì)曲線·曲面進(jìn)行插補(bǔ),就能夠附加指定法線信息的功能,可以增加能夠操作的參數(shù),因此可以提高設(shè)計(jì)的自由度。
通過使用本發(fā)明,可以沒有人的介入地自動(dòng)進(jìn)行插補(bǔ)處理,此外,可以使曲線·曲面成為曲率連續(xù),且不必要的振動(dòng)較少的高品質(zhì)的曲線·曲面。
本發(fā)明可以用于CAD·CAM建模的領(lǐng)域、NC加工等中。
權(quán)利要求
1.一種插補(bǔ)處理方法,其通過使用控制點(diǎn)表現(xiàn)的曲線或曲面對(duì)點(diǎn)群進(jìn)行插補(bǔ),其特征在于,
所述點(diǎn)群具有插補(bǔ)點(diǎn)的位置信息、決定在該插補(bǔ)點(diǎn)的曲線或曲面的方向以及曲率的單位方向矢量的矢量信息,
所述插補(bǔ)處理包含第一插補(bǔ)工序、第二插補(bǔ)工序以及第三插補(bǔ)工序,
第一插補(bǔ)工序,進(jìn)行在由控制點(diǎn)定義的所述曲線或所述曲面中,根據(jù)所述插補(bǔ)點(diǎn)的位置信息,求出從插補(bǔ)點(diǎn)落在所述曲線上或所述曲面上的垂線的垂足來作為第一點(diǎn)的幾何算法的運(yùn)算;
第二插補(bǔ)工序,進(jìn)行根據(jù)所述矢量信息,求出與單位方向矢量垂直相交的所述曲線的切線或所述曲面的切平面的切點(diǎn)來作為第二點(diǎn)的幾何算法的運(yùn)算;
第三插補(bǔ)工序,進(jìn)行求出從所述第一點(diǎn)向所述插補(bǔ)點(diǎn)的矢量、從所述第二點(diǎn)向所述插補(bǔ)點(diǎn)的矢量、以及從所述第二點(diǎn)向所述第一點(diǎn)的矢量來作為移動(dòng)矢量,使用從所述移動(dòng)矢量選擇出的某一個(gè)移動(dòng)矢量移動(dòng)定義所述曲線或所述曲面的控制點(diǎn)的位置,將移動(dòng)后的位置決定為新的曲線或曲面的控制點(diǎn)的位置的幾何算法的運(yùn)算,
通過納入了所述幾何算法的運(yùn)算單元來執(zhí)行進(jìn)行所述各插補(bǔ)工序的運(yùn)算處理。
2.根據(jù)權(quán)利要求1所述的插補(bǔ)處理方法,其特征在于,
所述單位方向矢量,是在對(duì)所述插補(bǔ)點(diǎn)進(jìn)行插補(bǔ)的曲線或者曲面上在該插補(bǔ)點(diǎn)的法線矢量。
3.根據(jù)權(quán)利要求1或2所述的插補(bǔ)處理方法,其特征在于,
根據(jù)通過所述運(yùn)算處理得到的控制點(diǎn)求出新的曲線或曲面,把插補(bǔ)點(diǎn)和求出的曲線或曲面間的距離,與閾值進(jìn)行比較,在所述距離滿足閾值之前或者小于閾值之前,一直重復(fù)進(jìn)行所述第一插補(bǔ)工序、第二插補(bǔ)工序以及第三插補(bǔ)工序。
4.根據(jù)權(quán)利要求1或2所述的插補(bǔ)處理方法,其特征在于,
根據(jù)通過所述運(yùn)算處理得到的控制點(diǎn)求出新的曲線或曲面,將在各插補(bǔ)點(diǎn)設(shè)定的單位方向矢量和在所述第一插補(bǔ)工序中求出的成為垂線的垂足的第一點(diǎn)處的曲線或曲面的法線矢量間的角度差,與閾值進(jìn)行比較,在所述角度差滿足閾值之前或者在小于閾值之前,一直重復(fù)所述第一插補(bǔ)工序、第二插補(bǔ)工序以及第三插補(bǔ)工序。
5.根據(jù)權(quán)利要求1至4的任意一項(xiàng)所述的插補(bǔ)處理方法,其特征在于,
在第一次進(jìn)行的第一插補(bǔ)工序、第二插補(bǔ)工序以及第三插補(bǔ)工序中,將所述點(diǎn)群的插補(bǔ)點(diǎn)作為初始控制點(diǎn),進(jìn)行所述各幾何算法的運(yùn)算,在第二次及其以后進(jìn)行的第一插補(bǔ)工序、第二插補(bǔ)工序以及第三插補(bǔ)工序中,把在插補(bǔ)工序中得到的控制點(diǎn)的位置作為新的控制點(diǎn)的位置,進(jìn)行所述幾何算法的運(yùn)算。
6.根據(jù)權(quán)利要求1至5的任意一項(xiàng)所述的插補(bǔ)處理方法,其特征在于,
所述曲線是B-Spline曲線,所述曲面是B-Spline曲面或細(xì)分曲面。
7.一種插補(bǔ)處理裝置,其通過使用控制點(diǎn)表現(xiàn)的曲線或曲面對(duì)點(diǎn)群進(jìn)行插補(bǔ),其特征在于,
所述點(diǎn)群具有插補(bǔ)點(diǎn)的位置信息、決定在該插補(bǔ)點(diǎn)的曲線或曲面的方向以及曲率的單位方向矢量的矢量信息,
具備第一幾何運(yùn)算單元、第二幾何運(yùn)算單元以及第三幾何運(yùn)算單元,
第一幾何運(yùn)算單元,通過在由控制點(diǎn)定義的所述曲線或所述曲面中,根據(jù)所述插補(bǔ)點(diǎn)的位置信息,求出從插補(bǔ)點(diǎn)落在所述曲線上或所述曲面上的垂線的垂足來作為第一點(diǎn)的幾何算法,來進(jìn)行第一插補(bǔ)工序;
第二幾何運(yùn)算單元,通過根據(jù)所述矢量信息,求出與單位方向矢量垂直相交的所述曲線的切線或所述曲面的切平面的切點(diǎn)來作為第二點(diǎn)的幾何算法,來進(jìn)行第二插補(bǔ)工序;
第三幾何運(yùn)算單元,通過求出從所述第一點(diǎn)向所述插補(bǔ)點(diǎn)的矢量、從所述第二點(diǎn)向所述插補(bǔ)點(diǎn)的矢量、以及從所述第二點(diǎn)向所述第一點(diǎn)的矢量來作為移動(dòng)矢量,使用某一個(gè)所述移動(dòng)矢量移動(dòng)定義曲線或曲面的控制點(diǎn)的位置,將移動(dòng)后的位置決定為新的曲線或曲面的控制點(diǎn)的位置的幾何算法,來進(jìn)行第三插補(bǔ)工序,
所述第一幾何運(yùn)算單元、第二幾何運(yùn)算單元以及第三幾何運(yùn)算單元,具備用于通過軟件執(zhí)行各幾何算法的CPU以及存儲(chǔ)裝置,或者用于通過硬件執(zhí)行各個(gè)幾何算法的電路。
8.根據(jù)權(quán)利要求7所述的插補(bǔ)處理裝置,其特征在于,
所述單位方向矢量,是在對(duì)所述插補(bǔ)點(diǎn)進(jìn)行插補(bǔ)的曲線或者曲面上在該插補(bǔ)點(diǎn)的法線矢量。
9.根據(jù)權(quán)利要求7或8所述的插補(bǔ)處理裝置,其特征在于,
具備
比較單元,其根據(jù)通過所述運(yùn)算處理得到的控制點(diǎn)求出曲線或曲面,把插補(bǔ)點(diǎn)和求出的曲線或曲面間的距離,與閾值進(jìn)行比較;以及
控制單元,其具有根據(jù)所述比較的結(jié)果,在所述距離滿足閾值之前或者小于閾值之前,一直重復(fù)進(jìn)行所述第一幾何運(yùn)算單元、第二幾何運(yùn)算單元以及第三幾何運(yùn)算單元的程序或電路結(jié)構(gòu)。
10.根據(jù)權(quán)利要求7或8所述的插補(bǔ)處理裝置,其特征在于,
具備
比較單元,其根據(jù)通過所述運(yùn)算處理得到的控制點(diǎn)求出曲線或曲面,把在各插補(bǔ)點(diǎn)給出的法線矢量和在成為求出的所述垂線的垂足的點(diǎn)的曲線或曲面的法線矢量間的角度差,與閾值進(jìn)行比較;以及
控制單元,其具有在所述角度差滿足閾值之前或者小于閾值之前,一直重復(fù)進(jìn)行所述第一幾何運(yùn)算單元、第二幾何運(yùn)算單元以及第三幾何運(yùn)算單元的程序或電路結(jié)構(gòu)。
11.根據(jù)權(quán)利要求7至10的任意一項(xiàng)所述的插補(bǔ)處理裝置,其特征在于,
所述第一幾何運(yùn)算單元、第二幾何運(yùn)算單元以及第三幾何運(yùn)算單元,在第一次進(jìn)行的運(yùn)算中,將所述點(diǎn)群作為初始控制點(diǎn),進(jìn)行所述幾何算法的運(yùn)算,
在第二次及其以后進(jìn)行的運(yùn)算中,把通過所述第一次的運(yùn)算得到的控制點(diǎn)位置作為新的控制點(diǎn)的位置,進(jìn)行所述幾何算法的運(yùn)算。
12.根據(jù)權(quán)利要求7至11的任意一項(xiàng)所述的插補(bǔ)處理裝置,其特征在于,
所述曲線是B-Spline曲線,所述曲面是B-Spline曲面或細(xì)分曲面。
全文摘要
插補(bǔ)處理,在使用B-Spline曲線·曲面或細(xì)分曲面等通過控制點(diǎn)表現(xiàn)的曲線·曲面對(duì)插補(bǔ)點(diǎn)進(jìn)行插補(bǔ)時(shí),使用構(gòu)成點(diǎn)群的插補(bǔ)點(diǎn)的位置信息、在各插補(bǔ)點(diǎn)設(shè)置的單位方向矢量的矢量信息,計(jì)算使控制點(diǎn)移動(dòng)的移動(dòng)矢量,使控制點(diǎn)在該移動(dòng)矢量的方向上移動(dòng)該移動(dòng)量。通過重復(fù)進(jìn)行對(duì)插補(bǔ)點(diǎn)進(jìn)行插補(bǔ)的曲線·曲面的生成和控制點(diǎn)的移動(dòng)的工序,求出關(guān)于點(diǎn)群的位置以及單位方向矢量使曲線·曲面擬合的新的控制點(diǎn)位置。在使用了點(diǎn)群的位置信息和法線信息的插補(bǔ)處理中,抑制控制點(diǎn)的增加降低處理數(shù)據(jù)的數(shù)據(jù)量,此外,不需要指定切線矢量的大小。
文檔編號(hào)G06F17/50GK101796546SQ20088010440
公開日2010年8月4日 申請(qǐng)日期2008年10月24日 優(yōu)先權(quán)日2007年10月30日
發(fā)明者前川卓, 吳服秀一, 田村重文 申請(qǐng)人:國立大學(xué)法人橫濱國立大學(xué)