Index

The complete incomplete [1] non-alphabetical [2] alphabetical list of functions and modules currently in The GHOUL, with links to their documentation.
This took a pile of editing, even with the powerful 'find-and-replace' routine of the Geany, so you better appreciate it…​

Animation


These functions were written primarily to make the GIF illustrations for this documentation…​

Animate()

Animate objects and their properties. Complex version.

Animator()

Animate objects and their properties.

BezierTCUp()

Smooth transition curve for object properties.

BezierTCDown()

Smooth transition curve for object properties.

StringTee()

Animate objects and their properties. Simple version.

ViewPort()

Zoom and rotate around objects.

Curves


Bézier curve and SVG imaging functions and modules.

Bézier

ArcAngles()

Angle values of an arc divided into n angles.

BezierCFractionX()

Find vertex where x=X.

BezierCFractionY()

Find vertex where y=Y.

BezierCurve()

Bézier curve as an array of vertices.

BezierCurveLength()

The developed length of a Bézier curve.

BezierPoint()

Alias for DeCasteljau(), and more.

BCPolygon()

Polygon in a tuple of arrays [[Points],[Paths]].

BCPolyhedron()

Polyhedron in a tuple of arrays [[Points],[Faces]].

BCShowTPPlane()

Troubleshoot module for visualising TPPlanes.

CBezierPoint()

Cubic Bézier alias for DeCasteljau() but faster.

CurveLength()

The developed length of any curve.

CurveOffset()

Offset an entire curve, left or right.

DeCasteljau()

Calculate vertex on a Bézier curve.

FindCurveVertex()

Find vertex at distance D.

QBezierPoint()

Quadratic Bézier alias for DeCasteljau() but faster.

ShowDeCasteljau()

Visualise the generation of a Bézier curve.

SVG

SVG()

Create SVG shapes and images.

SVG_Shape()

Create SVG shapes from a library.

SVG_Glyph()

Use SVG fonts.

Lists


Indexable variable functions.

Arrays

ArrayAdd()

Add something to each element of an array.

ArrayDomain()

A tuple with the extreme values of all vertices in an array.

ArrayProduct()

Multiply a number of successive array elements with each other.

ArraySelect()

Select a number of non-successive array elements.

ArrayShift()

Circular shift an array, left or right.

ArraySum()

Sum a number of successive elements of an array.

CropArray()

Demote an entire array of vertices to 2D.

Dex()

Circular address an array element.

Find()

Find index of array element.

FindEQ()

Find index of array element.

FindGT()

Find index of array element.

FindGTE()

Find index of array element.

FindLT()

Find index of array element.

FindLTE()

Find index of array element.

FindValue()

Obsolete, use GetValue() instead.

FlattenArray()

Flattening is depth reduction of an array.

GetValue()

Get the value from a key-value pair in such an array.

IsArray()

Check if something is an array.

IsInArray()

Check if something is in an array.

Last()

Last value stored in an array.

Left()

Like 'leftstring' but for arrays.

Len()

Highest possible index of an array.

Match()

Like GetValue() but with keys and values in separate arrays.

MoebiusArray()

Obsolete, use Dex() instead.

PadArray()

Add elements to items in an array, e.g., promote from 2D to 3D &c.

QuickFind()

Find stuff, quickly, but not as quickly as search(), so use that.

QuickSort()

Sort an array. Quickly.

RemoveDoubles()

Remove double entries from an array.

ReverseArray()

Flip an array front-to-back.

RightArray()

like 'rightstring', but for arrays.

ScaleArray()

Scale an array of vertices with X, Y, and Z factors.

SetArrayElement()

Set an array element to a certain value.

SmashArray()

Reduce array depth to 1. (I.e, FlattenArray() on steroids.)

SubArray()

Substring for arrays.

SumArrays()

Sums values of two equal-length arrays.

Matrices

Mostly (affine) transformation functions.

AffineTransformArray()

Perform affine transformations on an array of vertices.

AffineTransformVertex()

Perform affine transformations on a vertex.

IdentityMatrix()

Generate an identity matrix.

RotationMatrix()

Create an affine rotation matrix.

ScalingMatrix()

Create an affine scaling matrix.

ShearingMatrix()

Create an affine shearing matrix.

TransformMatrix()

Create an affine transform matrix on the basis of The GHOUL’s transform notations.

TranslationMatrix()

