GHL 3.4.8 リリースノート

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



バージョンアップの概要

2/3次元:点列のBスプライン近似:別バージョン
点列をBスプライン曲線で近似する gh[23]aprcBsc について、 近似するBスプラインのセグメント数を少なくしようとするバージョンを用意しました。 この新しいバージョンは関数名の末尾に '_Rev3' という文字列が付いています。

2/3次元:より使いやすいインターフェイスを持つ関数群を追加
多くの関数について、利用する側にとってより使いやすい インターフェイスを持つ別バージョンを用意しました。

テスト環境:gh[23]prnt* の出力を読み込むライブラリの提供
gh[23]prnt* の出力を読み込むライブラリ 'ybs' を添付しました。

テスト環境:gh[23]prnt* の出力をカタチとして画面に表示するプログラムの提供
gh[23]prnt* の出力を形状として画面に表示するプログラム 'qudan-II' を添付しました。


追加された関数

1次元

gh1allcCrv		構造体領域の獲得 − 曲線
gh1copyCrv		ある曲線をコピーする
gh1defnCrv		曲線の定義
gh1freeCrv		構造体領域の解放 − 曲線

2次元

gh2clgpCPnt2		閉じた点列に対応するパラメータ列を生成する (chord length)
gh2clgpPnt2		点列に対応するパラメータ列を生成する (chord length)
gh2cnctBsc		二つのBスプライン曲線を結合する
gh2cnctRBsc		二つの有理Bスプライン曲線を結合する
gh2convBscLsg2		Bスプライン曲線を直線近似した点列を得る
gh2convBscRBzcL		Bスプライン曲線を再現する有理ベジエ曲線を得る
gh2convBzcLsg2		ベジエ曲線を直線近似した点列を得る
gh2convBzcRBzcL		ベジエ曲線を再現する有理ベジエ曲線を得る
gh2convCirLsg2		円を直線近似した点列を得る
gh2convCirRBzcL		円を再現する有理ベジエ曲線を得る
gh2convCmcLsg2		複合曲線を直線近似した点列を得る
gh2convCrvLsg2		曲線を直線近似した点列を得る
gh2convCrvRBzcL		曲線を再現する有理ベジエ曲線を得る
gh2convEllLsg2		楕円を直線近似した点列を得る
gh2convEllRBzcL		楕円を再現する有理ベジエ曲線を得る
gh2convHypLsg2		双曲線を直線近似した点列を得る
gh2convHypRBzcL		双曲線を再現する有理ベジエ曲線を得る
gh2convLinLsg2		直線を直線近似した点列を得る
gh2convLinRBzcL		直線を再現する有理ベジエ曲線を得る
gh2convLsgLsg2		ラインセグメントを直線近似した点列を得る
gh2convLsgRBzcL		ラインセグメントを再現する有理ベジエ曲線を得る
gh2convParLsg2		放物線を直線近似した点列を得る
gh2convParRBzcL		放物線を再現する有理ベジエ曲線を得る
gh2convRBscLsg2		有理Bスプライン曲線を直線近似した点列を得る
gh2convRBscRBzcL	有理Bスプライン曲線を再現する有理ベジエ曲線を得る
gh2convRBzcLsg2		有理ベジエ曲線を直線近似した点列を得る
gh2convRBzcRBzcL	有理ベジエ曲線(の指定区間)を再現する有理ベジエ曲線を得る
gh2convRCrvLsg		曲線を直線近似した点列を得る
gh2convRCrvLsg2		曲線を直線近似した点列を得る
gh2convRCrvRBsc		曲線を再現する有理Bスプライン曲線を得る
gh2convRCrvRBzc		曲線を再現する有理ベジエ曲線を得る
gh2convRCrvRBzcL	曲線を再現する有理ベジエ曲線を得る
gh2convTrcLsg2		トリム曲線を直線近似した点列を得る
gh2convTrcRBzcL		トリム曲線を再現する有理ベジエ曲線を得る
gh2copyCrv		ある曲線をコピーする
gh2copyPntS		点の配列をコピーする
gh2ctrpCPnt2		閉じた点列に対応するパラメータ列を生成する (centripetal)
gh2ctrpPnt2		点列に対応するパラメータ列を生成する (centripetal)
gh2defnCrv		曲線の定義
gh2defnTrc2		トリム曲線の定義
gh2exchBscBzcL		Bスプライン曲線をベジエ曲線に変換する
gh2exchRBscRBzcL	有理Bスプライン曲線を有理ベジエ曲線に変換する
gh2freeIntsCrvCrvL	交点情報を解放する
gh2freeNormCrvCrvL	共通法線の情報を解放する
gh2freeProjPntCrvL	投影点情報を解放する
gh2freeTangCrvCrvL	共通接線の情報を解放する
gh2freeTangPntCrvL	接線情報を解放する
gh2gtdmCrv		曲線のパラメータ定義域を得る
gh2intsCrvCrvL		2曲線の交点を得る
gh2intsRCrvRCrvL	2曲線の交点を得る
gh2normCrvCrvL		2曲線の共通法線を得る
gh2normRCrvRCrvL	2曲線の共通法線を得る
gh2projPntCrvL		ある点を曲線に投影する
gh2projPntRCrvL		ある点を曲線に投影する
gh2rmvcCmc		複合曲線操作 − 複合曲線から指定のトリム曲線を削除する
gh2rmvcCmc2		複合曲線操作 − 複合曲線から指定のトリム曲線を削除する
gh2tangCrvCrvL		2曲線の共通接線を得る
gh2tangPntCrvL		ある点から曲線への接線を得る
gh2tangPntRCrvL		ある点から曲線への接線を得る
gh2tangRCrvRCrvL	2曲線の共通接線を得る

