GHL 3.4.1 リリースノート

本ドキュメントでは、 GHL 3.4 パッチ 01から 3.4.1 へのバージョンアップの内容 について述べています。



バージョンアップの概要

・3次元:スイーピイング曲面の別バージョン(プロファイルとスイープパスが交わる場合)
3次元空間において、ある曲線A (プロファイル) を、それに交わる別の曲線B (スイープパス) に沿って 掃引した軌跡を表す曲面を生成するための 新たな関数を追加しました。 ここで、曲線A、Bは多項式/有理Bスプライン曲線、生成される曲面は多項式/有理Bスプライン曲面です。

GHLの既存のスイーピング曲面生成機能と異なり、ここでは直接曲面を生成します。 また生成された曲面は、プロファイルおよびスイープパスを完全に通過します。

サンプルコード : ghlv3/examples/sweep_skin/sweeping2.c

・3次元:三角形集合に対する演算の拡充
GHL3.4に続き三角形集合に対する各種演算を追加しました。今回追加した機能は、オフセットです。
オフセット
三角形集合の各頂点を、そこでの法線ベクトルを元にオフセットし、新たな三角形集合を生成する 関数を追加しました。

返却値は、オフセットされた三角形の集合です。

・2次元:オフセット再考
・3次元:交線の改善
関数の挙動を動的に変更するための 仕組み を導入しました。
現バージョンでは、以下の事柄が制御できます。

追加された関数

ユーティリティ

gh_pcnfGetDouble	特定の関数の挙動を制御する実数値を返す
gh_pcnfSetDouble	特定の関数の挙動を制御する実数値を指定する
gh_pcnfGetInteger	特定の関数の挙動を制御する整数値を返す
gh_pcnfSetInteger	特定の関数の挙動を制御する整数値を指定する
gh_pcnfGetLogical	特定の関数の挙動を制御する論理値を返す
gh_pcnfSetLogical	特定の関数の挙動を制御する論理値を指定する

2次元

gh2ofstCmcCmcByBsc2	複合曲線のオフセットを複合曲線で近似する (正式版、タイプ2)
gh2ofstCmcCmcByBzc2	複合曲線のオフセットを複合曲線で近似する (正式版、タイプ2)
gh2ofstBscBsc3	Bスプライン曲線のオフセットをBスプライン曲線で近似する(タイプ3)
gh2ofstBzcBsc3	ベジエ曲線のオフセットをBスプライン曲線で近似する(タイプ3)
gh2ofstCirBsc3	円のオフセットをBスプライン曲線で近似する(タイプ3)
gh2ofstEllBsc3	楕円のオフセットをBスプライン曲線で近似する(タイプ3)
gh2ofstHypBsc3	双曲線のオフセットをBスプライン曲線で近似する(タイプ3)
gh2ofstLinBsc3	直線のオフセットをBスプライン曲線で近似する(タイプ3)
gh2ofstParBsc3	放物線のオフセットをBスプライン曲線で近似する(タイプ3)
gh2ofstRBscBsc3	有理Bスプライン曲線のオフセットをBスプライン曲線で近似する(タイプ3)
gh2ofstRBzcBsc3	有理ベジエ曲線のオフセットをBスプライン曲線で近似する(タイプ3)
gh2ofstTrcBsc3	トリム曲線のオフセットをBスプライン曲線で近似する(タイプ3)
gh2ofstBscBzc3	Bスプライン曲線のオフセットをベジエ曲線で近似する(タイプ3)
gh2ofstBzcBzc3	ベジエ曲線のオフセットをベジエ曲線で近似する(タイプ3)
gh2ofstCirBzc3	円のオフセットをベジエ曲線で近似する(タイプ3)
gh2ofstEllBzc3	楕円のオフセットをベジエ曲線で近似する(タイプ3)
gh2ofstHypBzc3	双曲線のオフセットをベジエ曲線で近似する(タイプ3)
gh2ofstLinBzc3	直線のオフセットをベジエ曲線で近似する(タイプ3)
gh2ofstParBzc3	放物線のオフセットをベジエ曲線で近似する(タイプ3)
gh2ofstRBscBzc3	有理Bスプライン曲線のオフセットをベジエ曲線で近似する(タイプ3)
gh2ofstRBzcBzc3	有理ベジエ曲線のオフセットをベジエ曲線で近似する(タイプ3)
gh2ofstTrcBzc3	トリム曲線のオフセットをベジエ曲線で近似する(タイプ3)

3次元

gh3ofstSTri		三角形の集合をオフセットする
gh3swepBscBss1		プロファイルを平行移動してコピーする(Bスプライン曲線)(タイプ2)
gh3swepBscBss2		プロファイルをスイープパスのフルネ枠の変化に応じてコピーする(Bスプライン曲線)(タイプ2)
gh3swepBscBss3		プロファイルをスイープパスの接ベクトルの変化に応じてコピーする(Bスプライン曲線)(タイプ2)
gh3swepRBscRBss1	プロファイルを平行移動してコピーする(有理Bスプライン曲線)(タイプ2)
gh3swepRBscRBss2	プロファイルをスイープパスのフルネ枠の変化に応じてコピーする(有理Bスプライン曲線)(タイプ2)
gh3swepRBscRBss3	プロファイルをスイープパスの接ベクトルの変化に応じてコピーする(有理Bスプライン曲線)(タイプ2)

