# Scalar Quantities

Visualize scalar (real or integer)-valued data at the elements of a surface mesh.

Example: visualizing cotangent weights at edges with geometry-central

#include "geometrycentral/surface/vertex_position_geometry.h"
#include "polyscope/polyscope.h"
#include "polyscope/surface_mesh.h"

polyscope::init();

std::unique_ptr<HalfedgeMesh> mesh;
std::unique_ptr<VertexPositionGeometry> geom;

geom->requireVertexPositions();

// Register the geometry-central mesh
auto psMesh = polyscope::registerSurfaceMesh("input mesh",
geom->vertexPositions,
mesh->getFaceVertexList());
psMesh->setAllPermutations(polyscopePermutations(*mesh)); // set permutations,
// so edge data is meaningful

// Build cotan weights for the mesh
geom->requireEdgeCotanWeights();

// Visualize cotan weights
polyscope::show();


SurfaceMesh::addVertexScalarQuantity(std::string name, const T& values, DataType type = DataType::STANDARD)

Add a scalar quantity defined at the vertices of the mesh.

• values is the array of scalars at vertices. The type should be adaptable to a float scalar array. The length should be the number of vertices in the mesh.
SurfaceMesh::addFaceScalarQuantity(std::string name, const T& values, DataType type = DataType::STANDARD)

Add a scalar quantity defined at the faces of the mesh.

• values is the array of scalars at faces. The type should be adaptable to a float scalar array. The length should be the number of faces in the mesh.
SurfaceMesh::addEdgeScalarQuantity(std::string name, const T& values, DataType type = DataType::STANDARD)

Add a scalar quantity defined at the edges of the mesh.

• values is the array of scalars at edges. The type should be adaptable to a float scalar array. The length should be the number of edges in the mesh.

Remember, before passing edge-valued data, be sure your indexing convention matches what Polyscope expects.

SurfaceMesh::addHalfedgeScalarQuantity(std::string name, const T& values, DataType type = DataType::STANDARD)

Add a scalar quantity defined at the halfedges of the mesh.

• values is the array of scalars at halfedges. The type should be adaptable to a float scalar array. The length should be the number of halfedges in the mesh.

Remember, before passing halfedge-valued data, be sure your indexing convention matches what Polyscope expects.