GHL 3.4.8 Release Note

This document describes contents of version up from GHL 3.4.7 to GHL 3.4.8.



Summary of this version up

2/3D: Bspline Approximation of Points : Another version
For gh[23]aprcBsc which approximate points with a Bspline curve, another version is prepared. This new version 'gh[23]aprcBsc_Rev3' tries to decrease the number of segments in generated Bspline curves.

2/3D: Functions with more convenient interface
For many existing functions, another versions which have more convenient interface have been prepared.

Testing Tool: a library for reading output of gh[23]prnt*
A library, named 'ybs', for reading and interpreting output of gh[23]prnt* is included in GHL's distribution.

Testing Tool: an application program for displaying output of gh[23]prnt*
An application program, named 'qudan-II', for displaying shapes of output of gh[23]prnt* is included in GHL's distribution.


List of added functions

1D

gh1allcCrv		allocates a memory area of curve
gh1copyCrv		copies a curve
gh1defnCrv		define a curve
gh1freeCrv		frees a memory area of curve

2D

gh2aprcBsc_Rev3		approximates points by a cubic Bspline curve in the given precision (type 1, improved)
gh2clgpCPnt2		assigns a sequence of parameters for a "closed" sequence of points (chord length)
gh2clgpPnt2		assigns a sequence of parameters for a sequence of points (chord length)
gh2cnctBsc		connects two Bspline curves
gh2cnctRBsc		connects two rational Bspline curves
gh2convBscLsg2		convert a Bspline curve by straight lines approximately into a sequence of points
gh2convBscRBzcL		convert a specified section of a Bspline curve into rational bezier curve
gh2convBzcLsg2		convert a bezier curve by straight lines approximately into a sequence of points
gh2convBzcRBzcL		convert a specified section of a bezier curve into rational bezier curve
gh2convCirLsg2		convert a circle by straight lines approximately into a sequence of points
gh2convCirRBzcL		convert a specified section of a circle into rational bezier curve
gh2convCmcLsg2		convert a composite curve by straight lines approximately into a sequence of points
gh2convCrvLsg2		convert a curve by straight lines approximately into a sequence of points
gh2convCrvRBzcL		convert a specified section of a curve into rational bezier curve
gh2convEllLsg2		convert a ellipse by straight lines approximately into a sequence of points
gh2convEllRBzcL		convert a specified section of a ellipse into rational bezier curve
gh2convHypLsg2		convert a hyperbola by straight lines approximately into a sequence of points
gh2convHypRBzcL		convert a specified section of a hyperbola into rational bezier curve
gh2convLinLsg2		convert a line by straight lines approximately into a sequence of points
gh2convLinRBzcL		convert a specified section of a line into rational bezier curve
gh2convLsgLsg2		convert a line segment by straight lines approximately into a sequence of points
gh2convLsgRBzcL		convert a specified section of a line segment into rational bezier curve
gh2convParLsg2		convert a parabola by straight lines approximately into a sequence of points
gh2convParRBzcL		convert a specified section of a parabola into rational bezier curve
gh2convRBscLsg2		convert a rational Bspline curve by straight lines approximately into a sequence of points
gh2convRBscRBzcL	convert a specified section of a rational Bspline curve into rational bezier curve
gh2convRBzcLsg2		convert a rational bezier curve by straight lines approximately into a sequence of points
gh2convRBzcRBzcL	convert a specified section of a rational bezier curve into rational bezier curve
gh2convRCrvLsg		convert a curve by straight lines approximately into a sequence of points
gh2convRCrvLsg2		convert a curve by straight lines approximately into a sequence of points
gh2convRCrvRBsc		convert a specified section of a curve into rational Bspline curve
gh2convRCrvRBzc		convert a specified section of a curve into rational bezier curve
gh2convRCrvRBzcL	convert a specified section of a curve into rational bezier curve
gh2convTrcLsg2		convert a trimmed curve by straight lines approximately into a sequence of points
gh2convTrcRBzcL		convert a specified section of a trimmed curve into rational bezier curve
gh2copyCrv		copies a curve
gh2copyPntS		copies an array of points
gh2ctrpCPnt2		assigns a sequence of parameters for a "closed" sequence of points (centripetal)
gh2ctrpPnt2		assigns a sequence of parameters for a sequence of points (centripetal)
gh2defnCrv		define a curve
gh2defnTrc2		defines a trimmed curve
gh2exchBscBzcL		converts a Bspline curve into a sequence of Bezier curves
gh2exchRBscRBzcL	converts a rational Bspline curve into a sequence of rational Bezier curves
gh2freeIntsCrvCrvL	frees intersection info.
gh2freeNormCrvCrvL	frees common normal info.
gh2freeProjPntCrvL	frees projection info.
gh2freeTangCrvCrvL	frees common tangent info.
gh2freeTangPntCrvL	frees tangent line info.
gh2gtdmCrv		obtains a parametric domain of a curve
gh2intsCrvCrvL		obtains intersections between two curves
gh2intsRCrvRCrvL	obtains intersections between two curves
gh2normCrvCrvL		obtains common normals between two curves
gh2normRCrvRCrvL	obtains common normals between two curves
gh2projPntCrvL		projects a point to a curve
gh2projPntRCrvL		projects a point to a curve
gh2rmvcCmc		removes a trimmed curve from a composite curve
gh2rmvcCmc2		removes a trimmed curve from a composite curve
gh2tangCrvCrvL		obtains common tangents between two curves
gh2tangPntCrvL		Get all the tangential points from a point to curve
gh2tangPntRCrvL		Get all the tangential points from a point to curve
gh2tangRCrvRCrvL	obtains common tangents between two curves

