Exported Functions
WhatsThePoint.AbstractSurface — Type
abstract type AbstractSurface{M<:Manifold,C<:CRS} endA surface of a PointSurface.
WhatsThePoint.ConstantSpacing — Type
ConstantSpacing{L<:Unitful.Length} <: AbstractSpacingConstant node spacing.
WhatsThePoint.LogLike — Type
LogLike <: VariableSpacingNode spacing based on a log-like function of the distance to nearest boundary $x/(x+a)$ where $x$ is the distance to the nearest boundary and $a$ is a parameter to control the growth rate as $a = 1 - (g - 1)$ where $g$ is the conventional growth rate parameter.
WhatsThePoint.PointBoundary — Type
struct PointBoundary{Dim,T,P}A boundary of points.
WhatsThePoint.PointCloud — Type
struct PointCloud{M,C} <: Domain{M,C}A point cloud.
WhatsThePoint.PointSurface — Type
struct PointSurface{M,C} <: AbstractSurface{M,C}This is a typical representation of a surface via points.
WhatsThePoint.Power — Type
Power <: VariableSpacingNode spacing based on a power of the distance to nearest boundary $x^{g}$ where $x$ is the distance to the nearest boundary and $g$ is the growth_rate.
WhatsThePoint.SurfaceElement — Type
struct SurfaceElement{M,C,N,A}Representation of a point on a <:PointSurface.
WhatsThePoint.compute_normals — Method
compute_normals(search_method::KNearestSearch, surf::PointSurface{𝔼{N},C}) where {N,C<:CRS}Estimate the normals of a set of points that form a surface. Uses the PCA approach from "Surface Reconstruction from Unorganized Points" - Hoppe (1992).
Requires Euclidean manifold (𝔼{2} or 𝔼{3}). This function assumes flat space geometry.
WhatsThePoint.compute_normals — Method
compute_normals(surf::PointSurface{𝔼{N},C}; k::Int=5) where {N,C<:CRS}Estimate the normals of a set of points that form a surface. Uses the PCA approach from "Surface Reconstruction from Unorganized Points" - Hoppe (1992).
Requires Euclidean manifold (𝔼{2} or 𝔼{3}). This function assumes flat space geometry.
WhatsThePoint.emptyspace — Method
emptyspace(testpoint, points)Check if a point occupies empty space within a certain tolerance.
WhatsThePoint.import_surface — Method
import_surface(filepath::String)Import a surface mesh. Re-uses code from MeshBridge.jl, did not use their package because I needed to calculate face centers which they do not do.
WhatsThePoint.orient_normals! — Method
orient_normals!(search_method::KNearestSearch, normals::AbstractVector{<:AbstractVector}, points)Correct the orientation of normals on a surface as the compute_normals function does not guarantee if the normal is inward or outward facing. Uses the approach from "Surface Reconstruction from Unorganized Points" - Hoppe (1992).
WhatsThePoint.orient_normals! — Method
orient_normals!(normals::AbstractVector{<:AbstractVector}, points::AbstractVector{<:Point{𝔼{N}}}; k::Int=5) where {N}Correct the orientation of normals on a surface as the compute_normals function does not guarantee if the normal is inward or outward facing. Uses the approach from "Surface Reconstruction from Unorganized Points" - Hoppe (1992).
Requires Euclidean manifold (𝔼{2} or 𝔼{3}). This function uses Euclidean dot products for orientation consistency.
WhatsThePoint.update_normals! — Method
update_normals!(surf::PointSurface{𝔼{N},C}; k::Int=5) where {N,C<:CRS}Update the normals of the boundary of a surf. This is necessary whenever the points change for any reason.
Requires Euclidean manifold (𝔼{2} or 𝔼{3}). This function assumes flat space geometry.