GHL 3.4.4 Release Note

This document describes contents of version up from GHL 3.4.3 to GHL 3.4.4.



Summary of this version up

3D: Another version of triangulation
gh3convCbsSTri2_Rev2 was added for creating a set of triangles that approximates a curve bounded surface. gh3convCbsSTri2_Rev2 is another version of gh3convCbsSTri2.
2D: Improve pseudo embedded graphs to be able to have loops in faces Pseudo embedded graphs have become to be able to express loops (holes) in any faces.

added functions

2D

gh2pegCntItemsWL	count the numbers of vertices, edges, faces and loops
gh2pegCopyWL	copy
gh2pegE_GetFace	get the left face of a half edge
gh2pegE_GetMate	get the mate of a half edge
gh2pegE_GetNext	get the next edge of a half edge
gh2pegE_GetPrev	get the previous edge of a half edge
gh2pegE_GetVrtx	get the start point of a half edge
gh2pegF_GetFirstEdge	get the first edge of a face
gh2pegF_GetFirstLoop	get the first loop of a face
gh2pegF_IsFace	whether a face is actually one face
gh2pegGetEbyL	get a list of edges which surround a loop
gh2pegGetVbyL	get a list of vertices which surround a loop
gh2pegIdentLoop	identify two loops
gh2pegL_GetFace	get the face which contains a loop
gh2pegL_GetFirstEdge	get the first edge of a loop
gh2pegL_GetNextLoop	get the next loop of a loop
gh2pegL_IsLoop	whether a loop is actually one loop
gh2pegMEv2	make one edge and one vertex (type 2)
gh2pegKLME	kill one loop, make one edge
gh2pegMLKE	make one loop, kill one edge
gh2pegGetLApplD	get data which is attached to a loop
gh2pegSetLApplD	attach an arbitrary data to a loop
gh2pegTrvL	call a specified function with every loop
gh2pegV_GetFirstEdge	get the first edge of a vertex

3D

gh3convCbsSTri2_Rev2	converts a curve bounded surface by planes approximately into a set of triangle (type 2, revision 2)

List of fixed bugs