3次元

gh3clgpCPnt2		閉じた点列に対応するパラメータ列を生成する (chord length)
gh3clgpPnt2		点列に対応するパラメータ列を生成する (chord length)
gh3cnctBsc		二つのBスプライン曲線を結合する
gh3cnctRBsc		二つの有理Bスプライン曲線を結合する
gh3convBscLsg2		Bスプライン曲線を直線近似した点列を得る
gh3convBscRBzcL		Bスプライン曲線を再現する有理ベジエ曲線を得る
gh3convBzcLsg2		ベジエ曲線を直線近似した点列を得る
gh3convBzcRBzcL		ベジエ曲線を再現する有理ベジエ曲線を得る
gh3convCirLsg2		円を直線近似した点列を得る
gh3convCirRBzcL		円を再現する有理ベジエ曲線を得る
gh3convCmcLsg2		複合曲線を直線近似した点列を得る
gh3convCrvLsg2		曲線を直線近似した点列を得る
gh3convCrvRBzcL		曲線を再現する有理ベジエ曲線を得る
gh3convEllLsg2		楕円を直線近似した点列を得る
gh3convHypLsg2		双曲線を直線近似した点列を得る
gh3convHypRBzcL		双曲線を再現する有理ベジエ曲線を得る
gh3convLinLsg2		直線を直線近似した点列を得る
gh3convLinRBzcL		直線を再現する有理ベジエ曲線を得る
gh3convLsgLsg2		ラインセグメントを直線近似した点列を得る
gh3convLsgRBzcL		ラインセグメントを再現する有理ベジエ曲線を得る
gh3convParLsg2		放物線を直線近似した点列を得る
gh3convParRBzcL		放物線を再現する有理ベジエ曲線を得る
gh3convRBscLsg2		有理Bスプライン曲線を直線近似した点列を得る
gh3convRBscRBzcL	有理Bスプライン曲線を再現する有理ベジエ曲線を得る
gh3convRBzcLsg2		有理ベジエ曲線を直線近似した点列を得る
gh3convRBzcRBzcL	有理ベジエ曲線(の指定区間)を再現する有理ベジエ曲線を得る
gh3convRCrvLsg		曲線を直線近似した点列を得る
gh3convRCrvLsg2		曲線を直線近似した点列を得る
gh3convRCrvRBsc		曲線を再現する有理Bスプライン曲線を得る
gh3convRCrvRBzc		曲線を再現する有理ベジエ曲線を得る
gh3convRCrvRBzcL	曲線を再現する有理ベジエ曲線を得る
gh3convTrcLsg2		トリム曲線を直線近似した点列を得る
gh3convTrcRBzcL		トリム曲線を再現する有理ベジエ曲線を得る
gh3copyCrv		ある曲線をコピーする
gh3copyPntS		点の配列をコピーする
gh3copySrf		ある曲面をコピーする
gh3ctrpCPnt2		閉じた点列に対応するパラメータ列を生成する (centripetal)
gh3ctrpPnt2		点列に対応するパラメータ列を生成する (centripetal)
gh3defnCrv		曲線の定義
gh3defnSrf		曲面の定義
gh3defnTrc2		トリム曲線の定義
gh3exchBscBzcL		Bスプライン曲線をベジエ曲線に変換する
gh3exchBssBzsL		Bスプライン曲面をベジエ曲面に変換する
gh3exchRBscRBzcL	有理Bスプライン曲線を有理ベジエ曲線に変換する
gh3exchRBssRBzsL	有理Bスプライン曲面を有理ベジエ曲面に変換する
gh3freeIntsCrvCrvL	交点情報を解放する
gh3freeIntsCrvSrfL	交点情報を解放する
gh3freeIntsSrfSrfL	交線情報を解放する
gh3freeProjPntCrvL	投影点情報を解放する
gh3freeProjPntSrfL	投影点情報を解放する
gh3gtdmCrv		曲線のパラメータ定義域を得る
gh3gtdmSrf		曲面のパラメータ定義域を得る
gh3intsCrvCrvL		2曲線の交点を得る
gh3intsCrvSrfL		曲線と曲面の交点を得る
gh3intsRCrvRCrvL	2曲線の交点を得る
gh3intsRCrvRSrfL	曲線と曲面の交点を得る
gh3intsRSrfRSrfL	2曲面の交線を得る
gh3intsSrfSrfL		2曲面の交線を得る
gh3projPntCrvL		ある点を曲線に投影する
gh3projPntRCrvL		ある点を曲線に投影する
gh3projPntRSrfL		ある点を曲面に投影する
gh3projPntSrfL		ある点を曲面に投影する
gh3rmvcCmc		複合曲線操作 − 複合曲線から指定のトリム曲線を削除する
gh3rmvcCmc2		複合曲線操作 − 複合曲線から指定のトリム曲線を削除する

