GHL 3.2.2 リリースノート

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

GHL 3.2.2 は GHL 3.2.1 に引き続いて GHL 3.2 を補完するバージョンで、 以下に挙げる機能を新たに追加しました。



バージョンアップの概要

・2次元:2曲線の最短距離を求める機能

2本の曲線が最も接近している箇所とその距離を求める 関数を追加しました。 ここでは、以下に挙げるうちの最も短いものを最短距離としています。

	2曲線の共通法線の長さ
	一方の曲線の端点あるいは特異点から他方の曲線への垂線の長さ
	一方の曲線の端点あるいは特異点から他方の曲線の端点あるいは特異点への距離
・2次元:曲線の存在範囲を求める機能

ある曲線の存在範囲をXY軸に平行な矩形領域として求める 関数を追加しました。 曲線の存在範囲を表す形状としては、矩形の他にも円や凸包多角形などが 考えられますが、(取り敢えずは) 矩形だけをサポートしています。

・3次元:三角形集合の保存/再構成を支援する機能

これまでの GHL では、三角形集合のデータ構造を基本的には公開しておらず、 その情報を GHL の外部に一旦保存した後に再構成するためには、 GHL の内部処理を調べる必要がありました。 GHL 3.2.2 では三角形集合の保存/再構成を支援する 関数を追加し、 三角形集合の扱い易さを高めました。

・3次元:曲線境界曲面の三角形分割の安定性を高める

これまでの GHL では、曲線境界曲面を三角形分割する 関数において、 曲線境界曲面の外周/内周が点列であるときに、 その各点の間隔が曲面の内部を分割する精度に相対して荒い場合に、 うまく三角形分割できないことがありました。 GHL 3.2.2 ではこれを改善し、三角形分割の安定性を高めました。

・3次元:有理多辺パッチを生成する機能 (試験的導入)

GHL 3.2 において、 複数のフィレットなどが集まる部分の形状を無理なく表現することが できるような多辺パッチを試験的に導入しましたが、 この多辺パッチは境界線の表現が多項式であったために、 フィレットの円弧などの円錐曲線とは厳密には接続できませんでした。 GHL 3.2.2 では、境界線を 有理表現にした多辺パッチを導入して、 円弧などの有理曲線と厳密に接続できるようにしました。


追加された関数

2次元

