PolygonMesh

class PolygonMesh

Parent: Object | Class Index
Methods:new, add_point, add_polygon, count_points, count_polygons, normal_at, point_at, point_index, points, polygon_at, polygon_points_at, polygons, set_point, transform!, uvs, uv_at |
Sample Code: polygonmeshtests.rb |

The PolygonMesh class contains methods to create polygon mesh structures.

Class Methods

new
The new method is used to create a new empty polygon mesh.
Syntax:
mesh = Geom::PolygonMesh.new numpoints, numpolygons
Arguments:
Return Value:
Comments:
The number of points and polygons are optional and are just used as a hint to decide how much space to pre-allocate to speed up adding points and polygons.
Example:
mesh = Geom::PolygonMesh.new

Instance Methods

add_point
The add_point method is used to add a point to the mesh.
Syntax:
index = polygonmesh.add_point point
Arguments:
point - a Point3D object
Return Value:
index - the index in the mesh for the point
Comments:
The index can be used for creating polygons.
Example:
mesh = Geom::PolygonMesh.new point = Geom::Point3d.new 0,1,2 index = mesh.add_point point

add_polygon
The add_polygon method is used for adding a polygon to a polygon mesh.
Syntax:
index = polygonmesh.add_polygon polygon
Arguments:
polygon - a polygon
Return Value:
index - the index of the polygon in the mesh if successful
Comments:
Example:
mesh = Geom::PolygonMesh.new point = Geom::Point3d.new 0,1,2 point1 = Geom::Point3d.new 1,0,2 point2 = Geom::Point3d.new 2,0,1 status = mesh.add_polygon point, point1, point2

count_points
The count_points method is used to count the number of points in a mesh.
Syntax:
points = mesh.count_points
Arguments:
Return Value:
points - the number of points in a mesh, if successful
Comments:
Example:
mesh = Geom::PolygonMesh.new point = Geom::Point3d.new 0,1,2 index = mesh.add_point point num = mesh.count_points

count_polygons
The count_polygons count the number of polygons in the mesh.
Syntax:
polygons = mesh.count_polygons
Arguments:
Return Value:
polygons - the number of polygons in the mesh, if successful
Comments:
Example:

mesh = Geom::PolygonMesh.new
point = Geom::Point3d.new 0,1,2
point1 = Geom::Point3d.new 1,0,2
point2 = Geom::Point3d.new 2,0,1
index = mesh.add_polygon point, point1, point2
nump = mesh.count_polygons

normal_at
The normal_at method is used to determine the normal at a particular index in the mesh.
Syntax:
normal = polygonmesh.normal_at index
Arguments:
index - the index in the mesh where the normal is that you want to retrieve
Return Value:
normal - a normal
Comments:
Index is 1 based (starts at 1).
Example:
normal = mesh.normal_at 1

point_at
The point_at method is used to retrieve the point at a specific index in the mesh.
Syntax:
point = polygonmesh.point_at index
Arguments:
index - the index in the mesh where the point is that you want to retrieve
Return Value:
point - a Point3D object
Comments:
Index is 1 based (starts at 1).
Example:
mesh = Geom::PolygonMesh.new point1 = Geom::Point3d.new 0,1,2 point2 = Geom::Point3d.new 10,20,30 index = mesh.add_point point1 index = mesh.add_point point2

point_index
The point_index method is used to retrieve the index of a point in the mesh.
Syntax:
index = polygonmesh.point_index point
Arguments:
point - a Point3d object
Return Value:
index - the index in the mesh for the Point3d object
Comments:
Returns 0 if point is not found.
Example:

mesh = Geom::PolygonMesh.new
point1 = Geom::Point3d.new 0,1,2
point2 = Geom::Point3d.new 10,20,30
index = mesh.add_point point1
index = mesh.add_point point2
index = mesh.point_index point1

points
The points method is used to retrieve an array of points (vertices) in the mesh
Syntax:
points = polygonmesh.points
Arguments:
Return Value:
points - an array of points (vertices) if successful
Comments:
Example:

mesh = Geom::PolygonMesh.new
point1 = Geom::Point3d.new 0,1,2
point2 = Geom::Point3d.new 10,20,30
index = mesh.add_point point1
index = mesh.add_point point2
# returns array of points in the mesh
num = mesh.points