ユーティリティ

gh_copyDblS		実数の配列をコピーする
gh_copyIntS		実数の配列をコピーする
gh_lstmFree2		リスト全体を廃棄する
gh_lstmGetRmvNPgProc	ノードの削除関数を返す
gh_lstmRmvN2		ノードを削除する
gh_lstmSetRmvNPgProc	ノードの削除関数を設定する
gh_prntGtPrntUicp	uicp と v_uicp の出力フラグの指定の獲得
gh_prntStPrntUicp	uicp と v_uicp の出力フラグの設定

不具合の修正

以下は、GHL 3.4.7 リリース以降に修正した不具合の一覧です。
関数: [3D] gh3intsConCon()
二つの円錐が同型で、互いの ruling を共有し、一方が他方の内側にある場合に 正しい解が得られないことがありました。

関数: [3D] gh3intsRtsRts(), gh3intsSrfTLes()
柱面の V 方向が U 方向に比べて非常に長い場合に正しい解が得られないことがありました。

関数: [3D] gh3intsCylCon()
円柱面と円錐面の軸が直交して交わる場合に正しい解が得られないことがありました。

関数: [3D] gh3projPntBzs()
曲面に非常に近い点を投影する場合に正しい解が得られないことがありました。

関数: [2D] gh2projPntEll()
解が [0, 2pai] の範囲に wrap されない場合がありました。

関数: [3D] gh3convCrvLsg()
直線近似の範囲の指定が (pint->increase == 0) の場合に制御を失うことがありました。