gh2crv0Bsc2	Bスプライン曲線の変曲点を得る(タイプ2)
gh2crv0RBsc2	有理Bスプライン曲線の変曲点を得る(タイプ2)
gh2cuspBsc	Bスプライン曲線の尖点を得る
gh2cuspBzc	ベジエ曲線の尖点を得る
gh2cuspCir	円の尖点を得る
gh2cuspCmc	複合曲線の尖点を得る
gh2cuspCrv	曲線の尖点を得る
gh2cuspEll	楕円の尖点を得る
gh2cuspHyp	双曲線の尖点を得る
gh2cuspLin	直線の尖点を得る
gh2cuspLsg	ラインセグメントの尖点を得る
gh2cuspPar	放物線の尖点を得る
gh2cuspRBsc	有理Bスプライン曲線の尖点を得る
gh2cuspRBzc	有理ベジエ曲線の尖点を得る
gh2cuspTrc	トリム曲線の尖点を得る
gh2defn0Cmc	複合曲線の定義
gh2defn1Cmc	複合曲線の定義(トリム曲線の追加)
gh2defn2Cmc	複合曲線の定義(開閉フラグの設定)
gh2dlnyStrip	ドロネー図 − 幾何情報の削除
gh2enbxBsc	Bスプライン曲線の存在領域(矩形)を得る
gh2enbxBzc	ベジエ曲線の存在領域(矩形)を得る
gh2enbxCir	円の存在領域(矩形)を得る
gh2enbxCmc	複合曲線の存在領域(矩形)を得る
gh2enbxCrv	曲線の存在領域(矩形)を得る
gh2enbxEll	楕円の存在領域(矩形)を得る
gh2enbxHyp	双曲線の存在領域(矩形)を得る
gh2enbxLin	直線の存在領域(矩形)を得る
gh2enbxLsg	ラインセグメントの存在領域(矩形)を得る
gh2enbxPar	放物線の存在領域(矩形)を得る
gh2enbxRBsc	有理Bスプライン曲線の存在領域(矩形)を得る
gh2enbxRBzc	有理ベジエ曲線の存在領域(矩形)を得る
gh2normBscLsg	Bスプライン曲線とラインセグメントの共通法線を得る
gh2normBzcLsg	ベジエ曲線とラインセグメントの共通法線を得る
gh2normCirLsg	円とラインセグメントの共通法線を得る
gh2normEllLsg	楕円とラインセグメントの共通法線を得る
gh2normHypLsg	双曲線とラインセグメントの共通法線を得る
gh2normLinLsg	直線とラインセグメントの共通法線を得る
gh2normLsgCmc	ラインセグメントと複合曲線の共通法線を得る
gh2normLsgLsg	2ラインセグメントの共通法線を得る
gh2normLsgTrc	ラインセグメントとトリム曲線の共通法線を得る
gh2normParLsg	放物線とラインセグメントの共通法線を得る
gh2normRBscLsg	有理Bスプライン曲線とラインセグメントの共通法線を得る
gh2normRBzcLsg	有理ベジエ曲線とラインセグメントの共通法線を得る
gh2sdstBscBsc2	2Bスプライン曲線の最短距離を全て得る
gh2sdstBscBsc	2Bスプライン曲線の最短距離を一つだけ得る
gh2sdstBscCmc2	Bスプライン曲線と複合曲線の最短距離を全て得る
gh2sdstBscCmc	Bスプライン曲線と複合曲線の最短距離を一つだけ得る
gh2sdstBscRBsc2	Bスプライン曲線と有理Bスプライン曲線の最短距離を全て得る
gh2sdstBscRBsc	Bスプライン曲線と有理Bスプライン曲線の最短距離を一つだけ得る
gh2sdstBscRBzc2	Bスプライン曲線と有理ベジエ曲線の最短距離を全て得る
gh2sdstBscRBzc	Bスプライン曲線と有理ベジエ曲線の最短距離を一つだけ得る
gh2sdstBscTrc2	Bスプライン曲線とトリム曲線の最短距離を全て得る
gh2sdstBscTrc	Bスプライン曲線とトリム曲線の最短距離を一つだけ得る
gh2sdstBzcBsc2	ベジエ曲線とBスプライン曲線の最短距離を全て得る
gh2sdstBzcBsc	ベジエ曲線とBスプライン曲線の最短距離を一つだけ得る
gh2sdstBzcBzc2	2ベジエ曲線の最短距離を全て得る
gh2sdstBzcBzc	2ベジエ曲線の最短距離を一つだけ得る
gh2sdstBzcCmc2	ベジエ曲線と複合曲線の最短距離を全て得る
gh2sdstBzcCmc	ベジエ曲線と複合曲線の最短距離を一つだけ得る
gh2sdstBzcRBsc2	ベジエ曲線と有理Bスプライン曲線の最短距離を全て得る
gh2sdstBzcRBsc	ベジエ曲線と有理Bスプライン曲線の最短距離を一つだけ得る
gh2sdstBzcRBzc2	ベジエ曲線と有理ベジエ曲線の最短距離を全て得る
gh2sdstBzcRBzc	ベジエ曲線と有理ベジエ曲線の最短距離を一つだけ得る
gh2sdstBzcTrc2	ベジエ曲線とトリム曲線の最短距離を全て得る
gh2sdstBzcTrc	ベジエ曲線とトリム曲線の最短距離を一つだけ得る
gh2sdstCirBsc2	円とBスプライン曲線の最短距離を全て得る
gh2sdstCirBsc	円とBスプライン曲線の最短距離を一つだけ得る
gh2sdstCirBzc2	円とベジエ曲線の最短距離を全て得る
gh2sdstCirBzc	円とベジエ曲線の最短距離を一つだけ得る
gh2sdstCirCir2	2円の最短距離を全て得る
gh2sdstCirCir	2円の最短距離を一つだけ得る
gh2sdstCirCmc2	円と複合曲線の最短距離を全て得る
gh2sdstCirCmc	円と複合曲線の最短距離を一つだけ得る
gh2sdstCirEll2	円と楕円の最短距離を全て得る
gh2sdstCirEll	円と楕円の最短距離を一つだけ得る
gh2sdstCirHyp2	円と双曲線の最短距離を全て得る
gh2sdstCirHyp	円と双曲線の最短距離を一つだけ得る
gh2sdstCirPar2	円と放物線の最短距離を全て得る
gh2sdstCirPar	円と放物線の最短距離を一つだけ得る
gh2sdstCirRBsc2	円と有理Bスプライン曲線の最短距離を全て得る
gh2sdstCirRBsc	円と有理Bスプライン曲線の最短距離を一つだけ得る
gh2sdstCirRBzc2	円と有理ベジエ曲線の最短距離を全て得る
gh2sdstCirRBzc	円と有理ベジエ曲線の最短距離を一つだけ得る
gh2sdstCirTrc2	円とトリム曲線の最短距離を全て得る
gh2sdstCirTrc	円とトリム曲線の最短距離を一つだけ得る
gh2sdstCmcCmc2	2複合曲線の最短距離を全て得る
gh2sdstCmcCmc	2複合曲線の最短距離を一つだけ得る
gh2sdstCrvCrv2	2曲線の最短距離を全て得る
gh2sdstCrvCrv	2曲線の最短距離を一つだけ得る
gh2sdstEllBsc2	楕円とBスプライン曲線の最短距離を全て得る
gh2sdstEllBsc	楕円とBスプライン曲線の最短距離を一つだけ得る
gh2sdstEllBzc2	楕円とベジエ曲線の最短距離を全て得る
gh2sdstEllBzc	楕円とベジエ曲線の最短距離を一つだけ得る
gh2sdstEllCmc2	楕円と複合曲線の最短距離を全て得る
gh2sdstEllCmc	楕円と複合曲線の最短距離を一つだけ得る
gh2sdstEllEll2	2楕円の最短距離を全て得る
gh2sdstEllEll	2楕円の最短距離を一つだけ得る
gh2sdstEllHyp2	楕円と双曲線の最短距離を全て得る
gh2sdstEllHyp	楕円と双曲線の最短距離を一つだけ得る
gh2sdstEllPar2	楕円と放物線の最短距離を全て得る
gh2sdstEllPar	楕円と放物線の最短距離を一つだけ得る
gh2sdstEllRBsc2	楕円と有理Bスプライン曲線の最短距離を全て得る
gh2sdstEllRBsc	楕円と有理Bスプライン曲線の最短距離を一つだけ得る
gh2sdstEllRBzc2	楕円と有理ベジエ曲線の最短距離を全て得る
gh2sdstEllRBzc	楕円と有理ベジエ曲線の最短距離を一つだけ得る
gh2sdstEllTrc2	楕円とトリム曲線の最短距離を全て得る
gh2sdstEllTrc	楕円とトリム曲線の最短距離を一つだけ得る
gh2sdstHypBsc2	双曲線とBスプライン曲線の最短距離を全て得る
gh2sdstHypBsc	双曲線とBスプライン曲線の最短距離を一つだけ得る
gh2sdstHypBzc2	双曲線とベジエ曲線の最短距離を全て得る
gh2sdstHypBzc	双曲線とベジエ曲線の最短距離を一つだけ得る
gh2sdstHypCmc2	双曲線と複合曲線の最短距離を全て得る
gh2sdstHypCmc	双曲線と複合曲線の最短距離を一つだけ得る
gh2sdstHypHyp2	2双曲線の最短距離を全て得る
gh2sdstHypHyp	2双曲線の最短距離を一つだけ得る
gh2sdstHypRBsc2	双曲線と有理Bスプライン曲線の最短距離を全て得る
gh2sdstHypRBsc	双曲線と有理Bスプライン曲線の最短距離を一つだけ得る
gh2sdstHypRBzc2	双曲線と有理ベジエ曲線の最短距離を全て得る
gh2sdstHypRBzc	双曲線と有理ベジエ曲線の最短距離を一つだけ得る
gh2sdstHypTrc2	双曲線とトリム曲線の最短距離を全て得る
gh2sdstHypTrc	双曲線とトリム曲線の最短距離を一つだけ得る
gh2sdstLinBsc2	直線とBスプライン曲線の最短距離を全て得る
gh2sdstLinBsc	直線とBスプライン曲線の最短距離を一つだけ得る
gh2sdstLinBzc2	直線とベジエ曲線の最短距離を全て得る
gh2sdstLinBzc	直線とベジエ曲線の最短距離を一つだけ得る
gh2sdstLinCir2	直線と円の最短距離を全て得る
gh2sdstLinCir	直線と円の最短距離を一つだけ得る
gh2sdstLinCmc2	直線と複合曲線の最短距離を全て得る
gh2sdstLinCmc	直線と複合曲線の最短距離を一つだけ得る
gh2sdstLinEll2	直線と楕円の最短距離を全て得る
gh2sdstLinEll	直線と楕円の最短距離を一つだけ得る
gh2sdstLinHyp2	直線と双曲線の最短距離を全て得る
gh2sdstLinHyp	直線と双曲線の最短距離を一つだけ得る
gh2sdstLinLin2	2直線の最短距離を全て得る
gh2sdstLinLin	2直線の最短距離を一つだけ得る
gh2sdstLinLsg2	直線とラインセグメントの最短距離を全て得る
gh2sdstLinLsg	直線とラインセグメントの最短距離を一つだけ得る
gh2sdstLinPar2	直線と放物線の最短距離を全て得る
gh2sdstLinPar	直線と放物線の最短距離を一つだけ得る
gh2sdstLinRBsc2	直線と有理Bスプライン曲線の最短距離を全て得る
gh2sdstLinRBsc	直線と有理Bスプライン曲線の最短距離を一つだけ得る
gh2sdstLinRBzc2	直線と有理ベジエ曲線の最短距離を全て得る
gh2sdstLinRBzc	直線と有理ベジエ曲線の最短距離を一つだけ得る
gh2sdstLinTrc2	直線とトリム曲線の最短距離を全て得る
gh2sdstLinTrc	直線とトリム曲線の最短距離を一つだけ得る
gh2sdstParBsc2	放物線とBスプライン曲線の最短距離を全て得る
gh2sdstParBsc	放物線とBスプライン曲線の最短距離を一つだけ得る
gh2sdstParBzc2	放物線とベジエ曲線の最短距離を全て得る
gh2sdstParBzc	放物線とベジエ曲線の最短距離を一つだけ得る
gh2sdstParCmc2	放物線と複合曲線の最短距離を全て得る
gh2sdstParCmc	放物線と複合曲線の最短距離を一つだけ得る
gh2sdstParHyp2	放物線と双曲線の最短距離を全て得る
gh2sdstParHyp	放物線と双曲線の最短距離を一つだけ得る
gh2sdstParPar2	2放物線の最短距離を全て得る
gh2sdstParPar	2放物線の最短距離を一つだけ得る
gh2sdstParRBsc2	放物線と有理Bスプライン曲線の最短距離を全て得る
gh2sdstParRBsc	放物線と有理Bスプライン曲線の最短距離を一つだけ得る
gh2sdstParRBzc2	放物線と有理ベジエ曲線の最短距離を全て得る
gh2sdstParRBzc	放物線と有理ベジエ曲線の最短距離を一つだけ得る
gh2sdstParTrc2	放物線とトリム曲線の最短距離を全て得る
gh2sdstParTrc	放物線とトリム曲線の最短距離を一つだけ得る
gh2sdstPntBsc2	点とBスプライン曲線の最短距離を全て得る
gh2sdstPntBsc	点とBスプライン曲線の最短距離を一つだけ得る
gh2sdstPntBzc2	点とベジエ曲線の最短距離を全て得る
gh2sdstPntBzc	点とベジエ曲線の最短距離を一つだけ得る
gh2sdstPntCir2	点と円の最短距離を全て得る
gh2sdstPntCir	点と円の最短距離を一つだけ得る
gh2sdstPntCmc2	点と複合曲線の最短距離を全て得る
gh2sdstPntCmc	点と複合曲線の最短距離を一つだけ得る
gh2sdstPntCrv2	点と曲線の最短距離を全て得る
gh2sdstPntCrv	点と曲線の最短距離を一つだけ得る
gh2sdstPntEll2	点と楕円の最短距離を全て得る
gh2sdstPntEll	点と楕円の最短距離を一つだけ得る
gh2sdstPntHyp2	点と双曲線の最短距離を全て得る
gh2sdstPntHyp	点と双曲線の最短距離を一つだけ得る
gh2sdstPntLin2	点と直線の最短距離を全て得る
gh2sdstPntLin	点と直線の最短距離を一つだけ得る
gh2sdstPntLsg2	点とラインセグメントの最短距離を全て得る
gh2sdstPntLsg	点とラインセグメントの最短距離を一つだけ得る
gh2sdstPntPar2	点と放物線の最短距離を全て得る
gh2sdstPntPar	点と放物線の最短距離を一つだけ得る
gh2sdstPntRBsc2	点と有理Bスプライン曲線の最短距離を全て得る
gh2sdstPntRBsc	点と有理Bスプライン曲線の最短距離を一つだけ得る
gh2sdstPntRBzc2	点と有理ベジエ曲線の最短距離を全て得る
gh2sdstPntRBzc	点と有理ベジエ曲線の最短距離を一つだけ得る
gh2sdstPntTrc2	点とトリム曲線の最短距離を全て得る
gh2sdstPntTrc	点とトリム曲線の最短距離を一つだけ得る
gh2sdstRBscCmc2	有理Bスプライン曲線と複合曲線の最短距離を全て得る
gh2sdstRBscCmc	有理Bスプライン曲線と複合曲線の最短距離を一つだけ得る
gh2sdstRBscRBsc2	2有理Bスプライン曲線の最短距離を全て得る
gh2sdstRBscRBsc	2有理Bスプライン曲線の最短距離を一つだけ得る
gh2sdstRBscTrc2	有理Bスプライン曲線とトリム曲線の最短距離を全て得る
gh2sdstRBscTrc	有理Bスプライン曲線とトリム曲線の最短距離を一つだけ得る
gh2sdstRBzcCmc2	有理ベジエ曲線と複合曲線の最短距離を全て得る
gh2sdstRBzcCmc	有理ベジエ曲線と複合曲線の最短距離を一つだけ得る
gh2sdstRBzcRBsc2	有理ベジエ曲線と有理Bスプライン曲線の最短距離を全て得る
gh2sdstRBzcRBsc	有理ベジエ曲線と有理Bスプライン曲線の最短距離を一つだけ得る
gh2sdstRBzcRBzc2	2有理ベジエ曲線の最短距離を全て得る
gh2sdstRBzcRBzc	2有理ベジエ曲線の最短距離を一つだけ得る
gh2sdstRBzcTrc2	有理ベジエ曲線とトリム曲線の最短距離を全て得る
gh2sdstRBzcTrc	有理ベジエ曲線とトリム曲線の最短距離を一つだけ得る
gh2sdstTrcCmc2	トリム曲線と複合曲線の最短距離を全て得る
gh2sdstTrcCmc	トリム曲線と複合曲線の最短距離を一つだけ得る
gh2sdstTrcTrc2	2トリム曲線の最短距離を全て得る
gh2sdstTrcTrc	2トリム曲線の最短距離を一つだけ得る
gh2striAllcSerialized	三角形の集合 − 配列領域の獲得
gh2striDlny2	三角形の集合 − 生成(タイプ2)
gh2striFlipDiagonal	三角形の集合 − 対角変形
gh2striFreeSerialized	三角形の集合 − 配列領域の解放
gh2striGetPeg	三角形の集合 − Gh2Peg を取り出す
gh2striSerialize	三角形の集合 − 内部情報を配列として獲得
gh2striUnserialize	三角形の集合 − 配列からの再構成
gh2tng0Bsc2	Bスプライン曲線の特異点を得る(タイプ2)
gh2tng0RBsc2	有理Bスプライン曲線の特異点を得る(タイプ2)
gh2vrniStrip	ボロノイ図 − 幾何情報の削除

