GHL 3.4.1 Release Note

This document describes contents of version up from GHL 3.4 patch 01 to GHL 3.4.1.



Summary of this version up

3D: Another version of Sweeping (When Profile and Sweep path intersect each other)
Another functions to create a swept surface that is a locus of a curve (profile) swept along another curve (sweep path). Where, the given curves are polynomial/rational Bspline curve, and generated surface is a correspoinding polynomial/rational Bspline surface.

The new functions create a surface directly from given curves. And the generated surface passes given profile and sweep path, completely.

example: ghlv3/examples/sweep_skin/sweeping2.c

3D : Some geometric operations with a set of triangles
Some operations for a set of triangles are added.
Offsetting
A function to create a offsetted set of triangles. For all of vertices of a set of triangles, offsets towards direction of normal vector at each vertex, and returns a new set of triangles.
2D: Another versions of Offsetting
3D: Some optional setting for surface-surface intersections
Facilities to alter specific function's behavior dynamically are added.
In this version, following things are controllable.

List of added functions

Utility

gh_pcnfGetDouble	returns a real value to control specific function's behavior
gh_pcnfSetDouble	set a real value to control specific function's behavior
gh_pcnfGetInteger	returns an integer value to control specific function's behavior
gh_pcnfSetInteger	set an integer value to control specific function's behavior
gh_pcnfGetLogical	returns a logical value to control specific function's behavior
gh_pcnfSetLogical	set a logical value to control specific function's behavior

2D

gh2ofstCmcCmcByBsc2	finds a composite curve which approximates an offset of a composite curve (official, type 2)
gh2ofstCmcCmcByBzc2	finds a composite curve which approximates an offset of a composite curve (official, type 2)
gh2ofstBscBsc3	finds a Bspline curve which approximates an offset of a Bspline curve (type 3)
gh2ofstBzcBsc3	finds a Bspline curve which approximates an offset of a bezier curve (type 3)
gh2ofstCirBsc3	finds a Bspline curve which approximates an offset of a circle (type 3)
gh2ofstEllBsc3	finds a Bspline curve which approximates an offset of a ellipse (type 3)
gh2ofstHypBsc3	finds a Bspline curve which approximates an offset of a hyperbola (type 3)
gh2ofstLinBsc3	finds a Bspline curve which approximates an offset of a line (type 3)
gh2ofstParBsc3	finds a Bspline curve which approximates an offset of a parabola (type 3)
gh2ofstRBscBsc3	finds a Bspline curve which approximates an offset of a rational Bspline curve (type 3)
gh2ofstRBzcBsc3	finds a Bspline curve which approximates an offset of a rational bezier curve (type 3)
gh2ofstTrcBsc3	finds a Bspline curve which approximates an offset of a trimmed curve (type 3)
gh2ofstBscBzc3	finds a bezier curve which approximates an offset of a Bspline curve (type 3)
gh2ofstBzcBzc3	finds a bezier curve which approximates an offset of a bezier curve (type 3)
gh2ofstCirBzc3	finds a bezier curve which approximates an offset of a circle (type 3)
gh2ofstEllBzc3	finds a bezier curve which approximates an offset of a ellipse (type 3)
gh2ofstHypBzc3	finds a bezier curve which approximates an offset of a hyperbola (type 3)
gh2ofstLinBzc3	finds a bezier curve which approximates an offset of a line (type 3)
gh2ofstParBzc3	finds a bezier curve which approximates an offset of a parabola (type 3)
gh2ofstRBscBzc3	finds a bezier curve which approximates an offset of a rational Bspline curve (type 3)
gh2ofstRBzcBzc3	finds a bezier curve which approximates an offset of a rational bezier curve (type 3)
gh2ofstTrcBzc3	finds a bezier curve which approximates an offset of a trimmed curve (type 3)

3D

gh3ofstSTri		offset a set of triangles
gh3swepBscBss1	copys profile with parallel translation(Bspline curve)(type 2)
gh3swepBscBss2	copys profile according to variation of Frenet frame of sweep path(Bspline curve)(type 2)
gh3swepBscBss3	copys profile according to variation of tangent vector(Bspline curve)(type 2)
gh3swepRBscRBss1	copys profile with parallel translation(rational Bspline curve)(type 2)
gh3swepRBscRBss2	copys profile according to variation of Frenet frame of sweep path(rational Bspline curve)(type 2)
gh3swepRBscRBss3	copys profile according to variation of tangent vector(rational Bspline curve)(type 2)

Changed specifications

There was a bug, that given tangent vectors are not always guaranteed, abount fucntions of Bspline interpolation/approximation, such as gh2intpBscC2, gh3intpBssC2 (see also List of fixed bugs).

This bug had been fixed in this version, but according to this modification, gh[23]bsslePnt, the function which returns "Bessel's end condition", will return different length of generated vertors. Until now,

But now,

will be returned. That is, until now, parameter(knot) interval of both end segments of interpolated Bspline curve was supposed as always 1. But now, will be supposed as given parameter interval. More concretely, the returned vectors will be subtracted by (param[1] - param[0]) at start point, and (param[1] - param[0]) at end point.

If you have used gh[23]bsslePnt with gh[23]intpBscC2, gh3intpBssC2, etc..., you have nothing to modify. But if you have used gh[23]bsslePnt individually, and the length of returned vector has an influence about result, you should revise it.


List of fixed bugs

fixed after GHL 3.4 patch 01
gh[23]gtpvOPrmRCrv
fixed Floating point exception. Aso wrong judgement at upper limit of paremeter.
gh2ofstBscBsc, gh3ofstBscBss, etc
returned error when a singular point was at end of curves.
gh_polyJdgd
did not obtain solutions.
gh[23]{tng0,crv0}{Bsc,RBsc}2
did not returned correct parameter section, when there were 2 or more sections.
gh2evalTrc, gh3evalTrc, gh3cotacutoTrc
returned wrong derivatives (reversed direction).
gh2intsLinLsg
did not returned some intersection points in very short segments. Also wrong judgement of indentification about two intersection points.
gh[23]intsLsgLsg
did not returned some intersection points, that were on an end point, and this end point is indentical with adjacent vertex. Also did not returned end point as intersection point, when two line segments overlapped at this end point.
gh3intsBzsBzs etc
returned disarranged intersection curve at reduced point of surface.
gh3iflt{Pnt,Crv,Srf}Srf etc
returned GH__OPE_GEOMERR
gh3ofstBssBss etc
Offsetted surface had undulations, when a given surface had warped parameter space.
gh3swepBscRBscCPY2
did not copy at correct point.
gh3ofstCbsCbs
now can treat open boundary.
gh3intsBssBss etc
was too slow.
gh3icboCbs
did not return some intersection points on an open boundary.
gh3ifltSrfSrf
dit not project a center of fillet to a valid point of an original surface. Also fixed crash problem.
gh3isinCbs, gh3dvdbCbs
did not treat a situation when a end of open boundary overlaps with natual boundary of another surface.
gh3intsSphCon
Second cirlcle was not setted, when solutions were two circles.
gh[23]intpBscC2, gh[23]aprxBsc4, gh3intpBssC2
Given tangent vectors were not guaranteed.
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) 1999 Precision Modeling Laboratory,Inc., Tokyo, Japan. All Rights Reserved.