MyNixOS website logo
Description

Exploration of Dental Surface Topography.

Tools for exploring the topography of 3d triangle meshes. The functions were developed with dental surfaces in mind, but could be applied to any triangle mesh of class 'mesh3d'. More specifically, 'doolkit' allows to isolate the border of a mesh, or a subpart of the mesh using the polygon networks method; crop a mesh; compute basic descriptors (elevation, orientation, footprint area); compute slope, angularity and relief index (Ungar and Williamson (2000) <https://palaeo-electronica.org/2000_1/gorilla/issue1_00.htm>; Boyer (2008) <doi:10.1016/j.jhevol.2008.08.002>), inclination and occlusal relief index or gamma (Guy et al. (2013) <doi:10.1371/journal.pone.0066142>), OPC (Evans et al. (2007) <doi:10.1038/nature05433>), OPCR (Wilson et al. (2012) <doi:10.1038/nature10880>), DNE (Bunn et al. (2011) <doi:10.1002/ajpa.21489>; Pampush et al. (2016) <doi:10.1007/s10914-016-9326-0>), form factor (Horton (1932) <doi:10.1029/TR013i001p00350>), basin elongation (Schum (1956) <doi:10.1130/0016-7606(1956)67[597:EODSAS]2.0.CO;2>), lemniscate ratio (Chorley et al; (1957) <doi:10.2475/ajs.255.2.138>), enamel-dentine distance (Guy et al. (2015) <doi:10.1371/journal.pone.0138802>; Thiery et al. (2017) <doi:10.3389/fphys.2017.00524>), absolute crown strength (Schwartz et al. (2020) <doi:10.1098/rsbl.2019.0671>), relief rate (Thiery et al. (2019) <doi:10.1002/ajpa.23916>) and area-relative curvature; draw cumulative profiles of a topographic variable; and map a variable over a 3d triangle mesh.

doolkit

The doolkit package provides functions to explore the topography of 3d triangle meshes. It was developed with dental surfaces in mind, but could be applied to any triangle mesh of class ‘mesh3d’. The package aims to group all the methods associated to dental topography within the same toolkit. New methods could be included and shall be introduced in later versions of the package.

Installation

You can install the released version of doolkit from CRAN with:

install.packages("doolkit")

Example

library(doolkit)

#Import surfaces
#PLY <- Rvcg::vcgImport(choose.files(), updateNormals = TRUE, clean = TRUE, silent = TRUE) 
PLY <- dkpongo$OES

#Computation
Area <- round(Rvcg::vcgArea(PLY), digits = 2)
#...relief
Gamma <- round(rfi(PLY, method = "Guy"), digits = 2)
Rfi <- round(rfi(PLY, method = "Ungar"), digits = 2)
Lrfi <- round(rfi(PLY, method = "Boyer"), digits = 2)
Slope <- round(mean(slope(PLY)), digits = 2)
#...sharpness
ARC <- arc(PLY)
Arc <- round(mean(ARC), digits = 3)
Parc <- round(mean(ARC[ARC >= 0]), digits = 3)
Narc <- round(mean(ARC[ARC < 0]), digits = 3)
Dne <- round(dne(PLY, total = TRUE), digits = 2)
#...complexity
Opcr <- round(opcr(PLY)$opcr, digits = 1)
#...shape indices
FormFactor <- round(shape.index(PLY)$FormFactor, digits = 3)
Elongation <- round(shape.index(PLY)$Elongation, digits = 3)
K <- round(shape.index(PLY)$K, digits = 3)

#Maps
#...relief
dkmap(dkpongo$OES, doolkit::elev(dkpongo$OES), col = "elev", legend.lab = "Elevation (mm)")
dkmap(dkpongo$OES, doolkit::slope(dkpongo$OES), col.levels = 9, col = "slope", legend.lab = "Slope (degrees)", min.range = 0, max.range = 90)
#...orientation
dkmap(dkpongo$OES, orient(dkpongo$OES), col.levels = 8, col = "orient", legend.lab = "Orientation (degrees)",legend.type = "pie", min.range = 0, max.range = 360)
#...sharpness
dkmap(dkpongo$OES, doolkit::arc(dkpongo$OES), col = "arc", legend.lab = "ARC", min.range = -20, max.range = 20, col.levels = 15)
dkmap(dkpongo$OES, doolkit::dne(dkpongo$OES), col = "dne", legend.lab = "DNE", legend.type = "log")
Metadata

Version

1.42.2

License

Unknown

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows