Geom3d

From MatGeom
Jump to: navigation, search

Creation, transformations, algorithms and visualization of geometrical 3D primitives, such as points, lines, planes, polyhedra, circles and spheres.

Data representation

Base format for primitives:

  • Point: [x0 y0 z0]
  • Vector: [dx dy dz]
  • Line: [x0 y0 z0 dx dy dz]
  • Edge: [x1 y1 z1 x2 y2 z2]
  • Plane: [x0 y0 z0 dx1 dy1 dz1 dx2 dy2 dz2]
  • Sphere: [x0 y0 z0 R]
  • Circle: [x0 y0 z0 R PHI THETA PSI] (origin+center+normal+'roll').
  • Ellipsoid: [x0 y0 z0 A B C PHI THETA PSI]
  • Cylinder: [X1 Y1 Z1 X2 Y2 Z2 R]
  • Box: [xmin xmax ymin ymax zmin zmax]. Used for clipping shapes.

Polygons are represented by N-by-3 array of points, the last point is not necessarily the same as the first one. Points must be coplanar.

Euler Angles are defined as follow:

  • PHI is the azimut, i.e. the angle of the projection on horizontal plane

with the Ox axis, with value beween 0 and 180 degrees.

  • THETA is the latitude, i.e. the angle with the Oz axis, with value

between -90 and +90 degrees.

  • PSI is the 'roll', i.e. the rotation around the (PHI, THETA) direction,

with value in degrees See also the 'angles3d' page.

Function list

3D Points

  • points3d - Description of functions operating on 3D points
  • midPoint3d - Middle point of two 3D points or of a 3D edge
  • isCoplanar - Tests input points for coplanarity in 3-space.
  • transformPoint3d - Transform a point with a 3D affine transform
  • distancePoints3d - Compute euclidean distance between pairs of 3D Points
  • clipPoints3d - Clip a set of points by a box
  • drawPoint3d - Draw 3D point on the current axis.

3D Vectors

  • vectors3d - Description of functions operating on 3D vectors
  • transformVector3d - Transform a vector with a 3D affine transform
  • normalizeVector3d - Normalize a 3D vector to have norm equal to 1
  • vectorNorm3d - Norm of a 3D vector or of set of 3D vectors
  • hypot3 - Diagonal length of a cuboidal 3D box
  • vectorCross3d - Vector cross product faster than inbuilt MATLAB cross.
  • vectorAngle3d - Angle between two 3D vectors
  • isParallel3d - Check parallelism of two 3D vectors
  • isPerpendicular3d - Check orthogonality of two 3D vectors
  • drawVector3d - Draw vector at a given position

Angles

  • angles3d - Conventions for manipulating angles in 3D
  • anglePoints3d - Compute angle between three 3D points
  • sphericalAngle - Compute angle between points on the sphere
  • angleSort3d - Sort 3D coplanar points according to their angles in plane
  • randomAngle3d - Return a 3D angle uniformly distributed on unit sphere

Coordinate transforms

  • sph2cart2 - Convert spherical coordinates to cartesian coordinates
  • cart2sph2 - Convert cartesian coordinates to spherical coordinates
  • cart2sph2d - Convert cartesian coordinates to spherical coordinates in degrees
  • sph2cart2d - Convert spherical coordinates to cartesian coordinates in degrees
  • cart2cyl - Convert cartesian to cylindrical coordinates
  • cyl2cart - Convert cylindrical to cartesian coordinates

3D Lines and Edges

  • lines3d - Description of functions operating on 3D lines
  • createLine3d - Create a line with various inputs.
  • fitLine3d - Fit a 3D line to a set of points
  • parallelLine3d - Create 3D line parallel to another one.
  • projPointOnLine3d - Project a 3D point orthogonally onto a 3D line
  • distancePointLine3d - Euclidean distance between 3D point and line
  • isPointOnLine3d - Test if a 3D point belongs to a 3D line
  • distancePointEdge3d - Minimum distance between a 3D point and a 3D edge
  • linePosition3d - Return the position of a 3D point projected on a 3D line
  • distanceLines3d - Minimal distance between two 3D lines
  • transformLine3d - Transform a 3D line with a 3D affine transform
  • reverseLine3d - Return same 3D line but with opposite orientation
  • midPoint3d - Middle point of two 3D points or of a 3D edge
  • clipLine3d - Clip a line with a box and return an edge
  • drawEdge3d - Draw 3D edge in the current Window
  • drawLine3d - Draw a 3D line on the current axis

Planes

  • planes3d - Description of functions operating on 3D planes
  • createPlane - Create a plane in parametrized form
  • fitPlane - Fit a 3D plane to a set of points
  • normalizePlane - Normalize parametric representation of a plane
  • parallelPlane - Parallel to a plane through a point or at a given distance
  • reversePlane - Return same 3D plane but with opposite orientation
  • planesBisector - Bisector plane between two other planes
  • projPointOnPlane - Return the orthogonal projection of a point on a plane
  • intersectPlanes - Return intersection line between 2 planes in space
  • intersectLinePlane - Intersection point between a 3D line and a plane
  • intersectEdgePlane - Return intersection point between a plane and a edge
  • distancePointPlane - Signed distance betwen 3D point and plane
  • isBelowPlane - Test whether a point is below or above a plane
  • medianPlane - Create a plane in the middle of 2 points
  • planeNormal - Compute the normal to a plane
  • planePosition - Compute position of a point on a plane
  • planePoint - Compute 3D position of a point in a plane
  • dihedralAngle - Compute dihedral angle between 2 planes
  • drawPlane3d - Draw a plane clipped in the current window

3D Polygons and curves

  • polygons3d - Description of functions operating on 3D polygons
  • polygonCentroid3d - Centroid (or center of mass) of a polygon
  • polygonArea3d - Area of a 3D polygon
  • triangleArea3d - Area of a 3D triangle
  • polygon3dNormalAngle - Normal angle at a vertex of the 3D polygon
  • intersectLinePolygon3d - Intersection point of a 3D line and a 3D polygon
  • intersectLineTriangle3d - Intersection point of a 3D line and a 3D triangle
  • intersectRayPolygon3d - Intersection point of a 3D ray and a 3D polygon
  • clipConvexPolygon3dHP - Clip a convex 3D polygon with Half-space
  • drawPolygon3d - Draw a 3D polygon specified by a list of vertices
  • drawPolyline3d - Draw a 3D polyline specified by a list of vertices
  • fillPolygon3d - Fill a 3D polygon specified by a list of points

3D circles and ellipses

  • circles3d - Description of functions operating on 3D circles
  • circle3dPosition - Return the angular position of a point on a 3D circle
  • circle3dPoint - Coordinates of a point on a 3D circle from its position
  • circle3dOrigin - Return the first point of a 3D circle
  • drawCircle3d - Draw a 3D circle
  • drawCircleArc3d - Draw a 3D circle arc
  • drawEllipse3d - Draw a 3D ellipse

Spheres

  • spheres - Description of functions operating on 3D spheres
  • createSphere - Create a sphere containing 4 points
  • intersectLineSphere - Return intersection points between a line and a sphere
  • intersectPlaneSphere - Return intersection circle between a plane and a sphere
  • drawSphere - Draw a sphere as a mesh
  • drawSphericalEdge - Draw an edge on the surface of a sphere
  • drawSphericalTriangle - Draw a triangle on a sphere
  • fillSphericalTriangle - Fill a triangle on a sphere
  • drawSphericalPolygon - Draw a spherical polygon
  • fillSphericalPolygon - Fill a spherical polygon
  • sphericalVoronoiDomain - Compute a spherical voronoi domain

Smooth surfaces

  • inertiaEllipsoid - Inertia ellipsoid of a set of 3D points
  • ellipsoidSurfaceArea - Approximated surface area of an ellipsoid
  • drawEllipsoid - Draw a 3D ellipsoid
  • intersectLineCylinder - Compute intersection points between a line and a cylinder
  • revolutionSurface - Create a surface of revolution from a planar curve
  • surfaceCurvature - Curvature on a surface from angle and principal curvatures
  • drawTorus - Draw a torus (3D ring)
  • drawCylinder - Draw a cylinder
  • drawEllipseCylinder - Draw a cylinder with ellipse cross-section
  • drawSurfPatch - Draw a 3D surface patch, with 2 parametrized surfaces

Bounding boxes management

  • boxes3d - Description of functions operating on 3D boxes
  • boundingBox3d - Bounding box of a set of 3D points
  • intersectBoxes3d - Intersection of two 3D bounding boxes
  • mergeBoxes3d - Merge 3D boxes, by computing their greatest extent
  • box3dVolume - Volume of a 3-dimensional box
  • randomPointInBox3d - Generate random point(s) within a 3D box
  • drawBox3d - Draw a 3D box defined by coordinate extents

Geometric transforms

  • transforms3d - Conventions for manipulating 3D affine transforms
  • createTranslation3d - Create the 4x4 matrix of a 3D translation
  • createScaling3d - Create the 4x4 matrix of a 3D scaling
  • createRotationOx - Create the 4x4 matrix of a 3D rotation around x-axis
  • createRotationOy - Create the 4x4 matrix of a 3D rotation around y-axis
  • createRotationOz - Create the 4x4 matrix of a 3D rotation around z-axis
  • createBasisTransform3d - Compute matrix for transforming a basis into another basis
  • eulerAnglesToRotation3d - Convert 3D Euler angles to 3D rotation matrix
  • rotation3dToEulerAngles - Extract Euler angles from a rotation matrix
  • createRotation3dLineAngle - Create rotation around a line by an angle theta
  • rotation3dAxisAndAngle - Determine axis and angle of a 3D rotation matrix
  • recenterTransform3d - Change the fixed point of an affine 3D transform
  • composeTransforms3d - Concatenate several space transformations

Various drawing Functions

  • drawGrid3d - Draw a 3D grid on the current axis
  • drawAxis3d - Draw a coordinate system and an origin
  • drawAxisCube - Draw a colored cube representing axis orientation
  • drawCube - Draw a 3D centered cube, eventually rotated
  • drawCuboid - Draw a 3D cuboid, eventually rotated