專利名稱:使計算機存儲2維/3維圖形的數據結構、程序及記錄介質的制作方法
技術領域:
本發(fā)明涉及用于將由具備存儲圖形數據及對其進行處理的程序的裝置和對上述圖形數據進行處理的運算裝置的計算機所描繪的2維及3維圖形可再現地記錄在計算機的存儲器中的數據結構、程序以及記錄介質。
背景技術:
近年來,如CAD/CAM那樣在計算機上作為2維或3維對象的形狀模型進行圖形處理,將經過處理的該2維或3維圖形的數據結構化后記錄在存儲器中或者讀出記錄在存儲器中的圖形數據進行各種各樣的處理,這不僅僅是與設計或生產有關的作業(yè),在與機器人的環(huán)境識別機構相關的領域、科學模擬領域、計算機圖形學領域等廣泛的領域中都占有很重要的要素。
而且特別是在CAD/CAM的領域中作為將經過處理的3維圖形記錄在計算機的存儲器中的方法各種各樣的方式得以提案和利用。
在初期的CAD系統(tǒng)中,作為多面體的數據大多使用僅僅給予頂點和棱線的信息的方式的數據結構,但伴隨計算機的存儲器的大容量化,能夠給予更多信息,所必需的處理可更為容易且在短時間內進行的、在數據上持有冗余度的面向應用方式的數據結構就得以采納和利用。
如今,作為CAD系統(tǒng)的基礎數據結構最廣泛地得以采用的是對作為由B.G.Baumgart所提案的數據結構的「翼形邊數據結構winged-edge data structure」更易于使用地進行了改良后的被稱之為「半邊數據結構half-edge data structure」的數據結構。
上述半邊數據結構是能夠靈活地對應針對多面體的多種處理操作的數據結構。
圖27是作為現有技術的「半邊數據結構」的說明圖。多面體在從外部觀看其棱線時,就成為表示棱線、與棱線相鄰接的頂點和面的連接關系的圖27(a)那樣。圖中,e是棱線,棱線e的下側頂點是pv、上側頂點是nv、出現在左上的棱線是pccw、出現在左下的棱線是pcw、出現在右上的棱線是ncw、出現在右下的棱線是nccw,然后,相對于棱線e在左的面是pf、在右的面是nf。
多面體的棱線e如圖27(a)所示那樣分別鄰接著兩個面pf與nf,半邊數據結構考慮將多面體的棱線e分成兩個被左側的面pf所共有的棱線e和被右側的面nf所共有的棱線e’。
即、在根據半邊數據結構的數據結構中,對于左側的棱線e,如圖27(b)所示那樣對棱線e以上側方向給予方向,并給予與起點的頂點pv和終點的頂點nv、以反時針旋轉進入的左側面的棱線pcw、棱線e’、以反時針旋轉出去的左側面的棱線pccw、以及左側面pf有關的信息。然后,還進一步附加與雖然是相同棱線但方向相反的棱線e’有關的信息。關于右側的棱線e’也同樣給予6種信息(與起點的頂點pv’、終點的頂點nv’、棱線e、棱線pcw’、棱線bccw’、右面pf’有關的信息)。
雖然此結構數據的冗余度較高,但能夠效率良好地執(zhí)行在進行對話式立體形狀的變形或、形狀運算等利用了CAD的形狀設計的情況下所必需的各種處理操作,同時還有助于程序創(chuàng)建所需要的時間的縮短,從而廣泛得以使用。
非專利文獻「CAD/CAM系統(tǒng)的基礎和實際」古川進、向井伸治著2002年9月25日共立出版株式會社發(fā)行22頁但是,即便持有上述數據結構在由平面與曲面所構成的立體圖形的情況下,由于平面與曲面的數據的處理方法不同,所以在平面與曲面的連接部分取得數據的整合性極難,在程序創(chuàng)建上所需要的勞力也大,另外,程序自身所必需的存儲容量增大同時數據所必需的存儲容量也變得龐大。
另外,還存在這種CAD系統(tǒng),不指望將平面與曲面準確地進行連接而是在畫面顯示時設法使其恰好準確地得以連接這樣來進行顯示。
但是,由于其中圖形的形狀未被準確地記述,所以例如在為數值控制機床用而創(chuàng)建工具路徑的情況下或在送往疊層造型裝置的數據的創(chuàng)建等作業(yè)時就會發(fā)生顯著的不合適。
另外與圖形中的曲面有關的數據的處理方法非常復雜。雖然在如2次曲面那樣用數學式來定義的情況下不需要特別處理幾何信息,但需要將數學式和變量的定義域作為數據來持有。
另外在SPLINE(spline curve)、NURBS(Non-Uniform RationalB-Spline s)、B-SPLINE(B-spline curve)等情況下,一般是以表的形式持有通過點或者控制點的坐標值的方法。
進而,在諸如3角形補片(patch)等那樣,不是用點為m×n個這樣的縱橫個數的相乘來表示的情況下,還需要準備特別的數據結構。
這樣一來關于用于表達圖形中的曲面的數據的處理,就沒有統(tǒng)一的方法,關于數據量多寡及處理效率則未達到能夠議論的水平。
另一方面,關于在圖形處理中對變更圖形的形狀之際的變更歷史進行保持的手段,大多采用以下辦法,在對話式形狀生成作業(yè)中想取消錯誤的操作或撤銷取消的情況下,將指令的歷史作為不同的數據來保持,在執(zhí)行取消命令時按照命令歷史從最初開始重新執(zhí)行已給予的命令,或者在緊靠前面的命令為可逆的情況下進行逆操作而取得與操作的取消同等的效果。
另外還考慮將形狀的變更歷史儲存在同一數據結構內的方法,但在此方法中由于使許多形狀數據存儲在同一數據結構內,所以招致處理效率的低下,在實際的CAD系統(tǒng)中利用較少。
發(fā)明內容
在將作為2維或3維對象的形狀模型的2維或3維圖形的數據記錄到計算機的存儲器以后,每當讀出該數據并對該圖形進行各種各樣的處理,就如上述那樣,因圖形的形狀而不得不用復雜且不同的數據結構對所必需的處理進行處置,作業(yè)量也多,數據量也變得龐大從而難免處理效率的低下。
另外,除了上述那樣的以棱線為基準的數據結構以外,以面為基準的數據結構也得以提案,但在現階段沒有在曲面上優(yōu)秀的數據結構,將許多曲面復雜地進行組合來構成的立體圖形或平面與曲面混雜這樣的立體圖形的情況下,由于沒有能夠將平面與曲面、或者曲面間的關系統(tǒng)一地進行存儲的數據結構所以不合適較多,曲面處理困難的克服就成為大的課題。
進而,如果就保持對圖形的形狀進行變形之際的變形歷史的手段來看,則在上述辦法中幾何數據變得龐大,每當圖形變形該數據量就大幅增加而使處理效率變得非常差的問題就成為一個較大的課題。
因此在本發(fā)明中以提供一種數據結構以及包含對由同一數據結構所記錄的數據進行讀寫的命令的程序為目的,該數據結構用于將一切圖形數據以同一的形式統(tǒng)一記錄在存儲器中,且不需要繁雜的處理作業(yè)量較少,進而能夠使數據量比以往大幅削減在處理效率上優(yōu)秀。
本發(fā)明就是要解決上述課題,提供一種用于將在計算機上經過處理后的2維及3維圖形基于下述構成可再現地記錄在計算機的存儲器中的數據結構、程序、以及記錄介質。
本發(fā)明的技術方案1提供一種將2維及3維圖形的數據記錄在計算機的存儲器中的數據結構,是一種用于將由具備存儲圖形數據及對其進行處理的程序的裝置和對上述圖形數據進行處理的運算手段的計算機所描繪的2維及3維圖形可再現地記錄在計算機的存儲器中的手段,可僅用使作為表達該圖形的幾何學形狀的線的端點構成該圖形的各點,保持為了表達圖形所必需的信息的點數據的集合體來進行該圖形的表達的數據結構,其特征在于在對記錄上述各構成點的點數據各自的點數據區(qū)域分配固有的地址,將與該構成點P處于用線所連結的關系的鄰接點設為Q、R、S...時,該點P的鄰接點Q、R、S...的各點數據區(qū)域的地址數據按照預先所決定的規(guī)則順次記錄于該點P的點數據區(qū)域。
本發(fā)明技術方案2提供一種數據結構,其特征在于在上述技術方案1所述的數據結構中,表示該點P的點數據區(qū)域的地址數據(下面稱之為P的地址數據)記錄在鄰接點Q、R、S...的各點數據區(qū)域中的順序為第幾個的數值被記錄于同一點P的點數據區(qū)域。
本發(fā)明技術方案3提供一種數據結構,其特征在于在上述技術方案1所述的數據結構中,預先所決定的規(guī)則在2維圖形中是指右旋或左旋,在3維圖形中是指從圖形的外側觀看頂點為右旋或左旋。
本發(fā)明技術方案4提供一種數據結構,其特征在于在上述技術方案1所述的數據結構中,上述點數據保持有屬性信息。
本發(fā)明技術方案5提供一種數據結構,其特征在于在上述技術方案4所述的數據結構中,上述點數據的屬性信息是從該點P的坐標值或者指向記錄著坐標值的區(qū)域的地址的指針、表示點的種類的預先所決定的數值或字符數據、表示點的顏色的預先所決定的數值或字符數據、表示與點有關的處理的種類的預先所決定的數值或字符數據、指向記錄著其他圖形數據的區(qū)域的地址的指針、以及表示是樣條曲線(Spline Curve)、B-樣條曲線(B-spline Curve)、貝塞爾曲線(BezierCurve)、NURBS曲線(Non-Uniform Rational B-Spline Curve)、細分化曲線(Subdivision Curve)、或者B-樣條曲線、貝塞爾曲線、NURBS曲線以外的自由曲線中的哪一個的控制點的預先所決定的數值或字符數據中所挑選的1個或2以上的屬性。
本發(fā)明技術方案6提供一種數據結構,其特征在于在上述技術方案4所述的數據結構中,上述點數據的屬性信息是與在該點與其鄰接點之間所劃的線有關的屬性信息。
本發(fā)明技術方案7提供一種數據結構,其特征在于在上述技術方案6所述的數據結構中,上述與線有關的屬性信息是從表示線的種類的預先所決定的數值或字符數據、表示線的顏色的預先所決定的數值或字符數據、在線為曲線的情況下曲線的定義式數據或指向存儲著曲線的定義式的區(qū)域的地址的指針、系數及變量的定義域數據或指向存儲著定義域的區(qū)域的地址的指針、以及表示是樣條曲線(SplineCurve)、B-樣條曲線(B-spline Curve)、貝塞爾曲線(Bezier Curve)、NURBS曲線(Non-Uniform Rational B-Spline Curve)、細分化曲線(Subdivision Curve)、或者B-樣條曲線、貝塞爾曲線、NURBS曲線以外的自由曲線中的哪一個種類的預先所決定的數值或字符數據中所挑選的1個或2個以上的屬性。
本發(fā)明技術方案8提供一種數據結構,其特征在于在上述技術方案1所述的數據結構中,在因構成該對象圖形的1個或者多個點的移動、刪除、新點的創(chuàng)建、屬性的變更或鄰接點的變更而變形的情況下,在該點的移動、刪除、新創(chuàng)建的點、進行了屬性變更或鄰接點變更的各點數據中,作為歷史信息按時間序列用數值記錄著表示是移動、刪除、新創(chuàng)建的點、進行了屬性變更或鄰接點變更的點的信息和表記該變形是該對象圖形的第幾次變形的變形次數值。
本發(fā)明技術方案9提供一種數據結構,其特征在于在上述技術方案8所述的數據結構中,在進行了變形的情況下該歷史信息對每個變形設變形次數為1并順次將變形次數相加來進行記錄,在圖形的變形是因點的刪除而引起的情況下,在上述變形次數值上附加表記該變形是因點的刪除而引起的記號。
本發(fā)明技術方案10提供一種數據結構,其特征在于在上述技術方案8所述的數據結構中,每當因構成該對象圖形的點的移動、刪除、屬性變更、或鄰接點變更而變形,在將該點P的移動前、刪除前、屬性變更前、或鄰接點變更前的點數據設為Pi,將移動后、刪除后、屬性變更后、或鄰接點變更后的點數據設為Pi+1的情況下,在該點P的點數據中記錄著移動前、刪除前、屬性變更前、或鄰接點變更前的點Pi的點數據和移動后、刪除后、屬性變更后、或鄰接點變更后的點Pi+1的點數據。
本發(fā)明技術方案11提供一種數據結構,其特征在于在上述技術方案8所述的數據結構中,每當該對象圖形因構成該圖形的新點的創(chuàng)建而變形,將該點Q的數據作為點數據Qi來進行創(chuàng)建、記錄。
本發(fā)明技術方案12提供一種程序,是在將由具備存儲圖形數據及對其進行處理的程序的裝置和對上述圖形數據進行處理的運算手段的計算機所描繪的2維及3維圖形可再現地記錄在計算機的存儲器中時,按照上述技術方案1所述的數據結構將構成該圖形的該點P的點數據在存儲器上進行寫入或者讀出的程序,其特征在于包括(1)分配該點P的數據被記錄的區(qū)域的地址的命令以及按照利用目的讀出該地址的命令;(2)按照預先所決定的規(guī)則順次將與同一點P鄰接的多個鄰接點Q、R、S...各點的地址數據寫入該點P的點數據區(qū)域的命令以及按照利用目的從同一區(qū)域讀出的命令。
本發(fā)明技術方案13提供一種程序,其特征在于在上述技術方案12所述的程序中,將表示該點P的地址數據記錄在鄰接點Q、R、S...的各點數據區(qū)域中的順序為第幾個的數值寫入同一點P的點數據區(qū)域的命令和按照利用目的從同一區(qū)域讀出的命令。
本發(fā)明技術方案14提供一種程序,其特征在于在上述技術方案12所述的程序中,預先所決定的規(guī)則在2維圖形中是指右旋或左旋,在3維圖形中是指從圖形的外側觀看頂點為右旋或左旋。
本發(fā)明技術方案15提供一種程序,其特征在于在上述技術方案12所述的程序中,將上述技術方案4所述的屬性信息寫入上述點數據區(qū)域的命令和按照利用目的從同一區(qū)域讀出的命令。
本發(fā)明技術方案16提供一種程序,其特征在于在上述技術方案12所述的程序中,將上述技術方案8所述的歷史信息寫入上述點數據區(qū)域的命令和按照利用目的從同一區(qū)域讀出的命令。
本發(fā)明技術方案17提供一種程序,其特征在于可用上述技術方案12所述的程序在計算機上進行2維圖形處理、3維圖形處理、或者2維和3維圖形混雜的圖形處理。
本發(fā)明技術方案18提供一種記錄了上述技術方案12所述的計算機程序的計算機可讀取的記錄介質。
本發(fā)明技術方案19提供一種可記錄基于上述數據結構的圖形數據后數據庫化進行利用的計算機可讀取的記錄介質,其中所述數據結構利用上述技術方案12所述的計算機程序來進行創(chuàng)建。
根據本發(fā)明的在計算機的存儲器中記錄2維及3維圖形數據的數據結構,由于所有的圖形數據各自僅用保持為了圖形的表達所必需的信息的點數據的集合體來構成所以數據量非常少,借助于計算機的處理效率就明顯提高。
而且,由于構成上述該圖形的各點的數據相互將與鄰接點的關系作為信息來保持所以就能夠依照目的取出圖形上必要的點或者導出各點的連接關系而不用進行繁雜的處理。
進而,由于構成該圖形的各點的數據能夠保持該點或者在該點與鄰接點之間所劃的直線及曲線等的屬性信息,所以即便在2維圖形、3維圖形、特別是平面與曲面混雜的3維圖形中也能夠以完全同一的形式統(tǒng)一地構筑數據結構,該圖形數據就可沒有2維、3維區(qū)別地記錄在存儲器中。
另外,由于上述點數據中所保持的屬性信息作為預先所決定的數值或字符數據或者指向其他圖形的指針來進行記錄,所以即便假設記述了許多屬性,點數據自身的數據量也不會那么增加,從而圖形數據的全體量也不會增加且計算機上的處理效率不會降低。
進而,由于能夠在構成圖形的點的點數據中使與圖形的變形有關的信息作為變更歷史信息來進行存儲,對圖形的每個變形使變形次數值存儲在與變形有關系的點數據中,所以重新作業(yè)就極其容易。
例如在取消方才進行過的行為的情況下,探索將歷史等級相應減1后的信息即可,在想返回到5個階段前的形狀的情況下,探索將歷史等級減5后的信息即可。另外由于若觀看上述歷史信息就能夠容易地得知現階段的變形是由第幾次的變形所引起,所以根據本發(fā)明的數據結構的圖形數據,即便變形次數增加也能夠將歷史管理得有條不紊,而成為能夠進行任意次返回或者修正的變更的、操作性較高的圖形數據。
而且,由于對本發(fā)明的數據結構中所記錄的數據進行讀寫的程序是遵照本發(fā)明的數據結構將用計算機所創(chuàng)建的圖形數據記錄在存儲器中,或者依照處理目的從存儲器讀出的程序,所以包含此程序的圖形處理程序就能夠無需繁雜的數據存儲用例程地創(chuàng)建數據量較少的緊湊的圖形數據,成為處理速度快、可有效且容易地處理一切圖形的程序。
另外,由于若遵照本發(fā)明的數據結構則2維、3維圖形就可用同一數據結構來處理,所以實現對基于它的2維、3維圖形進行處理的功能的程序就成為開創(chuàng)以往沒有的嶄新獨特的圖形軟件世界的程序。
另外,記錄了上述計算機程序的計算機可讀的記錄介質就可廣泛容易地提供對上述數據結構進行活用的計算機程序。
進而,由上述程序所創(chuàng)建的數據庫任何人都可容易地充分利用、可作為繪制復雜的圖形情況下的基礎數據來進行活用、就成為通用的互換性和方便性較高的數據庫。
圖1是用于說明本發(fā)明的數據結構的2維圖形。
圖2是用于說明本發(fā)明的數據結構的3維圖形。
圖3是根據本發(fā)明的數據結構來表達2維圖形的點數據的基本構成說明圖。
圖4是根據本發(fā)明的數據結構來表達3維圖形的點數據的基本構成說明圖。
圖5是根據本發(fā)明的數據結構來表達2維圖形的點數據的附加功能說明圖。
圖6是根據本發(fā)明的數據結構來表達3維圖形的點數據的附加功能說明圖。
圖7是在本發(fā)明的數據結構中與各點數據保持的屬性信息有關的說明圖。
圖8是在本發(fā)明的數據結構中與各點數據保持的屬性信息有關的別的說明圖。
圖9是表示用于就本發(fā)明中的變更歷史進行說明的變更過程的圖。
圖10是表示上述變更過程的圖的歷史等級1中的本發(fā)明的數據結構的說明圖。
圖11是表示上述變更過程的圖的歷史等級2中的本發(fā)明的數據結構的說明圖。
圖12是表示上述變更過程的圖的歷史等級3中的本發(fā)明的數據結構的說明圖。
圖13是按照本發(fā)明的數據結構將圖形的點數據寫入存儲器的程序的流程圖。
圖14是按照本發(fā)明的數據結構將圖形的點數據刪除的程序的流程圖。
圖15是按照本發(fā)明的數據結構將圖形的點設為其他點的鄰接點的程序的流程圖。
圖16是按照本發(fā)明的數據結構將圖形的點的鄰接點信息刪除的程序的流程圖。
圖17是按照本發(fā)明的數據結構對存儲器中所記錄的圖形的點數據以順時針旋轉取出鄰接點的程序的流程圖。
圖18是按照本發(fā)明的數據結構對存儲器中所記錄的圖形的點數據以反時針旋轉取出鄰接點的程序的流程圖。
圖19是按照本發(fā)明的數據結構在圖形的點與其鄰接點之間生成新點的程序的流程圖。
圖20是按照本發(fā)明的數據結構將存儲器中所記錄的圖形的面的構成點以反時針旋轉進行取出的程序的流程圖。
圖21是按照本發(fā)明的數據結構將存儲器中所記錄的圖形的面的構成點以順時針旋轉進行取出的程序的流程圖。
圖22是表示本發(fā)明的數據結構的實施例說明用2維圖形的圖。
圖23是表示在上述圖22中以點V0為例的點V0的點數據表的圖。
圖24是表示對上述圖22的2維圖形進行表達的本發(fā)明的數據結構的圖。
圖25是表示在上述圖22的2維圖形中保持高度信息的本發(fā)明的數據結構的圖。
圖26是表示本發(fā)明的數據結構的實施例說明用3維圖形的圖。
圖27是表示對上述圖26的3維圖形進行表達的本發(fā)明的數據結構的圖。
圖28是用于說明本發(fā)明的數據結構的實施例的非流形的圖。
圖29是表示針對上述圖28的非流形的本發(fā)明的數據結構的圖。
圖30是表示本發(fā)明說明用的、格子狀的點列的圖。
圖31是用于在格子狀的點列中從本發(fā)明的數據結構的各點數據取出1個點列的說明用點數據圖。
圖32是表示根據本發(fā)明的數據結構從2維圖形向3維圖形展開的例子的圖。
圖33是表示通過細分化法生成平面曲面混雜的圖形的曲面的方法的說明圖。
圖34是表示用于說明本發(fā)明的實施例的具有圓筒面的3維圖形的圖。
圖35是表示在具有圓筒面的3維圖形中處于平面與曲面的邊界上的構成點的、根據本發(fā)明的點數據的例子的圖。
圖36是作為現有技術的半邊數據結構的說明圖。
圖37是表示用本發(fā)明的數據結構所記錄的圖形數據的操作過程的說明用3維圖形A的圖。
圖38是表示上述3維圖形A的各操作等級的流程的圖。
圖39是表示上述3維圖形A的創(chuàng)建中的變更歷史與存儲量的圖表。
圖40是表示在用本發(fā)明的數據結構所記錄的圖形數據中,用于檢查變更歷史與使用存儲器量的關系的3維圖形B的圖。
圖41是表示上述3維圖形B的創(chuàng)建過程100次的變更歷史與存儲器量的圖表。
圖42是現有技術的半邊數據結構與本發(fā)明的數據結構的比較表。
具體實施例方式
本發(fā)明是,用于使在計算機上所處理的一切圖形存儲在存儲器中的數據結構,包含遵照上述數據結構對計算機的存儲器進行寫入、或者按照利用目的將該數據的全部或一部分讀出的命令的程序,記錄了上述程序、或者由該程序所創(chuàng)建的圖形數據的、可用計算機讀取的記錄介質。
本發(fā)明設為對象的圖形是在計算機上作為直線或曲線的連接而構成的圖形、僅由平面所構成的圖形、由平面與曲面所構成的圖形、僅由曲面所構成的圖形等一切2維、3維圖形,并不過問欲圖形化的事物或對象物的形狀如何。
而且,本發(fā)明的數據結構在處理幾何形狀的所有領域中得以活用。例如能夠利用于以下數據結構中,即、機械系CAD/CAM系統(tǒng)中基本數據結構、建筑用CAD系統(tǒng)中的數據結構,利用立體形狀數據進行疊層造型之際有關向STL數據的變換的數據結構,在機器人的環(huán)境識別機構中有關適合機器人頭腦的計算機內的形狀模型的數據結構,在數據庫系統(tǒng)中以形狀為基本對類似形狀進行檢索時的數據結構,原子或分子等的構造分析時的數據結構,CG或處理矢量圖形的繪制系軟件的數據結構,汽車導航或地圖信息等中的圖形數據的數據結構,游戲等娛樂產業(yè)或教育產業(yè)中的動畫片系統(tǒng)的數據結構,借助于虛擬現實(VR)的手術導航、手術模擬等醫(yī)療應用系統(tǒng)的數據結構,飛行模擬機、天文宇宙模擬機、科學理論的圖像化用的數據結構,在家電·安全設備、健康設備其他具有畫面顯示功能的設備中處理圖形數據的情況下的數據結構。
基于附圖來說明根據本發(fā)明的數據結構。
圖1表示說明本發(fā)明的、將用計算機處理后的2維圖形記錄在存儲器中的數據結構用的2維圖形的例子,圖2表示3維圖形的例子。圖3~6是將上述圖形記錄在存儲器中時的數據結構的構成說明圖。
圖中,圖形A是2維圖形,圖形B是3維圖形,點P、Q、R、S分別是構成設為對象的圖形的點。
根據本發(fā)明的數據結構,構成對象圖形的各點分別作為保持著為表達圖形所必需的信息的點數據進行記錄。
圖3所示的數據結構的說明圖是構成2維對象圖形A的點P具有多個鄰接點Q、R的情況下的例子,圖4所示的數據結構的說明圖B是構成3維對象圖形的點P具有多個鄰接點Q、R、S的情況下的例子。
在用于將圖形A記錄到存儲器的本發(fā)明的數據結構中,對點P、Q、R分配該點P、Q、R的數據被記錄的各點數據區(qū)域的地址(以后稱之為P、Q、R的地址),在P的點數據區(qū)域上按照預先所決定的規(guī)則順次記錄與同一點P鄰接的多個鄰接點Q、R各點的地址數據。
在圖形A的點P的點數據中(1)該點P的地址P1,(2)按照預先所決定的規(guī)則順次記錄于該點P的數據區(qū)域的、與同一點P鄰接的多個鄰接點Q、R各自的地址數據為Q1、R1。
同樣在Q的點數據中(1)該點Q的地址為Q1,(2)按照預先所決定的規(guī)則順次記錄于該點Q的數據區(qū)域的、與同一點Q鄰接的多個鄰接點R、P各自的地址數據為R1、P1。
另外同樣在R的點數據中(1)該點R的地址為R1,(2)按照預先所決定的規(guī)則順次記錄于該點R的數據區(qū)域中的、與同一點R鄰接的多個鄰接點P、Q各自的地址數據為P1、Q1。
此外在圖中作為記錄鄰接點的順序的規(guī)則即「預先所決定的規(guī)則」是反時針旋轉,雖然在以下的說明中設為反時針旋轉來記述,但也可以設為順時針旋轉。
在用于將圖形B記錄到存儲器的本發(fā)明的數據結構中,對點P、Q、R、S分配該點P、Q、R、S的數據被記錄的各點數據區(qū)域的地址(以后稱為P、Q、R、S的地址),在P的點數據區(qū)域上按照預先所決定的規(guī)則順次記錄與同一點P鄰接的多個鄰接點Q、R、S各點的地址數據。
在圖形B的點P的點數據中(1)該點P的地址為P1,(2)按照預先所決定的規(guī)則順次記錄于該點P的數據區(qū)域的、與同一點P鄰接的多個鄰接點Q、R、S各自的地址數據為Q1、R1、S1。
同樣在Q的點數據中(1)該點Q的地址為Q1,(2)按照預先所決定的規(guī)則順次記錄于該點Q的數據區(qū)域的、與同一點Q鄰接的多個鄰接點R、P、S各自的地址數據為R1、P1、S1。
另外同樣在R的點數據中(1)該點R的地址為R1,(2)按照預先所決定的規(guī)則順次記錄于該點R的數據區(qū)域的、與同一點R鄰接的多個鄰接點S、P、Q各自的地址數據為S1、P1、Q1。
進而同樣在S的點數據中(1)該點S的地址為S1,(2)按照預先所決定的規(guī)則順次記錄于該點S的數據區(qū)域的、與同一點S鄰接的多個鄰接點P、R、Q各自的地址數據為P1、R1、Q1。
圖5所示的數據結構在表示上述圖形A的數據結構的圖3上追加表示該點P的地址數據記錄在鄰接點Q、R各點數據之中的順序為第幾個的數值(以后稱之為配置數值)而構成。
同樣在Q的數據上追加表示該點Q的地址數據記錄在鄰接點R、P各點數據中的順序為第幾個的數值而構成。
進而在R的數據上追加表示該點R的地址數據記錄在鄰接點P、Q各點數據中的順序為第幾個的數值而構成。
圖中在點P的點數據中,表示該點P的地址數據記錄在鄰接點Q、R各點數據之中的順序為第幾個的數值,在鄰接點Q中為2在鄰接點R中為1。
同樣在Q的點數據中,表示該點Q的地址數據記錄在鄰接點R、P各點數據之中的順序為第幾個的數值,在鄰接點R中為2在鄰接點P中為1。
另外同樣在R的點數據中,表示該點R的地址數據記錄在鄰接點P、Q各點數據之中的順序為第幾個的數值,在鄰接點P中為2在鄰接點Q中為1。
圖6所示的數據結構在表示上述圖形B的數據結構的圖4上追加表示該點P的地址數據記錄在鄰接點Q、R、S各點數據之中的順序為第幾個的數值(配置數值)而構成。
即在上述P的數據上追加表示該點P的地址數據記錄在鄰接點Q、R、S各點數據之中的順序為第幾個的數值。
同樣在Q的數據上追加表示該點Q的地址數據記錄在鄰接點R、P、S各點數據中的順序為第幾個的數值。
另外在R的數據上追加表示該點R的地址數據記錄在鄰接點S、P、Q各點數據中的順序為第幾個的數值。
進而在S的數據上追加表示該點S的地址數據記錄在鄰接點P、R、Q各點數據中的順序為第幾個的數值。
圖中在點P的點數據中,表示該點P的地址數據按所決定的規(guī)則記錄在鄰接點Q、R、S各點數據之中的順序為第幾個的數值在鄰接點Q中為2,在鄰接點R中為2,在鄰接點S中為1。
同樣在Q的點數據中,表示該點Q的地址數據按所決定的規(guī)則記錄在鄰接點R、P、S各點數據之中的順序為第幾個的數值在鄰接點R中為3,在鄰接點P中為1,在鄰接點S中為3。
另外同樣在R的點數據中,表示該點R的地址數據按所決定的規(guī)則記錄在鄰接點S、P、Q各點數據之中的順序為第幾個的數值在鄰接點S中為2,在鄰接點P中為2,在鄰接點Q中為1。
進而在S的點數據中,表示該點S的地址數據按所決定的規(guī)則記錄在鄰接點P、R、Q各點數據之中的順序為第幾個的數值在鄰接點P中為3,在鄰接點R中為1,在鄰接點Q中為3。
圖7、圖8是表示在本發(fā)明的上述數據結構中記錄屬性信息的情況下的例子的構成圖。
在包含于構成圖形的點P的數據的屬性信息中,有規(guī)定點的性質或與其他圖形之關系的與點自身有關的屬性信息pa1、pa2...,有關與鄰接點之間所劃的線的屬性信息pb1、pb2...。
對于點Q、R、S也同樣有與點自身以及與鄰接點之間所劃的線的有關的屬性信息qa1...qb1...、ra1...rb1...、sa1...sb1...。
作為上述與點自身有關的屬性信息,有該點P的坐標值或者指向記錄著坐標值的區(qū)域的地址的指針、表示點的種類的預先所決定的數值或字符數據、表示點的顏色的預先所決定的數值或字符數據、表示與點有關的處理的種類的預先所決定的數值或字符數據、指向記錄著其他圖形數據的區(qū)域的地址的指針、以及表示是樣條曲線(SplineCurve)、B-樣條曲線(B-spline Curve)、貝塞爾曲線(Bezier Curve)、NURBS曲線(Non-Uniform Rational B-Spline Curve)、細分化曲線(Subdivision Curve)、或者B-樣條曲線、貝塞爾曲線、NURBS曲線以外的自由曲線中的某一個的控制點的預先所決定的數值或字符數據等,這些屬性的1個或2個以上的信息如圖那樣作為該點P的數據進行記載。
上述與線有關的屬性信息,有表示線的種類的預先所決定的數值或字符數據、表示線的顏色的預先所決定的數值或字符數據、在線為曲線的情況下曲線的定義式數據或指向存儲著曲線的定義式的區(qū)域的地址的指針、系數及變量的定義域數據或指向存儲著定義域的區(qū)域的地址的指針、以及表示是樣條曲線(Spline Curve)、B-樣條曲線(B-spline Curve)、貝塞爾曲線(Bezier Curve)、NURBS曲線(Non-Uniform Rational B-Spline Curve)、細分化曲線(SubdivisionCurve)、或者B-樣條曲線、貝塞爾曲線、NURBS曲線以外的自由曲線中的某一個種類的預先所決定的數值或字符數據,這些1個或2個以上的信息作為線的屬性信息進行記載。
上述記錄于點數據的與線有關的屬性信息在實際事務上最好是按照屬性的種類預先決定好數值。
以下表示代表性的、有關在點與鄰接點之間所劃的線的屬性信息的例子。當然所分配的屬性信息號碼能夠由程序任意地進行選擇。
屬性信息號碼處理內容10規(guī)定平面的直線2100 在平面與曲面的邊界上曲面為貝塞爾曲面2200 在平面與曲面的邊界上曲面為B樣條2310 在平面與曲面的邊界上曲面為細分化曲面(S曲面)2320 在平面與曲面的邊界上曲面為細分化曲面(Catmull-Clark曲面カツトマル·クラ一ク曲面)2400 在平面與曲面的邊界上曲面為樣條插補曲面2500 在平面與曲面的邊界上曲面為NURBS、權重另行決定2600 在平面與曲面的邊界上曲面為2次曲面、條件另行決定3110 曲面的控制點(在貝塞爾曲面為4角形補片)
3120 曲面的控制點(在貝塞爾曲面為3角形補片)3130 曲面的控制點(在貝塞爾曲面為5角形補片)3210 曲面的控制點(在B樣條曲面為4角形補片)…在本發(fā)明的數據結構中,將用于區(qū)別構成圖形的點為平面上的點、還是曲面的控制點、或者平面與曲面的邊界上的點的信息作為與點自身相關的屬性進行記錄。使各屬性對應于預先所決定的數值。
例如在數值1的情況下決定為平面上的點,在2的情況下決定為曲面的控制點,在3的情況下決定為邊界上的點。
進而在需要詳細地決定屬性的情況下,僅僅使所分配的數值的種類增加即可。例如設數值14為貝塞爾曲面上的控制點,15為NURBS曲面的控制點,20為2次曲面上的點等等。
但是,在如2次曲面等那樣用數學式來表達的情況下,則另行記錄公式的系數或定義區(qū)間等信息,或者還將指向記錄著公式的系數或定義區(qū)間的信息的存儲器的指針也記錄下來。
另外在圖7、圖8中例如在點P的數據表中鄰接點Q的地址數據的橫pb1的欄上,記錄著屬性信息10的情況下,設連結點P與鄰接點Q的線為直線,兩點P、Q均為平面上的點來進行處理,另外在記錄著15的情況下設這2點用圓弧連結著來進行處理。在此表中寫入的數值10、15預先適當地決定后進行分配。
處理方法因這些記載著的數值而異。另外例如若用16位來表示屬性,則能夠進行65,536種不同屬性的處理。
由于這樣用預先所決定的數值或字符串來賦予屬性信息,在各點數據上記錄好該數值或者字符串即可,所以本發(fā)明的數據結構可以就所有點的特性或與鄰接點之間所劃的線進行詳細的表達,而不會使點數據自身的數據量那么增加。
另外由于本發(fā)明的數據結構不論是2維圖形還是3維圖形均可用完全同一的形式來進行處理,所以還可使平面曲面混雜的模型的處理變得容易。
在根據本發(fā)明的數據結構中,在圖形的變形因構成對象圖形的點的移動、刪除、追加、屬性的變更、或者鄰接點的變更而發(fā)生的情況下,可將該變更作為變更歷史信息在各點數據中進行記錄保存。
在因構成該對象圖形的1個或者多個點的移動、刪除、新點的創(chuàng)建、屬性的變更、或者鄰接點的變更而變形的情況下,在該點的移動、刪除、新創(chuàng)建的點、屬性變更、或者鄰接點變更已進行的各點數據中作為歷史信息按時間序列用數值記錄著表示是移動、刪除、新創(chuàng)建的點、屬性變更或鄰接點變更已進行的點的信息和表記該變形是該對象圖形的第幾次變形的變形次數值。
在進行了變形的情況下該歷史信息對每個變形設變形次數為1并順次將變形次數相加來進行記錄,在圖形的變形是因點的刪除而引起的情況下,在上述變形次數值上附加表記該變形是因點的刪除而引起的記號。
這樣本發(fā)明的數據結構就是在各點的數據自身上記錄與圖形的變更有關的信息的結構,即便在結束計算機中的處理作業(yè)并將圖形數據保存在文件中以后,再次讀入以進行處理作業(yè)的情況下,由于在如以往的圖形數據那樣的歷史中沒有依賴于指令的部分,所以過去變更的任何階段的數據都能夠按照歷史信息自由地進行取出,大大有助于作業(yè)的效率化。
這樣為了保持與對象圖形的變形有關的信息,在本發(fā)明的數據結構中就在各點的數據上保持著變更前的信息。
例如,每當因構成該對象圖形的點的移動、刪除、屬性變更、或鄰接點變更而變形,在將該點P的移動前、刪除前、屬性變更前、或鄰接點變更前的點數據設為Pi,將移動后、刪除后、屬性變更后、或鄰接點變更后的點數據設為Pi+1的情況下,在該點P的點數據中記錄著移動前、刪除前、屬性變更前或鄰接點變更前的點Pi的點數據和移動后、刪除后、屬性變更后、或鄰接點變更后的點Pi+1的點數據。
而且,每當在該對象圖形因構成該圖形的新點的創(chuàng)建而變形,該點Q的數據就被作為點數據Qi來進行創(chuàng)建。這樣本發(fā)明的數據結構就是即便在因圖形的變形而發(fā)生變更的情況下,存儲著變更前的信息而無需進行其他的信息的參照等,且將總數據量的增加抑制到最小限度的有條不紊的數據結構。
圖9~12是與本發(fā)明的數據結構中的變更歷史有關的說明圖。
圖9(a)是作為第1次變形的歷史等級1的圖形(原圖),圖9(b)是作為第2次變形的歷史等級2的圖形,圖9(c)是作為第3次變形的歷史等級3的圖形。
在圖9中10是歷史等級1中的圖形,20是歷史等級2中的圖形,30是歷史等級3中的圖形,在圖10~12中10a、10b、20a、20b、30a、30b是點數據,10c、20c、30c是變形次數值,40是變更記錄數據。
首先根據第1次變形的歷史等級1中的圖形10如圖10所示由4個點P、Q、R、S的點數據構成。在此情況下作為4個點P、Q、R、S的數據分別記錄新創(chuàng)建的點數據P1、Q1、R1、S1。即、在點P、Q、R、S各自的點數據10a內記錄所創(chuàng)建的P1、Q1、R1、S1各點數據10b。
然后在上述所創(chuàng)建的點P1、Q1、R1、S1的點數據10b內記錄表示圖形的變形為第幾次變形的變形次數值10c。在這里由于是第1次變形所以分別記錄著「1」。
此外在圖中,在所創(chuàng)建的點P1、Q1、R1、S1的點數據10b內置為NULL表示點P1、Q1、R1、S1是作為點P、Q、R、S的最初的數據來創(chuàng)建的,將在其以前沒有與該點有關的變形這樣的情況作為信息存儲起來。
其次圖9(b)所示的圖形20是在圖9(a)的圖形10的點P和Q之間新追加創(chuàng)建了點T,由其引起的上述圖形的變形為第2次歷史等級為2。在此情況下新創(chuàng)建的點是T,因點T的創(chuàng)建而在點數據的內容上產生變更的是點P和Q。
在圖11中作為點T的數據新創(chuàng)建的點T1被記錄,在同一點T的數據20a內記錄所創(chuàng)建的點T1的點數據20b。然后在所創(chuàng)建的、上述T1的點數據20b內記錄表示圖形的變形是第幾次變形的變形次數值20c。在這里第2次變形所以記錄著「2」。
另外點P和Q的點數據,因點T被創(chuàng)建而使鄰接點的關系發(fā)生變更。因此在點P和Q的點數據20a中記錄作為變更前的點的P1、Q1的點數據10b和作為變更后的點的P2、Q2的點數據20b,并記錄表示通過第2次變形而創(chuàng)建的變更次數值20c。在這里變形次數值是「2」。
這樣在點P和Q的點數據20a中,雖然因鄰接點的關系的變更而新創(chuàng)建新點P2、Q2,但在因點的移動或屬性的變更引起的變形的情況下也同樣如此。
然后圖9(c)所示的、根據第3次變形的歷史等級3中的圖形30,刪除圖9(b)的圖形20的點S與點Q之間所配置的點R而構成。在此情況下所刪除的點是R,因點R的刪除在點數據中有變更的是點Q和點S。每當點R被刪除,點R2的數據就被創(chuàng)建,如圖12所示那樣在同一點R的點數據30a內記錄被刪除前的點R1的點數據10b和刪除后的點R2的點數據30b。
然后在被刪除的點R2的點數據30b內記錄表示該刪除是作為圖形的第幾次變形來進行的變形次數值30c。在這里由于是第3次變形所以記錄「3」,由于該變形是進行了刪除的變形,所以在這里附加表示是因刪除而引起的變形的記號「-」。
另外在點Q的點數據30a中記錄變更前的點Q1的點數據10b、Q2的點數據20b以及變更后的點Q3的點數據30b,然后在點S的點數據30a中記錄變更前的點S1的點數據10b和變更后的點S2的點數據30b,表示因3次變形而創(chuàng)建的變形次數值30c一起被記錄。這里的變形次數值是「3」。
根據本發(fā)明的數據結構所記錄的圖形數據每當因點的移動、刪除、新生成、屬性的變更、或者鄰接點的變更而進行了變形,將變形次數設為1如圖10~12所示那樣在該對象圖形的變更記錄數據40上順次將變形次數相加記錄后進行保持,并可對變更歷史進行管理。而且在返回變形前的情況下即便是在任意級之前也可通過指定變形記錄數據的數值返回到變更過程的任意的時點進行編輯。
上述變更記錄數據40在進行了返回操作的情況下,通知各點數據現階段的圖形處于變更過程的哪個階段。
例如若設變形被進行了30次,則在變更記錄數據40中記錄30。而且,之后在進行了跳過5階段前的變更過程的返回操作的情況下,變更記錄數據40記錄25。
即,在上述變更記錄數據40中所記錄的數值是現階段的圖形,各點數據以變形次數25以下的最新信息來表達圖形。即,各點數據用變更記錄數據40的數值來識別根據26、27、28、29、30次變形的信息不是與現階段的圖形有關的信息。
如上述那樣,在構成圖形的所有點的數據上記錄好與圖形的變形有關的信息,并在各點的數據上記錄變更次數值,進而對對象圖形記錄好變更記錄數據40,由此例如在取消方才進行過的行為的情況下,探索將歷史等級相應減1后的信息即可,另外由于在變更記錄數據40中記錄著當前正編輯中的圖形是第幾次的變更,所以本發(fā)明就提供一種即便變形次數增加也不會有點數據的交錯,能夠將歷史管理得有條不紊,不論是多次次至哪個階段都能夠自由地返回的操作性較高的圖形數據。
接受本發(fā)明的數據結構的輸入輸出的程序能夠寫入CD-ROM、半導體或IC等記錄介質來實現。
該程序按圖形各點數據的新建、刪除、變更等各階段寫入存儲器以成為上述數據結構,或根據目的按照本數據結構特有的規(guī)則進行讀出,包含本程序的應用程序是能夠對2維、3維的平面與曲面混雜的圖形簡單地進行處理的劃時代的程序。
圖13表示對根據本發(fā)明的數據結構將圖形的點P的點數據及屬性信息寫入存儲器的程序的流程圖。
圖14表示對根據本發(fā)明的數據結構,將圖形的點P的點數據刪除,從鄰接點Pi刪除與點P有關的信息的程序的流程圖。
圖15表示對根據本發(fā)明的數據結構,將圖形的點PA設為點PB的鄰接點,將點PB設為點PA的鄰接點的程序的流程圖。
圖16表示對根據本發(fā)明的數據結構,從圖形的點PA的點數據刪除鄰接點PB的信息,從點PB的點數據刪除鄰接點PA的信息的程序的流程圖。
圖17表示對根據本發(fā)明的數據結構,從圖形的點PA向點PB,以順時針旋轉取出鄰接點的程序的流程圖。其中,圖中的K是正整數,K=1時取出緊靠右鄰的點,K=2時取出下一右鄰的點。
圖18表示對根據本發(fā)明的數據結構,從圖形的點PA向點PB,以反時針旋轉取出鄰接點的程序的流程圖。其中,圖中的K是正整數,K=1時取出緊靠左鄰的點,K=2時取出下一左鄰的點。
圖19表示對根據本發(fā)明的數據結構,在圖形的點PA與鄰接點PB之間生成新點PC的點數據,且寫入點PA、PB、PC的鄰接信息的程序的流程圖。
圖20表示對根據本發(fā)明的數據結構,將構成從圖形的點PA向點PB線的左側的面的點以反時針旋轉進行取出的程序的流程圖。
圖21表示對根據本發(fā)明的數據結構,將構成從圖形的點PA向點PB的線的右側的面的點以順時針旋轉進行取出程序的流程圖。
實施例1在下面詳細闡述根據本發(fā)明的數據結構的實施例。
圖22是表示根據本發(fā)明的數據結構的實施例的說明用2維圖形的圖。圖中1是2維圖形,點V0、V1、V2、V3、V4、V5、V6、V7、V8、V9、V10、V11、V12、V13、V14是構成2維圖形1的點。
用于將該圖形記錄在存儲器中的數據結構,是構成該圖的多個點數據的集合,各點數據分別保持著圖形的表達所必需的信息。
在圖22中,首先因為V0的鄰接點是與V0用線所連結著的點V1、V3、V6、V7,所以在點V0的點數據中使鄰接點左旋按點V1、V3、V6、V7的順序順次記錄各點的地址數據V1、V3、V6、V7。另外各鄰接點V1、V3、V6、V7也以同樣的形式進行記錄,在各鄰接點之中,表示點V0的地址數據第幾個進行記錄的數值被記錄在V0的點數據中。雖然在這里設鄰接點按左旋(Counter Clockwise反時針回轉)規(guī)則的順序進行記錄,但也可以按照右旋(Clockwise順時針回轉)規(guī)則。
圖23表示對上述圖形的點V0記錄了點數據的數據表。圖中2是V0的地址,3是鄰接點的地址數據,4是表示在各鄰接點的數據表中點V0的地址數據被第幾個記錄的數值,5是記錄鄰接點的地址的順序。此外鄰接點按照預先所決定的規(guī)則順序進行記錄,在前面敘述是按照所說的左旋的規(guī)則,鄰接點的地址數據3在這里按左旋以5所示的順序進行記錄。
圖24用一覽表來顯示關于上述圖形的所有點的點數據。
接著就從圖24的數據結構抽取圖22所示的區(qū)域A的方法進行說明。區(qū)域A用設點V0為出發(fā)點經由V3、V5、V9、V6返回到V0的線所包圍。
首先在圖24中,在點V0的點數據表中,點V3的地址數據V3是第2個,表示在上述V3的數據表中點V0的地址數據被第幾個記錄的數值(以下稱之為配置數值)為3。
接著由于從上述V3的配置數值3減去1就為2,所以點V3的數據表的第2個被導出。若觀看點V3的數據表的第2個就可知有點V5的地址數據V5,V5的配置數值為1。
然后從上述V5的配置數值1減去1。由于從配置數值1減去1就為0而在點數據表中沒有0的地方,所以參照點V5的點數據表的最后的數值。于是就有記錄著點V9的地址數據V9,配置數值為1。
同樣由于從V9的配置數值1減去1就為0所以參照點V9的數據表的最后的數值。于是就有V6的地址數據V6,配置數值為2。
同樣由于從配置數值2減去1就為1,所以參照點V6的點數據表的第1個。于是V0的地址數據V0就被導出。
即,沿區(qū)域A繞了1周,區(qū)域A被抽取出。
在上面敘述中從配置數值減去1的操作意味著在區(qū)域中以左旋來進行探索,如果在以右旋進行探索的情況下進行在配置數值上加上1的操作即可。
此外在下面,使用記號E將轉移至點Vi的鄰接點表的第j個中所寫入的點Vm的地址的動作寫為
Vm=E[Vi(j)]。
這里Vi(j)是點Vi的點數據表的第j個中所寫入的點Vn的地址數據,E表示實際轉移到Vm的動作。若使用此記號E,設Pj為點Vi的點數據表的第j個中所寫入的點Vm的配置數值欄的數,設點Vi的鄰接點的個數為K,設XmodK為將X用K相除后的余數,則點Vi、Vm的反時針旋轉進行轉移的操作就被表示為Vn=E[Vm(((Pj-1+K-1)modK)+1)]。
在后述的項目中決定為「當在配置數值上加1或者減1時,在參照點數據表的配置數值上沒有加1或者減1后的數值的情況下,例如,配置數值為3通過加1運算而必須對參照數據表的第4個進行參照但在該數據表中沒有第4個的情況下就使之返回到第1個,在配置數值為1通過減1運算而使參照數值為0的情況下就參照最后的數值」,但在上述公式中也可以不對其進行考慮。
在前述的圖22中,由于區(qū)域A是由點V0、V3、V5、V9、V6所構成的5角形區(qū)域,所以區(qū)域A的面積就能夠如下面那樣容易地求解。
首先,在適當的位置配置點O,計算△OV0V3的面積。此時在從點O來看點從V0向點V3的方向為反時針旋轉時將此面積設為+,在順時針旋轉時設為-。
同樣計算△OV3V5、△OV5V9、△OV9V6、△OV6V0的面積,若使其全部進行相加則求得區(qū)域A的面積。即便在連結鄰接點之間的線為曲線的情況下只要能夠計算區(qū)域OV0V3、OV3V5、OV5V9、OV9V6、OV6V0的面積,就能夠完全同樣地計算區(qū)域A的面積。另外,即便在上述曲線其計算變得復雜而難以求得準確的面積這樣的情況下,根據上述辦法就可進行近似的面積計算。
圖25在上述圖形數據中作為屬性記錄了高度信息。作為各點的屬性的高度信息顯示在各點數據的最下面。
在這里用以下方法從圖25所示的點數據表近似地求解等高線。例如在想探尋高度100m的地方時,比較高度為0的點與其鄰接點的高度。即,在高度0與鄰接點的高度之差為100m以上的情況下,在其中間就有100m的點。由于點V0和V3分別為0m和500m的高度所以在用直線連結這兩2點的情況下就從連結點V0和V3的線的點V0起將5分之1的點P100設為高度100m的點。
進行同樣的計算,將點V0和V6之間的點Q100設為100m的高度。進而若對點V1、V2...V7進行同樣的計算,則可獲得高度100m的點列。通過將這些點連結起來就能夠劃出高度100m的近似的等高線。在高度全部直線地進行變化,且連結鄰接點的線為直線的情況下就獲得準確的等高線。
如果這樣獲得等高線則還能夠顯示山的棱線或谷線等,另外還能夠預測在降雨時哪里將成為最湍急等。通過與天氣圖進行組合,就自動地獲得在局部大雨之時哪里危險,或安全之處在哪里等之類的信息。
另外在連結鄰接點的線為道路的情況下,如果將各點設為交叉點,將該點上的交通量作為屬性來進行存儲,則還可容易地獲得交通信息。道路的總延長距離或其他與道路有關的各種各樣信息也可獲得。
通過組合上述圖形的數據,進而組合別的圖形數據,就可與詳細的地圖一起求得對我們的生活而言所必要的各種信息。
這樣本發(fā)明的數據結構由于能夠從各種各樣的角度出發(fā)使構成圖形的各自的點持有必要的許多屬性,所以其用途幅度廣,為應用范圍廣的數據結構。而且,由于圖形為僅點數據的構成,各點數據本身也是用單純的數值或指針等進行構成,所以數據量少計算機的處理速度也快。
實施例2接著詳細闡述本發(fā)明的3維圖形中的實施例。
圖26表示3維圖形,點V0、V1、V2、V3、V4、V5、V6、V7是構成該圖形7的點。
在本發(fā)明的數據結構中,上述各點作為分別保持著表達圖形所必需的信息的點數據來進行記錄。
在圖26的圖形7中,首先因為V0的鄰接點是與V0用直線連結著的點V1、V3、V4,所以在點V0的點數據中使鄰接點左旋按點V1、V3、V4的順序順次記錄各點的地址數據V1、V3、V4。另外各鄰接點V1、V3、V4也以同樣的形式進行記錄,在各鄰接點之中,表示點V0的地址數據第幾個進行記錄的數值被記錄在V0的點數據中。
雖然在這里設鄰接點按左旋(Counter Clockwise)規(guī)則的順序進行記錄,但也可以按照右旋(Clockwise)規(guī)則。
記錄3維圖形7的數據結構也用與在前述的2維圖形的實施例中所說明過的同樣的數據表來進行構成。
圖27是表示3維圖形7的數據結構的圖,用數據表的形式來表示構成圖形7的各點數據。
基于圖27來說明對3維圖形7的任意的面進行描繪的方法。
點V0具有點V1、V3、V4這3個鄰接點。設在上述鄰接點之內導出例如以與鄰接點V3的關系所描繪的圖形。
在點V0的數據表之中,鄰接點V3作為第2個鄰接點來進行記錄。于是可知上述鄰接點V3的地址數據為V3,配置數值為1。因此,在V3的配置數值1上加1或者減1。即,在從V0的鄰接點起向右回轉的情況下在配置數值上加上+1,在向左回轉的情況下在配置數值上加上-1。
在本實施例中,由于若選擇右旋在V3的配置位置1上加1則為2所以引導至V3的點數據中的第2個鄰接點。在V3的點數據中處于第2個的是V2。于是V2的配置數值為1。
若在V2的配置數值1上加1則為2,被引導到在V2的點數據中的第2個所記錄的V1,其配置數值為1。
因此若在其上加1則為2所以若觀看點V1的點數據表的第2個則為點V0,由于這是出發(fā)點所以能夠導出□V0V3V2V1。
此外,還能夠以與取出構成多面體的棱線或面的頂點同樣的操作,取出曲面的控制點。雖然在這里沒有進行詳細敘述但作為結果就是多面體或曲面混雜的圖形的數據能夠以完全相同的構造進行記錄。
即便在3維的圖形中,也能夠使用記號E將轉移至點Vi的鄰接點表的第j個中所寫入的點Vm的地址的動作寫為Vm=E[Vi(j)]。
這里Vi(j)是點Vi的點數據表的第j個中所寫入的點Vn的地址數據,E表示實際轉移到Vm的動作。若使用此記號E,設Pj為點Vi的點數據表的第j個中所寫入的點Vm的配置數值欄的數,設點Vi的鄰接點的個數為K,設XmodK為將X用K相除后的余數,則相對于連結點Vi、Vm的線的左側的面以反時針旋轉導出點Vn的操作就被表示為Vn=E[Vm(((Pj-1+K-1)modK)+1)](51-1)。另外相對于右側的面以順時針旋轉導出點Vn的操作就被表示為Vn=E[Vm(((Pj+1+K-1)modK)+1)](51-2)。
當在配置數值上加1或者減1時,在參照點數據表的配置數值上沒有加1或者減1后的數值的情況下,例如,配置數值為3通過加1運算而必須對參照數據表的第4個進行參照但在該數據表中沒有第4個的情況下就使之返回到第1個。另外在配置數值為1通過減1運算而使參照數值為0的情況下就參照最后的數值。
由于如上述那樣用E來表達對1個鄰接點探索1次以導出新的頂點的操作,所以本發(fā)明的數據結構就成為將在3維圖形的多面體處理中多用的面的棱線以左旋或者右旋進行抽取的操作,分別進行1次操作即可而不需要繁雜的操作的數據結構。
圖28是具有閉區(qū)域的3維圖形7a和不持有閉區(qū)域的圖形7b共有點V1、所謂的非流形圖形的例子。針對圖形7a的點V1以外的點數據的處理與上述同樣。但是,由于圖形7b不具有閉區(qū)域。所以就不能從外部來看成為順時針旋轉或者反時針旋轉這樣來決定鄰接點的順序,因此點V1中的鄰接點的順序例如決定為V10、V12、V14。也可以是V10、V14、V12的順序。
若將點V1的鄰接點的順序決定為V10、V12、V14,則在從箭頭的方向來看圖形8的面F1,將面F1的構成頂點以反時針旋轉進行取出時,就能夠利用上述的公式(51-1)。其中,設公式(51-1)的式中出現的數K為面F1的構成頂點的數。
圖28的圖形7a及7b的點V1的點數據如圖29那樣構成。將點V1的點數據分成圖形7a的鄰接點數據和圖形7b的鄰接點數據,使圖形7a的鄰接點數據存儲在表的上方,使圖形7b的鄰接點數據存儲在表的下方。如果將對于點V1的圖形7b的鄰接點以V10、V12、V14附加順序,則在從箭頭的方向來看圖28的面F1時,取出面F1的V1、V10的下一構成點V11的(以反時針旋轉)計算就被表示為V11=E[V10(((Pj-1+K2-1)modK2)+K1+1)]......(54-1)。其中,K1為屬于點V1的圖形7a的鄰接點的數,K2為屬于圖形7b的鄰接點的數。另外,P1為對于點V1的鄰接點V10的配置數值。在從箭頭的方向來看面F1時,將面F1的構成點以反時針旋轉進行取出時,只要全部進行與公式(54-1)同樣的計算,圖28的點V11、V12...的鄰接點的順序就自動地決定。
圖30是用表示其他實施例的說明圖示出點C0~C11的點列。
例如在設C1為出發(fā)點將C4、C7、C10順次取出時在圖31所示的點數據表的配置數值上進行加2或者減2運算。此外當在配置數值上進行了加2或者減2運算時,在點數據表上沒有該進行了加法運算的數值的次序的情況下,例如配置數值為3通過加2運算而必須參照點數據表的第5個但在點數據表中只有靠下一個的第4個的數據的情況下就取代第5個而返回到第1個,另外在配置數值為4通過加2的運算而必須點數據表的第6個,但在點數據表中只要靠下兩個的第4個的數據的情況下就取代第6個而返回到第2個。而且在減去2后的數值為0的情況下參照鄰接點表的最后,在成為-1的情況下就從最后起參照第2個。
在縱方向或者橫方向上探索呈圖30那樣格子狀所賦予的點列順次取出點列的操作在曲面的生成時經常進行。
圖32表示根據本發(fā)明的數據結構從2維圖形向3維圖形進行展開的具體例子。
圖32(a)是制作服裝情況下的紙型(紙樣)的2維圖形,圖中1、1’是前身,2、2’是后身,圖32(b)是對上述紙型進行了縫合、穿在人體上的情況下的圖(3維圖形)。
在本發(fā)明中由于不論2維圖形還是3維圖形都以同一數據結構進行構成,所以使各點A~J持有屬性信息,例如僅對A1和A1’、B1和B2、C1和C2...之類的情形指定進行縫合所必要的地方(點),就能夠進行圖24(b)所示的向立體的展開。
接著在本發(fā)明的數據結構中就形成曲面的方法表示其一例。
在這里對利用細分化法的曲面與平面混雜的圖形進行生成。
細分化法是指將圖形的有棱角的部分一點點弄圓滑最終得到平滑的曲線和曲面的形狀的方法。
在本實施例中采用由Catmull&Clark所提案的細分化的辦法。
在本發(fā)明的數據結構中,通過使構成圖形的各點的數據持有屬性來進行細分化。
這里使各點所持有的屬性可以列舉出1.是多面體的頂點,2.是多面體的頂點且是曲面的控制點,3.是平面與曲面的邊界上的控制點,4.是曲面的控制點等。
在本發(fā)明的數據結構中,由于圖形的數據只是其構成點的數據且作為各點分別保持圖形表達所必需的信息的構造來構成,所以能夠通過不用僅曲面的數據或者僅曲線的特別的數據之類的區(qū)別的、上述Catmull&Clark的細分化辦法來容易地進行連接曲面上的點與邊界上的點的細分化。
此外細分化以表示利用細分化的曲面的生成方法的圖33(a)~(f)所示的過程來進行,以生成曲面。圖中(a)是未進行細分化的3維圖形,(b)是第1次的細分化圖形,(c)是第2次的細分化圖形,(d)是第3次的細分化圖形,(e)是第4次的細分化圖形,(f)是第5次的細分化圖形。
在本發(fā)明的數據結構中,表示生成圖34所示的具有圓筒面的3維圖形A的方法。關于點V1、V2、V5、V6以外的圖形A的點的處理適用上述方法。與點V1、V2相關的數據結構的一部分在圖35中示出。為了描繪連結點V1和V2的線,首先,在點V1的點數據區(qū)域看寫有點V2的地址數據的欄的右端的屬性值P,參照在地址P中所存儲的數據。若地址P的屬性值則可知是圓弧。
另外,可知圓弧在平面ax+vy+cz=d之上,中心為(x0,y0,z0),半徑為f、圓弧的開始點為角度0度、終點為角度30度。
在不持有鄰接點的圓或者球這樣的用數學式來表示的圖形中,如果在圖形上決定任意的點P,該點P的點數據只要將指向存儲著數學式的地方的指針作為屬性來進行記述,而無需特別地記述與鄰接點有關的信息。
這里進行通過本發(fā)明來表達多面體的情況下的數據量與通過以往的作為代表技術的半邊數據結構來表達多面體的情況下的數據量的比較。
此外在下面以理論上所必需的最小限度的存儲容量來進行計算。實際上在創(chuàng)建程序的階段,由于大多持有各種各樣的冗余度,所以為了實際的數據量的比較,而需要比較通過2種數據結構所創(chuàng)建的立體的數據量。
最初就半邊數據結構中所必需的種類和大小來進行考慮。
1.在半邊數據結構中將圖36(a)用棱線e進行分割如圖36(b)所示那樣對于1條棱線e,使之在單側存儲6種(pccw,pcw,pf,pv,nv,e’)信息。由于在相反側也存儲著相同的數據量所以合計將12種信息作為數據來進行存儲。由于它們全部是指向記錄著點信息的地址的指針所以每1個指針需要4字節(jié)的存儲器,存儲全部棱線所需要的存儲器容量Ne就為Ne=4×12ne=48ne。這里ne是構成多面體的棱線的數。
2.頂點數據所需要的存儲容量頂點的3維坐標值用(x、y、z)的組合來進行表達。另外由于這些坐標值是浮點數,所以分別需要4字節(jié)。若設多面體的構成頂點數為nv則所需要的存儲器容量Nv就可用Nv=4×3×nv=12nv來表示。
雖然處理上述的數據以外通常還使其持有指向面及棱線的指針這樣來進行編程,但由于在這里考慮最小限度的存儲器所以忽略它們。
3.面數據所需要的存儲容量由于需要由面參照其構成棱線中的1條的指針,所以必需的存儲器容量Nf為Nf=4×nf。
這里nf是構成多面體的面的數。
若綜合上述1.2.3則為了存儲多面體所需要的全部存儲容量Nh就可用Nh=48ne+12nv+4nf來表示。
然而,已知在沒有孔的多面體的頂點、棱線、面的數之間以下關系成立(歐拉示性數)。
nv+nf-ne=2由于若多面體的面、棱線、頂點的數變多,則與它們進行比較后上式的右邊的常數2就能夠看作可忽略程度的微少量,所以下式近似成立。
ne=nv+nf......(1)由于頂點數與面數的關系無法解析地求出,所以無法準確地進行記述,若假設按nf=1.5nv來進行估算,則所需要的數據量就為Nh=48ne+12nv+4×1.5nv=48ne+18nv。若利用公式(1)就得到Nh=48ne+7.2ne=55.2ne......(2)。
也就是可知為了用半邊數據結構存儲沒有孔的多面體所必需的存儲器容量最低也需要55.2ne字節(jié)。
就用根據本發(fā)明的數據結構不持有屬性信息的情況來進行考慮。
用于存儲頂點的坐標值的存儲器容量與半邊數據結構相同。也就是,為了存儲頂點的坐標值所必需的容量Nv為Nv=12nv......(3)字節(jié)。
就用于點數據表所需要的存儲器進行考察。
由于鄰接點的數僅為棱線數的正好2倍,另外設各要素需要4字節(jié)的存儲器,所以用于點數據表所必需的存儲器Nn,
由于鄰接點表中記載的數據僅為共有的棱線數的正好2倍,另外設表的各數據區(qū)域需要4字節(jié)的存儲器,所以用于點數據表所必需的存儲器Nn為Nn=2ne×4=8ne......(4)字節(jié)。在一個頂點上鄰接的頂點的數為256以下的情況下,在與指向各鄰接點的地址的指針相對應的配置數值的存儲用1字節(jié)的存儲器就足夠,所以用于此配置數值的存儲的存儲器Np為Np=2ne......(5)字節(jié)就可解決。
若將式(3)、(4)、(5)進行匯總則可知所需要的存儲容量Nc為Nc=12nv+8ne+2ne=14.8ne...(6)字節(jié)就可解決。
若比較式(2)和(6)則可知與本發(fā)明相關的數據結構需要的存儲器容量與半邊數據結構進行比較為其27%弱。
在1個點上連接256點以上的點的情況下,例如在65,536點以下的情況下由于在點數據表的配置數的存儲需要2字節(jié)所以若對式(5)的Np重新進行計算就為,Np=4ne字節(jié)。在此情況下就為半邊數據結構的33%左右。
由于在1個頂點上鄰接65,536點以上這樣的多面體通常不會生成,所以更多頂點鄰接的情況下的存儲容量的計算就省略。
上述的比較在理論上對最小的存儲器容量進行了估算,在實際上由于兩者都持有某種程度的冗余度,所以還有必要進行在計算機上進行了安裝的情況的比較。將半邊數據結構和與本發(fā)明相關的數據結構分別安裝在計算機上經過比較后,以與本發(fā)明相關的數據結構對立體進行了記述的情況下的數據量與半邊數據結構的情況進行比較約為1/3。
接著針對在利用根據本發(fā)明的數據結構,將與圖形的變形相關的歷史信息全部進行存儲的情況下存儲容量增加何種程度,實際創(chuàng)建程序使圖37所示的3維圖形創(chuàng)建的歷史進行存儲來檢查所必需的存儲器。
圖37是以本發(fā)明的數據結構進行了存儲的3維圖形的一例,圖38表示此圖形被創(chuàng)建的過程。圖示了將各過程分成操作等級1~9,在途中進行返回操作進入下一工序的之類的一系列的操作流程。
圖37所示的3維圖形A用以下那樣的工序來進行創(chuàng)建。
最初,生成圖38所示的2維圖形(操作等級1),對此面進行掃掠以生成3維圖形(操作等級2)。進而,在上面生成凸起(突起)(操作等級3)。
接著取消操作等級3,返回到操作等級2生成底面的凹部(操作等級4)。然后接下來在上面進行凹部的生成和孔的形成(操作等級5)。進而,在上面的其他部分進行凹部的生成和孔的形成(操作等級6)。
形成別的孔(操作等級7)。然后,取消操作等級7的孔的形成,返回操作等級6在上面生成凹部(操作等級8)。
然后最后進行孔的形成(操作等級9),將上部的凹部的部分曲面化,并創(chuàng)建3維圖形A。
在從上述操作等級1到9的工序中,從操作等級1的圖形開始按操作等級2、操作等級3...這樣來進行變形。
即,如表示各操作等級的流程的圖38那樣,在按<1>→<2>→<3>進行了變形后,取消<3>返回到<2>,按<2>→<4>→<5>→<6>→<7>進行變形,這一次取消<7>返回到<6>按<6>→<8>→<9>進行變形。
在從此操作等級1到9的變形中,對全部存儲了其變更歷史信息的情況下的存儲容量的推移進行記錄后結果在圖39中表示。
在圖39所示的圖表中,橫軸表示進行了變形的次數(將操作等級1~9設為歷史等級1~9來表達),縱軸表示實際使用了存儲器的存儲容量及圖形A的頂點數。上述圖表中的▲點表示圖形A的頂點數的變化。
另外在上述圖表中,棒狀圖表a表示存儲在操作等級的各階段中所生成的圖形所需要的存儲容量,棒狀圖表b表示存儲直至以其操作等級所生成的圖形為止的全部變形歷史(全部變更歷史)所要的存儲容量,棒狀圖表c表示存儲直到其操作等級的階段為止的各操作等級(例如,在歷史等級5的情況下直到歷史等級1~5為止的各歷史等級)中的全部圖形所需要的存儲容量的合計。
根據圖39所示的圖表可知存儲全部變形歷史所必需的存儲量(棒狀圖表b)在存儲一個圖形所必需的存儲器(棒狀圖表a)的大致1.3~1.5之間進行推移。倍率變高時就是在圖形生成后進行了操作取消時。
此外為了比較,進行通過半邊數據結構存儲圖38的操作等級9所示的圖形單體所必需的存儲容量的估算。由其結果可知存儲操作等級9所示的圖形單體所必需的存儲量在使用本發(fā)明的數據結構存儲全部操作等級的變更歷史所必需的存儲量的成倍以上。
為了對根據本發(fā)明的圖形的變更歷史與存儲器的使用量的關系更為詳細地進行比較,對圖40所示的圖形B進行與上述同樣的調查。
其結果就是圖41所示的表示100次變更歷史與消耗存儲器量的關系的圖表。
在此例子中,由于圖形的變形次數為100次所以計測以每10次來進行。可知雖然存儲一個圖形所必需的存儲器量隨著形狀變得復雜而增加,但保持全部變更歷史所必需的存儲器量相對較低。
在上述圖表中,棒狀圖表A表示進行了各操作后存儲一個圖形必需的全部存儲器量,棒狀圖表B表示存儲到此為止的全部變形歷史所需要的存儲器量。圖表的△標記表示存儲一個圖形所必需的存儲器量與存儲全部變形歷史所要的存儲器量之比的推移。
根據上述調查可知即便將圖形的變更歷史全部存儲在數據中,其存儲量也小,與存儲用半邊數據結構所創(chuàng)建的圖形的情況進行比較,存儲器使用量大幅變少而不錯。即,在根據半邊數據結構的一個圖形數據必需的存儲器量以下,用本發(fā)明的數據結構就能夠創(chuàng)建持有全部變更歷史的圖形數據。
作為上述記載內容的匯總,在圖42的比較表中示出用本發(fā)明的數據結構對圖形進行創(chuàng)建保存的情況與用現有技術的半邊數據結構對圖形進行創(chuàng)建保存的情況的不同。
權利要求
1.一種使計算機存儲2維和3維圖形的數據結構,所述數據結構是用于將由計算機所描繪的2維和3維圖形可再現地記錄在計算機的存儲器中的手段,可僅用使作為表達該圖形的幾何學形狀的線的端點構成該圖形的各點保持為了表達圖形所必需的信息的點數據的集合體來構成圖像數據以進行該圖形的表達,其中所述計算機具備存儲圖形數據及對其進行處理的程序的裝置和對上述圖形數據進行處理的運算裝置,所述數據結構的特征在于在對記錄上述各構成點各自的點數據的點數據區(qū)域分配了固有的地址時,在構成上述圖形的點的點數據區(qū)域上按照預先所決定的規(guī)則順次記錄與該點用線所連結的多個鄰接點的、表示點數據區(qū)域之地址的地址數據。
2.根據權利要求1所述的數據結構,其特征在于表示該點的點數據區(qū)域的地址數據被記錄在與該點用線所連結的鄰接點的各點數據區(qū)域的順序分別為第幾個的數值被記錄于該點的點數據區(qū)域。
3.根據權利要求1所述的數據結構,其特征在于預先所決定的規(guī)則在2維圖形中是指右旋或左旋,在3維圖形中是指從圖形的外側觀看頂點為右旋或左旋。
4.根據權利要求1所述的數據結構,其特征在于上述點數據保持有屬性信息。
5.根據權利要求4所述的數據結構,其特征在于上述點數據的屬性信息是從該點的坐標值或者指向記錄著坐標值的區(qū)域的地址的指針、表示點的種類的預先所決定的數值或字符數據、表示點的顏色的預先所決定的數值或字符數據、表示與點有關的處理的種類的預先所決定的數值或字符數據、指向記錄著其他圖形數據的區(qū)域的地址的指針、以及表示是樣條曲線、B-樣條曲線、貝塞爾曲線、NURBS曲線、細分化曲線、或者B-樣條曲線、貝塞爾曲線、NURBS曲線以外的自由曲線中的哪一個的控制點的預先所決定的數值或字符數據中所挑選的1個或2以上的屬性信息。
6.根據權利要求4所述的數據結構,其特征在于上述點數據的屬性信息是與在該點與其鄰接點之間所劃的線有關的屬性信息。
7.根據權利要求6所述的數據結構,其特征在于上述與線有關的屬性信息是從表示線的種類的預先所決定的數值或字符數據、表示線的顏色的預先所決定的數值或字符數據、在線為曲線的情況下曲線的定義式數據或指向存儲著曲線的定義式的區(qū)域的地址的指針、系數及變量的定義域數據或指向存儲著定義域的區(qū)域的地址的指針、以及表示是樣條曲線、B-樣條曲線、貝塞爾曲線、NURBS曲線、細分化曲線、或者B-樣條曲線、貝塞爾曲線、NURBS曲線以外的自由曲線中的哪一個種類的預先所決定的數值或字符數據中所挑選的1個或2個以上的屬性信息。
8.根據權利要求1所述的數據結構,其特征在于在因構成該對象圖形的一個或者多個點的移動、刪除、新點的創(chuàng)建、屬性的變更或鄰接點的變更而變形的情況下,在上述變更已進行的各點的點數據中,作為歷史信息記錄著表示是移動、刪除、新創(chuàng)建的點、屬性變更或鄰接點變更已進行的點的信息和表示該變形是該對象圖形的第幾次變形的變形次數值。
9.根據權利要求8所述的數據結構,其特征在于在進行了變形的情況下作為其歷史信息的變形次數值是對每個變形設變形次數為1并順次將變形次數相加起來進行記錄,在圖形的變形是因點的刪除而引起的情況下,在上述變形次數值上附加表示其變形是因點的刪除而引起的記號。
10.根據權利要求8所述的數據結構,其特征在于在因構成該對象圖形的點的移動、刪除、屬性變更、或鄰接點變更而發(fā)生圖形變形的情況下,在各點數據中作為歷史信息記錄著該點的移動前、刪除前、屬性變更前、或鄰接點變更前的點數據,和移動后、刪除后、屬性變更后、或鄰接點變更后的點數據。
11.根據權利要求8所述的數據結構,其特征在于在該對象圖形因構成該圖形的新點的創(chuàng)建而變形的情況下,該點的點數據就被作為持有其變形時刻的變形次數值作為歷史信息的新點數據來進行創(chuàng)建、記錄。
12.根據權利要求8所述的數據結構,其特征在于在因點的移動、刪除、新建、屬性的變更、或者鄰接點的變更而進行了變形的情況下,該對象圖形的數據與各點數據相區(qū)別每次保持設變形次數為1相加記錄后的該對象圖形的變更記錄。
13.一種程序,在將由計算機所描繪的2維和3維圖形可再現地記錄在計算機的存儲器中時,將構成該圖形的上述點的點數據在存儲器上進行寫入或者讀出,以使得可僅用使作為表達該圖形的幾何學形狀的線的端點構成該圖形的各點保持為了表達該圖形所必需的信息的點數據的集合體來構成該圖像數據以進行該圖形的表達,其中所述計算機具備存儲圖形數據及對其進行處理的程序的裝置和對上述圖形數據進行處理的運算裝置,所述程序的特征在于(1)分配上述各點的數據被記錄的區(qū)域的地址的命令以及按照利用目的讀出該地址的命令;(2)將與構成該圖像的點用線所連結的多個鄰接點的、表示各點數據區(qū)域之地址的地址數據按照預先所決定的規(guī)則順次寫入該點的點數據區(qū)域的命令以及按照利用目的從同一區(qū)域讀出的命令。
14.根據權利要求13所述的程序,其特征在于包括將表示該點的數據區(qū)域的地址數據被記錄在多個鄰接點的各點數據區(qū)域的順序分別為第幾個的數值寫入該點的點數據區(qū)域的命令和按照利用目的從同一區(qū)域讀出的命令。
15.根據權利要求13所述的程序,其特征在于預先所決定的規(guī)則在2維圖形中是指右旋或左旋,在3維圖形中是指從圖形的外側觀看頂點為右旋或左旋。
16.根據權利要求13所述的程序,其特征在于還包括將權利要求4所述的屬性信息寫入上述點數據區(qū)域的命令和按照利用目的從同一區(qū)域讀出的命令。
17.根據權利要求13所述的程序,其特征在于還包括將權利要求8所述的歷史信息寫入上述點數據區(qū)域的命令和按照利用目的從同一區(qū)域讀出的命令。
18.一種程序,其特征在于可用權利要求13所述的程序在計算機上進行2維圖形處理、3維圖形處理、或者2維和3維圖形混雜的圖形的處理。
19.一種記錄了權利要求13所述的計算機程序的計算機可讀取的記錄介質。
20.一種記錄基于利用權利要求13所述的計算機程序所創(chuàng)建的上述數據結構的圖形數據進行數據庫化并可以利用的計算機可讀取的記錄介質。
全文摘要
本發(fā)明提供一種在用計算機進行圖形處理的情況下,將2維圖形或3維圖形的數據以同一形式統(tǒng)一進行記錄的數據結構,且數據量少處理效率優(yōu)良的數據結構以及對該數據結構進行讀寫的程序。所述數據結構是在用計算機來處理2維或3維圖形的情況下,作為用于將經過處理的圖形的數據記錄在計算機存儲器中的手段,構成該圖形的多個點具有各自固有的點數據而成的數據結構,其中在該點P具有用線所連結的鄰接點Q、R、S...的情況下,上述點的數據包括(1)該點P的數據被記錄的區(qū)域的地址;(2)按照預先所決定的規(guī)則順次記錄于該點P的數據區(qū)域的、指向與同一點P鄰接的多個鄰接點Q、R、S...各自的點數據被記錄的區(qū)域的地址的指針。
文檔編號G06F17/30GK1691018SQ200510067690
公開日2005年11月2日 申請日期2005年4月22日 優(yōu)先權日2004年4月23日
發(fā)明者古川進, 清水誠司, 向井伸治, 原豐, 門馬宏子, 福島守 申請人:日本索阿株式會社, 古川進