3次元

gh3convRGSSTri	有理Sパッチを三角形群に変換する
gh3coorRGS	あるパラメータ値での有理Sパッチの値(点)を得る
gh3cretRGS	有理 Gregory Sパッチを生成する
gh3crv0Bsc2	Bスプライン曲線の変曲点を得る(タイプ2)
gh3crv0RBsc2	有理Bスプライン曲線の変曲点を得る(タイプ2)
gh3defn0Cmc	複合曲線の定義
gh3defn1Cmc	複合曲線の定義(トリム曲線の追加)
gh3defn2Cmc	複合曲線の定義(開閉フラグの設定)
gh3freeRGS	構造体領域の解放 − 有理Sパッチ
gh3incdRGS2	有理Sパッチの次数を1つ上げる
gh3normRGS	有理Sパッチの法線ベクトルを求める
gh3striAllcSerialized	三角形の集合 − 配列領域の獲得
gh3striFlipDiagonal	三角形の集合 − 対角変形
gh3striFreeSerialized	三角形の集合 − 配列領域の解放
gh3striGetPeg	三角形の集合 − Gh2Peg を取り出す
gh3striSerialize	三角形の集合 − 内部情報を配列として獲得
gh3striUnserialize	三角形の集合 − 配列からの再構成
gh3tng0Bsc2	Bスプライン曲線の特異点を得る(タイプ2)
gh3tng0RBsc2	有理Bスプライン曲線の特異点を得る(タイプ2)