3D

gh3aprcBsc_Rev3		approximates points by a cubic Bspline curve in the given precision (type 1, improved)
gh3clgpCPnt2		assigns a sequence of parameters for a "closed" sequence of points (chord length)
gh3clgpPnt2		assigns a sequence of parameters for a sequence of points (chord length)
gh3cnctBsc		connects two Bspline curves
gh3cnctRBsc		connects two rational Bspline curves
gh3convBscLsg2		convert a Bspline curve by straight lines approximately into a sequence of points
gh3convBscRBzcL		convert a specified section of a Bspline curve into rational bezier curve
gh3convBzcLsg2		convert a bezier curve by straight lines approximately into a sequence of points
gh3convBzcRBzcL		convert a specified section of a bezier curve into rational bezier curve
gh3convCirLsg2		convert a circle by straight lines approximately into a sequence of points
gh3convCirRBzcL		convert a specified section of a circle into rational bezier curve
gh3convCmcLsg2		convert a composite curve by straight lines approximately into a sequence of points
gh3convCrvLsg2		convert a curve by straight lines approximately into a sequence of points
gh3convCrvRBzcL		convert a specified section of a curve into rational bezier curve
gh3convEllLsg2		convert a ellipse by straight lines approximately into a sequence of points
gh3convHypLsg2		convert a hyperbola by straight lines approximately into a sequence of points
gh3convHypRBzcL		convert a specified section of a hyperbola into rational bezier curve
gh3convLinLsg2		convert a line by straight lines approximately into a sequence of points
gh3convLinRBzcL		convert a specified section of a line into rational bezier curve
gh3convLsgLsg2		convert a line segment by straight lines approximately into a sequence of points
gh3convLsgRBzcL		convert a specified section of a line segment into rational bezier curve
gh3convParLsg2		convert a parabola by straight lines approximately into a sequence of points
gh3convParRBzcL		convert a specified section of a parabola into rational bezier curve
gh3convRBscLsg2		convert a ratioanal Bspline curve by straight lines approximately into a sequence of points
gh3convRBscRBzcL	convert a specified section of a rational Bspline curve into rational bezier curve
gh3convRBzcLsg2		convert a rational bezier curve by straight lines approximately into a sequence of points
gh3convRBzcRBzcL	convert a specified section of a rational bezier curve into rational bezier curve
gh3convRCrvLsg		convert a curve by straight lines approximately into a sequence of points
gh3convRCrvLsg2		convert a curve by straight lines approximately into a sequence of points
gh3convRCrvRBsc		convert a specified section of a curve into rational Bspline curve
gh3convRCrvRBzc		convert a specified section of a curve into rational bezier curve
gh3convRCrvRBzcL	convert a specified section of a curve into rational bezier curve
gh3convTrcLsg2		convert a trimmed curve by straight lines approximately into a sequence of points
gh3convTrcRBzcL		convert a specified section of a trimmed curve into rational bezier curve
gh3copyCrv		copies a curve
gh3copyPntS		copies an array of points
gh3copySrf		copies a surface
gh3ctrpCPnt2		assigns a sequence of parameters for a "closed" sequence of points (centripetal)
gh3ctrpPnt2		assigns a sequence of parameters for a sequence of points (centripetal)
gh3defnCrv		define a curve
gh3defnSrf		defines a surface
gh3defnTrc2		defines a trimmed curve
gh3exchBscBzcL		converts a Bspline curve into a sequence of Bezier curves
gh3exchBssBzsL		converts a Bspline surface into a sequence of Bezier surfaces
gh3exchRBscRBzcL	converts a rational Bspline curve into a sequence of rational Bezier curves
gh3exchRBssRBzsL	converts a rational Bspline surface into a sequence of rational Bezier surfaces
gh3freeIntsCrvCrvL	frees intersection info.
gh3freeIntsCrvSrfL	frees intersection info.
gh3freeIntsSrfSrfL	frees intersection info.
gh3freeProjPntCrvL	frees projection info.
gh3freeProjPntSrfL	frees projection info.
gh3gtdmCrv		obtains a parametric domain of a curve
gh3gtdmSrf		obtains a parametric domain of a surface
gh3intsCrvCrvL		obtains intersections between two curves
gh3intsCrvSrfL		obtains intersections between a curve and a surface
gh3intsRCrvRCrvL	obtains intersections between two curves
gh3intsRCrvRSrfL	obtains intersections between a curve and a surface
gh3intsRSrfRSrfL	obtains intersections between two surfaces
gh3intsSrfSrfL		obtains intersections between two surfaces
gh3projPntCrvL		projects a point to a curve
gh3projPntRCrvL		projects a point to a curve
gh3projPntRSrfL		projects a point to a surface
gh3projPntSrfL		projects a point to a surface
gh3rmvcCmc		removes a trimmed curve from a composite curve
gh3rmvcCmc2		removes a trimmed curve from a composite curve