polygon_at
The polygon_at method is used to retrieve an array of vertex index values for a polygon at a specific index.
Syntax:
vertices = polygonmesh.polygon_at index
Arguments:
index - the index of the desired polygon
Return Value:
vertices - an array of vertex index values
Comments:
Index is 1 based (starts at 1). The returned array can contain negative values with the sign indicating a hidden edge. For example, a return value of [-1, 2, 3] indicates that the edge from 1 to 2 is hidden. The negative values should not be used as an index for point_at, take the positive value of the index value in the polygon array. So if you get [-1, 2,3] use 1 as the arg to point_at.
Example:

mesh = Geom::PolygonMesh.new
point = Geom::Point3d.new 0,1,2
point1 = Geom::Point3d.new 1,0,2
point2 = Geom::Point3d.new 2,0,1
status = mesh.add_polygon point, point1, point2
polygon = mesh.polygon_at 1

polygon_points_at
The polygon_points_at method is used to retrieve the points for a polygon that is at a specific index in the mesh.
Syntax:
points = polygonmesh.polygon_points_at index
Arguments:
index - an index for a polygon in the mesh
Return Value:
points - an array of points that make up the polygon if successful
Comments:
Example:

mesh = Geom::PolygonMesh.new
point = Geom::Point3d.new 0,1,2
point1 = Geom::Point3d.new 1,0,2
point2 = Geom::Point3d.new 2,0,1
status = mesh.add_polygon point, point1, point2
points = mesh.polygon_points_at 1

polygons
The polygons method is used to retrieve an array of all polygons in the mesh.
Syntax:
polygons = polygonmesh.polygons
Arguments:
Return Value:
polygons - an array of polygons if successful
Comments:
The returned array can contain negative values with the sign indicating a hidden edge. For example, a return value of [-1, 2, 3] indicates that the edge from 1 to 2 is hidden.
Example:

mesh = Geom::PolygonMesh.new
point = Geom::Point3d.new 0,1,2
point1 = Geom::Point3d.new 1,0,2
point2 = Geom::Point3d.new 2,0,1
status = mesh.add_polygon point, point1, point2
polygons = mesh.polygons

set_point
The set_point method is used to set the point at a specific index in the mesh.
Syntax:
polygonmesh = polygonmesh.set_point index, point
Arguments:
index - the index where the point will be set point - a Point3d object to set at the index
Return Value:
polygonmesh - a PolygonMesh object
Comments:
Example:
mesh = Geom::PolygonMesh.new point1 = Geom::Point3d.new 0,1,2 point2 = Geom::Point3d.new 10,20,30 index = mesh.add_point point1 status = mesh.set_point 1, point2

transform!
The transform! method is used to apply a transformation to a mesh
Syntax:
polygonmesh = polygonmesh.transform! transformation
Arguments:
transformation - a Transformation object
Return Value:
polygonmesh - the PolygonMesh object
Comments:
Example:

point = Geom::Point3d.new 100,200,300
t = Geom::Transformation.new point
mesh = Geom::PolygonMesh.new
point1 = Geom::Point3d.new 0,1,2
index = mesh.add_point point1
pmesh = mesh.transform! t

uv_at

The uv_at method is used to access a uv (texture coordinates) at a specific index.

"UVs" is a way of referring to the u,v texture coordinates (as opposed to the X, Y, and Z axis that you construct your meshes on), which are points defining 1-by-1 positions within an image. These coordinates connect to points in your 3D model, to position an image texture onto it's surface (similar to virtual "thumb tacks") .

These coordinates pin an exact spot on an image that you wish to use to texture your model to a specific point on an object's surface. Between these points, your software will stretch the image smoothly. This is what is referred to as UV mapping.

Syntax:
point = polygonmesh.uv_at index
Arguments:
index - the index for the texture coordinate
Return Value:
point - a Poin3d object where the x equals the u value and the y equals the v value.
Comments:
Example:
point = mesh.uv_at(1,1)

uvs

The uvs method is used to retrieve a list of uvs.

"UVs" is a way of referring to the u,v texture coordinates (as opposed to the X, Y, and Z axis that you construct your meshes on), which are points defining 1-by-1 positions within an image. These coordinates connect to points in your 3D model, to position an image texture onto it's surface (similar to virtual "thumb tacks") .

These coordinates pin an exact spot on an image that you wish to use to texture your model to a specific point on an object's surface. Between these points, your software will stretch the image smoothly. This is what is referred to as UV mapping.

Syntax:
uvs = polygonmesh.uvs side
Arguments:
side - a boolean. If true, use the front uvs. If false, use the back uvs.
Return Value:
uvs - an array of uvs.
Comments:
The uvs must be generated with the parameters of 1 (Include PolygonMeshUVQFront) or 2 (Include PolygonMeshUVQBack).
Example:
uvs = mesh.uvs 1