Create an affine translation matrix.

TransposeMatrix()

Transpose a matrix.

Tuples

CropTuple()

Crop a tuple to n items.

FillTuple()

Create a tuple filled with n of the same items.

IsInRange()

Check if value is a member of the specified range.

LeftTuple()

'Leftstring' but for tuples.

PadTuple()

Pad a tuple to length n with a given value.

RangeToTuple()

Convert a range to a tuple.

RemoveElement()

Remove an element from a tuple.

ReverseTuple()

Flip a tuple back to front.

RightTuple()

'Rightstring' but for tuples.

SetTupleElement()

Set a tuple element to a certain value.

SubTuple()

'Substring' but for tuples.

Vectors

Bisect()

Bisect the (acute) angle between two vectors.

BisectObtuse()

Bisect the obtuse angle between two vectors.

BisectLeft()

Bisect the angle between two vectors 'to the left'.

BisectRight()

Bisect the angle between two vectors 'to the right'.

CrossProduct()

Vector cross-product.

DotProduct()

Vector dot-product.

HomogeniseVector()

Homogenise a vector.

IncAzToVector()

Turn inclination and azimuth angles into a vector.

LengthVector()

Create a vector of a certain length (and direction).

LPerpVector()

Vector perpendicular to the 'left' of the given vector.

Modulus()

Vector modulus, or 'length'.

Offset()

Offset a vector/vertex in the direction of the bisector of two other vectors.

ProjectVector()

Project a 3D vector onto Z=0.

RPerpVector()

Vector perpendicular to the 'right' of the given vector.

SegmentDirection()

3D direction of a curve segment. VectorToIncAz() but different.

UnitVector()

Create a unit vector.

VectorAngle()

Angle between two vectors.

VectorSum()

Sum all vectors in an array of vectors.

VectorToIncAz()

Convert a vector into inclination and azimuth angles.

VectorToPolar()

Convert a vector into polar coordinates.

Math and Logic


Math, logic and some otherwise-difficult-to-place functions.

AndIsFalse()

And-is-false operation on an array of expressions.

AndIsTrue()

Or-is-false operation on an array of expressions.

Clip()

Clip a value between a max. and a min. limit.

Deg()

Convert radians to degrees.

Factorial()

Factorial of n.

GreatestCommonDivisor()

Greatest common divisor of an array of values.

InlineVertex()

Vertex colinear with two other vertices, on a given plane.

Intermediate()

Intermediate curve, vertex, color &c.

Interpolate()

Interpolate or extrapolate.

IsEven()

Check that value is even.

IsOdd()

Check that value is odd.

IsInteger()

Check that value is integer.

IsNotInteger()

Check that value is not integer.

IsFraction()

Check that value is a fraction.

IsNumber()

Check that value is a number.

IsPositive()

Check that value is positive.

IsNegative()

Check that value is negative.

KroneckerDelta()

Return Kronecker delta for two values.

LeastCommonMultiple()

Least common multiple of an array of values.

Map()

Circular map a value onto a range.

MCeil()

Like ceil() but different.

MFloor()

Like floor() but different.

Mod()

Like the native '%' operator, but more…​

MRound()

Like round() but different.

NDecimal()

The nth decimal of a number.

NearestEven()

The nearest even number to a value.

NearestOdd()

The nearest odd number to a value.

OrIsFalse()

Or-is-false operation on an array of expressions.

OrIsTrue()

Or-is-true operation on an array of expressions.

Rad()

Convert degrees to radians.

UndefFallback()

Fallback value if x=undef.

Zerofallback()

Fallback value if x=0.

Meshes


Not much, but pretty important…​

CoverMesh()

Cover an array of vertices with a mesh.

QuadSpace()

Triangulate a 'face' between four vertices.

Modifiers


Things that make other things look like other things.

CircularArray()

Copy objects in a (partial) circle.

LinearArray()

Copy objects in a line.

OutRadius()

Compensate radius for '$fn-effect'.

Position()

Position an object in 3D.

PosX2D()

Trim the -x part of a 2D shape.

PosX3D()

Trim the -x part of a 3D shape.

PosZ3D()

Trim the -z part of a 3D shape.

ScreenPosition()

Position an object on the screen (viewport).

SectorCut()

Cut a sector from an object.

Torus()

Turn a 2D shape into a (partial) torus.

Tumble()

Tumble an object in an animation.

Objects