UTIL

gh_copyDblS		copy an array of Gh_Double
gh_copyIntS		copy an array of Gh_Int
gh_lstmFree2		disposes a list
gh_lstmGetRmvNPgProc	returns the function to delete nodes
gh_lstmRmvN2		removes a node from a list
gh_lstmSetRmvNPgProc	sets a function to delete nodes
gh_prntGtPrntUicp	get the flag for printing uicp and v_uicp values
gh_prntStPrntUicp	set the flag for printing uicp and v_uicp values

List of fixed bugs

Following bugs have been fixed after the release of GHL 3.4.7.
Function: [3D] gh3intsConCon()
If given two cones are isomorphic and share a ruling with each other, and one cone includes another, the function doesn't work correctly,

Function: [3D] gh3intsRtsRts(), gh3intsSrfTLes()
Correct solutions are not returned if Les's V-dir is much longer in comparison with its U-dir.

Function: [3D] gh3intsCylCon()
No solution is returned if the cone penetrates at the axis of the cylinder perpendicularly.

Function: [3D] gh3projPntBzs()
Correct solutions are not returned. The tolerance for convergence should be varied, corresponding the scale of the given surface and/or the distance between the surface and the given point.

Function: [2D] gh2projPntEll()
Solutions are not wrapped into [0, 2pai].

