GHL 3.4.4 Release Note
This document describes contents of version up from
GHL 3.4.3 to GHL 3.4.4.
- 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.
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)
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.