不具合の修正

trg2/intrelm/gh2normCrvCmc.c および trg2/intrelm/gh2tangCrvCmc.c
SunOS5 CC でのコンパイル時にタイプミスマッチの警告が出ていました。
trg3/elmcrtn/gh3ofstCbsCbs.c
SunOS5 CC でのコンパイル時にタイプミスマッチの警告が出ていました。
gh2ints*Lsg (* は任意の曲線タイプ)
交点の存在しないときに、処理がおかしくなることがありました。
gh2ints*Trc (* は任意の曲線タイプ)
メモリーリークする場合がありました。
gh3ints{Lin,Cir,Ell,Par,Hyp}[R]Bzs
メモリーリークする場合がありました。
gh3cprmSph, gh3cprmCyl, gh3cprmCon
3次元の曲線を曲面のパラメータ上の2次元曲線に移す際に、 結果がラインセグメントになる場合に、正しく処理できないことがありました。
gh3ints*Cbs (* は任意の曲線タイプ)
Cbs の基礎面が平面/二次曲面である場合がサポートされていませんでした。
gh3ints*Cbs (* は任意の曲面タイプ)
Cbs の基礎面と他方の曲面との交線が無限になる場合に正しい結果が得られませんでした。
gh3icboCbs
Cbs の基礎面上の無限な曲線を Cbs の境界で正しくトリミングできませんでした。
gh3ints*Trc (* は任意の曲線タイプ)
メモリーリークする場合がありました。
gh[23]convTrcLsg
Trc の母線が Lsg の時、正しく Lsg に変換されませんでした。
gh[23]conv[Cir,Ell]RBsc
増分値がちょうど2PIの時、開曲線に変換されるのを、閉曲線になるようにしました。
gh2ofst[R]BscBsc2
正しい結果が得られないことがありました。

サポートに関する御連絡は、以下の宛先へお送り下さい。

株式会社 精密形状処理研究所
FAX:03-5276-6478

GHL 企画/開発担当者

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

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