Function: [3D] gh3convCrvLsg()
Some convXXXLsg functions lose the control if (pint->increase == 0).

Function: [2D] gh2convCrvLsg()
Some convXXXLsg functions lose the control if (pint->increase == 0).

Function: [2D] gh2intsCirCir()
revised: make the threshold values for judging the number of the intersections smaller (GH__LMT_TOL => GH__LMT_MEPS) to get more precise solutions.

Functions: [2D] gh2jdgwCCmc()
There is a case that the right direction is not returned.

Function: [2D] gh2intsCirBsc(), gh2intsEllBsc(), gh2intsHypBsc(), gh2intsParBsc()
There is a case that the collect solutions are not returned, if the given Bspline curve's knot values are relatively big.

Function: [3D] gh3intsCirBsc(), gh3intsEllBsc(), gh3intsHypBsc(), gh3intsParBsc()
There is a case that the collect solutions are not returned, if the given Bspline curve's knot values are relatively big.

Function: [3D] gh3ofstBscBss2(), gh3ofstRBscBss2(), gh3ofstBscBss3(), gh3ofstRBscBss3()
Twisted surfaces are returned for curves which have portion of straight line.

Function: [3D] Intersection functions for freeform surfaces
Incomplete intersections are returned for small and/or thin surfaces when the value of Gh__3intsSrfFfs_BzsOverlapTol is not small (including the default value).

Function: [3D] Shortest distance functions
Incorrect results are returned when GH__LMT_TOL is rather large.

Function: [3D] Shortest distance functions
If the given two geometry elements have nearly parallel portion with each other, the functions return inexact results.

Function: [3D] gh3intpCBsc(), gh3intpCBss(), gh3intpCBssC2()
These fuctions make the process down. (only in Version 3.4.7)

Function: [2D] Length functions for freeform curves gh2leng*()
Incorrect values are returned for the curves which have singular points.

Function: [3D] Length functions for freeform curves gh3leng*()
Incorrect values are returned for the curves which have singular points.

Function: [3D] gh3convCbsSTri_Rev2(), gh3convCbsSTri2_Rev2()
Incorrect results are returned for the trimmed surfaces which have two or more holes.

Function: [3D] Shortest distance functions between curves and surfaces
Incorrect results are returned.

Function: [2D] gh2idntOPrmOPrm()
Infinite recursive calls occur in the function.

Function: [3D] gh3idntOPrmOPrm()
Infinite recursive calls occur in the function.

Function: [3D] gh3convCbsSTri_Rev2(), gh3convCbsSTri2_Rev2()
Incorrect results are returned for the trimmed surfaces which have portion of large curvature.

Function: [2D] gh2inckPntCCmc()
Incorrect results are returned for a certain combination of points and closed composite curves.

Function: [3D] Intersection functions for freeform surfaces
Incorrect results are returned for small and thin surfaces.

Function: [3D] Intersection functions for quadric surfaces and freeform surfaces
Incorrect results are returned.

Function: [3D] gh3intsPlnCon()
bus error occurs at the point of reducing a circle to a point when 'r_paramA' or 'r_paramB' is NULL.

Function: [2D] gh2projPntEll()
Incorrect results are returned for the ellipses that x_radius and y_radius are largely different.

File: [3D] ghlv3/src/3d/elmcrtn/gh3hndlStri.c
Some internal functions are defined as external.

File: [--] ghlv3/src/util/gh_utilNtre.c
Some internal functions are defined as external.
We greatly appreciate your questions and reports about GHL's behavior. Thank you very much.

GHL has been being brought you by following people

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

Thank you for your continued support!


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