Following bugs has been fixed after the release of GHL 3.4.3.
many functions that take one or more trimmed curve as their input
zero length trimmed curves were not considered.
gh2insk{Bsc,RBsc}, gh2divi{Bsc,RBsc}
there was a case that they happened to kill the process, if the given parameter is very close to a knot.
gh2trncCmc
when it divided a composite curve at near the connecting point of two trimmed curves, a zero length segment was created.
gh2ofstCmcCmcBy*
if at least one of the trimmed curves' basis was another composite curve, it returned with an error.
gh2convRBscRBzc
it always killed the process.
gh2smplCmc
if some trimmed curves in a composite curve had another trimmed curve or another composite curve as their basis, they were not decomposed completely with only one call of this function.
gh2convLsgRBsc
closed line segments were converted to open Bspline curves.
gh2cretCir3p
did not work correctly with a case of nagative increasing value.
gh2lengCmc
returned 0 length if the curve was periodic and the requested section crossed the boundary of the parameter period.
gh2intsLinCir
there was a case that correct answers were not returned if the line and the circle contact each other.
gh2intfTrcTrc
if the basis curves of the given two curves were circles that overlapped each other, and they should intersect as trimmed curves, the returned parameter values were not correct.
gh2intsLinLin
when the given two lines were nearly parallel, there was a case that it failed in the judgement if two lines are parallel or not
gh2anglVec
when the given two vectors were nearly parallel, there was a case that the returned angle had a relatively big error.
gh2sdstXxxXxx (type 1)
there was a case thet the number of solutions was wrong.
gh2intsLinCir
there was a case thet no intersections were returned, if the line and the circle contant each other.
gh2sdstCrvCrv
there was a case that it happened to kill the process.
gh2evalRBzcH
there was a case that an un-initialized memory read occured.
gh2leng{Bsc,RBsc}
there was a case that it happened to kill the process, when the requested section was equal to GH__LMT_PTOL.
gh2trnc{Bsc,RBsc}
there was a case that it happened to kill the process, when the requested section was equal to GH__LMT_PTOL.
gh2divi{Bsc,RBsc}
there was a case that it happened to kill the process, when it tried to divide the curve at the point that distance is GH__LMT_PTOL from the end of the curve.
gh2intfTrcTrc
there was a case that wrong overlaps were returned, when one of the basis curves was a set of closed line segments.
gh2intfCmcCmc
there was a case that wrong overlaps were returned, when one of the curves was closed.
gh2pegKEf
it failed to (remove/remain) the face that consisted of only one edge.
gh2pegMVe
it failed to divide dangling edges.
gh2pegKVe
there was a case that if failed to re-assign pointers for neighbor faces.
gh2ofstBscBsc3, gh2ofstRBscBsc3
there was a case that it returned with GH__OPE_GEOMERR, when a relatively big torelance was given.
gh2intfTrcTrc
there was a case that the returned parameter values were wrong, when the basis curves of the given two trimmed curves were lines.
gh2cretCir3p
there was a case that it failed to handle a circular arc with a negative increasing value.
gh2mekm{Bsc,RBsc}
there was a case that it happened to kill the process.
gh3insk{Bsc,RBsc}, gh3divi{Bsc,RBsc}
there was a case that they happened to kill the process, if the given parameter is very close to a knot.
gh3projPntLes
there was a case that it missed some projections, if the basis curve of the given linear extrusion surface was a line or a conic,
gh3diviSrf
there was a case that surfaces with some holes were not divided correctly.
gh3trncCmc
when it divided a composite curve at near the connecting point of two trimmed curves, a zero length segment was created.
gh3diviTrc
it was unable to divide trimmed curves correctly at the end point.
gh3trncCmc, gh3diviCmc
they were unable to divide closed curves correctly at the boundary of the parameter period.
gh3intsLin{Bsc,RBsc}
they were unable to work correctly with closed Bspline curves.
gh3convLsgRBsc
closed line segments were converted to open Bspline curves.
gh3intsPlnCon
there was a case that the returned intersections were wrong, if the axis of the cone and the normal of the plane are perpendicular.
gh[23]diviCmc
there was a case that it happened to kill the process, while dividing a curve at the end of it.
gh3intsCylCon
there was a case that an intersection which should be a closed curve was degenerated to a point, if the vertex of the cone was inside of the cylinder, and the axis of the cone and the axis of the cylinder are perpendicular.
gh3projPntSph
there was a case that the parameter value of the projection was wrong, if it coincided with the pole point of the sphere.
gh3sdstXxxXxx (type 1)
there was a case thet the number of solutions was wrong.
gh3convCbs{Tri,Tri2}
there was a case that the generated triangles didn't preserve the boundary of the original surface, if the boundary consisted of small line segments and it has a concave part.
gh3projPnt{Bzs,Bss}
there was a case that the projection from a close point failed.
gh3projPnt{Bss,RBss}2
there was a case that an un-initialized memory read occured.
gh3evalRBzcH
there was a case that an un-initialized memory read occured.
gh3projPnt{Bzc,Bsc}
there was a case that the projection from a close point failed.
gh3leng{Bsc,RBsc}
there was a case that it happened to kill the process, when the requested section was equal to GH__LMT_PTOL.
gh3trnc{Bsc,RBsc,Bss,RBss}
there was a case that it happened to kill the process, when the requested section was equal to GH__LMT_PTOL.
gh3divi{Bsc,RBsc}
there was a case that it happened to kill the process, when it tried to divide the curve at the point that distance is GH__LMT_PTOL from the end of the curve.
gh3aprcBss*
the solution was always an interpolated curve.
gh3aprcBss*_Rev2
there was a case that 'mid_tol' was not referred.
gh3convLsgRBsc
it might occur an unpredictable result.
gh3sdst*Cbs
there was a case that an unexpected error was returned.
gh3mekm{Bsc,RBsc}
there was a case that it happened to kill the process.
gh3intsPlnCon
there was a case that it occured an infinite loop.
We greatly appreciate bug reports from GHL users. Thank you.

GHL is being brought you by following persons

Naotake KAKISHITA	naokak@pml.co.jp	
Toru HASEGAWA		hasegawa@sra.co.jp
Zitao XU		zitao@pml.co.jp
Nobuyuki SHIKANO	shikano@pml.co.jp
Hideaki ITO		hideit@pml.co.jp

Thank you for your continued support!


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