Things. Useful or not. 'Line', here, means a long, thin and narrow cube().

ALine()

A very long line, through a point, at an angle.

Arrow()

A 3D arrow.

BallCylinderBetween()

Cylinder with radiused ends between two points.

Cap()

Turn a 2D shape into a 3D cap.

ChamferedBar()

A bar with chamfered ends.

ChamferedCube()

A cube with chamfered edges.

ChamferedCylinder()

A cylinder with chamfered ends.

CoordinateSystem()

A coordinate system, for illustrations.

CylinderBetween()

A cylinder between two points.

Dimension()

For dimensioning an object, for illustrations.

GraphPaper()

GraphPaper, to illustrate functions and curves.

HLine()

A very long horizontal line, through a point.

Line()

A line between two points.

Protractor()

A protractor for measuring objects.

Ruler()

A ruler for measuring objects.

StarCap()

A cap for a star-shaped end.

VLine()

A very long vertical line, through a point.

Waterline()

'Waterline' for illustrations.

Parts


Actual real-world parts, or parts thereof.

Parts

GTPulley()

Toothed-belt pulley.

GTTooth()

Toothed-belt pulley tooth.

KnurledCylinder()

A knurled cylinder.

SimpleThread()

Simple machine thread routine.

SimpleThreadedHole()

Simple machine threaded hole.

SimpleThreadedRod()

Simple machine threaded rod.

SimpleBolt()

Simple machine threaded bolt.

SimpleNut()

Simple machine threaded nut.

Thread

Threads, for bolts, not needles. Any shape or form.

Thread()

Very powerful thread generator.

Shapes


Useful and maybe-no-so shapes. These are 2D objects, formatted like a polygon, i.e., [[Points],[Paths]] so they can be manipulated at will, unlike the native shapes like circle() &c.

ChamferedRectangle()

Chamfered rectangle.

Circle()

Can you do circle()[0][5]? No, but you can Circle()[0][5]…​

Diamond()

A diamond.

Ellipse()

An ellipse, but more than just scale()circle().

EquilateralTriangle()

An equilateral triangle.

Grooved()

A grooved surface.

InsideRadius()

A fillet-like shape.

NGon()

A multi-edged regular shape, n-gon, nothing like circle($fn=n).

OutsideRadius()

The reverse of a fillet ;-)

OvalRing()

An oval ring.

RadiusedRectangle()

A rectangle with radiused corners.

RectangularProfile()

Like a box profile, a 'rectangular ring'.

RightTriangle()

A right triangle.

Ring()

A ring, not oval, not square, and no, not difference(){circle()circle()}.

Sector()

A sector, like a wedge out of a circle.

Square()

No, don’t even square().

Star()

A star shape.

Visualisers


things to make otherwise unseen things seen.

ShowCurve()

Show a curve with cylinders and spheres.

ShowFx()

Graph a function.

ShowSlice()

Show a slice through a complex object.

ShowVertex()

Show (highlight) a vertex.

ShowVertices()

Show (highlight) multiple vertices.

Words


Anything to do with words and letters and their manipulation or creation.

Echos

For the console…​

Alert()

Alert the user to something.

Debug()

Debugging output.

Echo()

echo(), but more.

ErrorOnFalse()

Throw an error upon a 'false' result.

ErrorOnTrue()

Throw an error upon a 'true' result.

FallBack()

Fallback value with alert.

Print()

echo(), but (much) more.

Stop()

Halt execution with output.

Strings

AsciiMapString()

Map a string to its ASCII values (in an array).

IsNullOrEmptyString()

Check for empty strings.

IsString()

Check if value is a string.

LeftString()

Left part of a string.

MapString()

Map a string to other values.

RightString()

Right part of a string.

SetDecimals()

Crop a number to n decimals for output purposes.

StringToTuple()

Convert a string to a tuple.

SubString()

Part of a string.

TupleToString()

Convert a tuple of strings and numbers to a single string.

Text

Generation of text objects.

SimpleBarrelText()

Put text on a 'barrel', i.e., a cylinder.

SimpleCircleText()

Put text in a circle.

SimpleText()

Simple text routine, yes, I know, text().

BrailleText()

Convert text into Braille.


1. Functions that are completely useless to users, i.e., non-user functions, are not listed here. It wouldn’t make sense. They’re not for you…​
2. It’s ordered alphabetically, grouped by library.