関数: [2D] gh2convCrvLsg()
直線近似の範囲の指定が (pint->increase == 0) の場合に制御を失うことがありました。

関数: [2D] gh2intsCirCir()
二つの解が非常に近く一つの解とすべきか否かの閾値を小さくし、 より精密な解が得られるようにしました。

関数: [2D] gh2jdgwCCmc()
正しい解が得られない場合がありました。

関数: [2D] gh2intsCirBsc(), gh2intsEllBsc(), gh2intsHypBsc(), gh2intsParBsc()
Bスプライン曲線のノット列が比較的大きな値のものである場合に正しい解が得られない場合がありました。

関数: [3D] gh3intsCirBsc(), gh3intsEllBsc(), gh3intsHypBsc(), gh3intsParBsc()
Bスプライン曲線のノット列が比較的大きな値のものである場合に正しい解が得られない場合がありました。

関数: [3D] gh3ofstBscBss2(), gh3ofstRBscBss2(), gh3ofstBscBss3(), gh3ofstRBscBss3()
元の曲線に直線の部分が含まれる場合にオフセット結果がよじれることがあり ました。

関数: [3D] 自由曲面を対象とする交線関数
Gh__3intsSrfFfs_BzsOverlapTol が比較的大きな値 (デフォルト状態も含む) の場合に正しい交線が求まらないことがありました。

関数: [3D] 最短距離関数
GH__LMT_TOL が比較的大きな場合に正しい解が得られないことがありました。

関数: [3D] 最短距離関数
演算対象となる幾何要素が平行に近い関係になる部分を持つ場合に正しい解が 得られないことがありました。

関数: [3D] gh3intpCBsc(), gh3intpCBss(), gh3intpCBssC2()
プログラムが落ちる場合がありました。(バージョン 3.4.7 特有)

関数: [2D] 自由曲線を対象とする長さ関数 gh2leng*()
特異点を持つ曲線について正しい解が得られないことがありました。

関数: [3D] 自由曲線を対象とする長さ関数 gh3leng*()
特異点を持つ曲線について正しい解が得られないことがありました。

関数: [3D] gh3convCbsSTri_Rev2(), gh3convCbsSTri2_Rev2()
複数の穴を持つトリム曲線について正しい解が得られないことがありました。

関数: [3D] 曲線-曲面間の最短距離関数
正しい解が得られない場合がありました。

関数: [2D] gh2idntOPrmOPrm()
内部で無限ループ (再起呼び出し) に陥る場合がありました。

関数: [3D] gh3idntOPrmOPrm()
内部で無限ループ (再起呼び出し) に陥る場合がありました。

関数: [3D] gh3convCbsSTri_Rev2(), gh3convCbsSTri2_Rev2()
曲率の大きな部分を含むトリム曲面について正しい解が得られないことがありました。

関数: [2D] gh2inckPntCCmc()
内外判定を間違える場合がありました。

関数: [3D] 自由曲面を対象とする交線関数
曲面が非常に細長い場合に正しい解が得られない場合がありました。 なお、この問題を修正した結果、 解として得られる点列を構成する点の数が以前より若干増える場合があります。

関数: [3D] 二次曲線-自由曲面間の交線関数
交線に不要な揺れが含まれる場合がありました。

関数: [3D] gh3intsPlnCon()
解が点に縮退する場合に、第 4/5 引数に NULL が与えられているとプログラ ムが落ちるようになっていました。

関数: [2D] gh2projPntEll()
長径と短径の差が大きな楕円について正しい解が得られない場合がありました。

ファイル: [3D] ghlv3/src/3d/elmcrtn/gh3hndlStri.c
external として宣言されている内部関数がありました。

ファイル: [--] ghlv3/src/util/gh_utilNtre.c
external として宣言されている内部関数がありました。
貴重な時間を費やして、 不具合を御報告頂いた皆様に改めて感謝致します。 ありがとうございました。

GHL 企画/開発担当者

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

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


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