# SceneIFS PTΒΆ

scene.spad line 1837 [edit on github]

PT: SPointCategory

Generates various surfaces (2 dimensional subsets of 3D space). When 1 dimensional subspace (a line) needs to be represented in a 3D editor then we convert the line into a tube. Many of the functions here are from NumericTubePlot and related packages. However `I`

needed them to be defined over SPointCategory so `I`

adapted them here.

- coerce: % -> OutputForm
`coerce(me)`

list this instance to the command line

- curveLoops: (List PT, DoubleFloat, Integer) -> List List PT
`curveLoops(pts1, r, nn)`

generates ifs from line given by`pts1`

- indexes: % -> List List NonNegativeInteger
`indexes(me)`

returns indexes into pointList(`me`

)

- pointList: % -> List PT
`pointList(me)`

returns points at vertices of this mesh.

- sierpinskiDivide: (%, NonNegativeInteger) -> %
`sierpinskiDivide(me, level)`

for each edge of each face calculate a new point in the centre of the edge, then build a new set of faces which include the new points.

- singleFace: List PT -> %
`singleFace(ptin)`

constructs a ifs representation of a face from an array of points

- smesh: (List List PT, Boolean) -> %
`smesh(ptin, clos)`

constructs a ifs representation of a mesh from a 2 dimensional array of points

- stube: (List Record(source: DoubleFloat -> PT, ranges: List Segment DoubleFloat, knots: List DoubleFloat, points: List PT), DoubleFloat, Integer) -> %
`stube(functions: List Clipd, r, n)`

creates a tube of radius`r`

around the curve functions.

- subdivide: % -> %
`subdivide(me)`

for each face calculate a new point in the centre of the face, then build a new set of faces which include the new point.