不具合に伴う仕様変更について

不具合の修正でも記述しておりますが、 gh2intpBscC2, gh3intpBssC2 等、点列/点網の補間/近似を行う関数において、 両端/境界での接ベクトルが与えられた場合に、生成された曲線/曲面の接ベクトルが、 与えられた大きさにならないことがありました。

GHL3.4.1ではこの問題は解決しておりますが、この修正に伴い点列の両端における拘束条件 (ベッセルの終端条件)を求める関数 gh[23]bsslePnt の返却ベクトルの大きさを変更しました。 今までは、

であったものを、

として返却するようにしました。すなわち今までは点列をBスプライン曲線で補間した時の両端のセグメントの パラメータ空間での大きさ(長さ)が1であると見なした大きさのベクトルを返却していましたが、 GHL3.4.1では、点列に与えられたパラメータがそのままBスプラインのノットになる前提での大きさとなります。 具体的には、今までの返却ベクトルに対し、始点側では(param[1] - param[0])で割ったベクトル、 終点側では、(param[no-1] - param[no-2])で割ったベクトルとなります。

なお、今まで gh[23]bsslePnt と gh[23]intpBscC2, gh3intpBssC2 等を組み合わせてお使いいただいていた ユーザー様は特に修正の必要はありません。 gh[23]bsslePnt を単独に用いていた場合で、 そのベクトルの大きさが処理に影響が出るような場合には修正が必要となりますのでご了承ください。


不具合の修正

以下は、GHL 3.4 パッチ 01 以降の修正分です。
gh[23]gtpvOPrmRCrv
Floating point exception を起こすことがありました。 またパラメータ値上限での判断を間違うことがありました。
gh2ofstBscBsc, gh3ofstBscBss 等
元の曲線の端点に特異点があるとエラーになっていました。
gh_polyJdgd
幾何問題を代数方程式に帰着させて解く関数で、解がうまく求まらないことがありました。
gh[23]{tng0,crv0}{Bsc,RBsc}2
対象区間が2個以上ある場合に、正しいパラメータ範囲を返していませんでした。
gh2evalTrc, gh3evalTrc, gh3cotacutoTrc
導関数の計算が間違っていました(不要な符号反転をしている箇所がありました)。
gh2intsLinLsg
非常に短いセグメント内に交点がある場合に、その交点を見逃すことがありました。 また交点の重複を判断するコードに不備がありました。
gh[23]intsLsgLsg
端点に交点があり、その端点が隣の頂点と GH__LMT_TOL 以内で重複している場合に、 その交点が出力されませんでした。 また端点でオーバーラップしている場合に、端点が交点として出力されませんでした。
gh3intsBzsBzs 等
曲面の縮退している箇所に交線が存在する場合に、得られる交線が乱れることがありました。
gh3iflt{Pnt,Crv,Srf}Srf 等
GH__OPE_GEOMERR が返ることがありました。
gh3ofstBssBss 等
与えられた曲面のパラメータ空間の分布に大きな歪みがある場合に、 オフセット曲面が揺れることがありました。
gh3swepBscRBscCPY2
gh3swepRBscCPY2でプロファイルが正しい位置にコピーされないことがありました。
gh3ofstCbsCbs
開いた境界を持つ曲面が扱えるような仕様に変更しました。
gh3intsBssBss 等
処理が無限ループと感じるほど時間がかかる場合を改善しました。
gh3icboCbs
開いた境界を持つ曲面について、開いた内境との交点が得られないことがありました。
gh3ifltSrfSrf
フィレットの中心を元の面に投影するとき、間違った点を採用する可能性がある点を修正しました。 また不正終了の問題がありました。
gh3isinCbs, gh3dvdbCbs
開いた境界の端点部分がベース面の自然な境界とオーバーラップしてい ると処理を間違って無限ループに陥ることがありました。
gh3intsSphCon
解が2円となる場合に、2番目の円の情報がセットされていませんでした。
gh[23]intpBscC2, gh[23]aprxBsc4, gh3intpBssC2
両端での接ベクトルを指定する補間/近似関数で、生成された曲線/曲面の接ベクトルが 与えられた大きさにならないことがありました。
貴重な時間を費やして、 不具合を御報告頂いた皆様に改めて感謝致します。 ありがとうございました。

GHL 企画/開発担当者

柿下 尚武	naokak@pml.co.jp	
長谷川 亨	hasegawa@sra.co.jp
徐 子韜		zitao@pml.co.jp
鹿野 信幸	shikano@pml.co.jp
伊藤 英明	hideit@pml.co.jp

今後ともよろしくお願い致します。


Copyright (c) 1999 Precision Modeling Laboratory,Inc., Tokyo, Japan. All Rights Reserved.