ImFusion Web SDK

Graph

Data representing a (potentially directed) graph.

A graph is guaranteed to have several invariants enforced:

  • In undirected graphs, for each edge (i, j), there is the edge (j, i) in the graph.
  • Each node has a fixed number of features (see GraphNode.features).
  • Each edge has a fixed number of features (see GraphEdge.features). These invariants ensure that:
  • Deleting a node is O(log(N)) (assuming some fixed number of edges per node).
  • Features can be accessed by index, and are guaranteed to exist. Self-loops are allowed.

Extends

Properties

PropertyTypeDescription
matrixToWorldmat4The matrix of this Graph mapping to world coordinates.
matrixFromWorldmat4The matrix of this Graph mapping from world coordinates.

Accessors

Inherited from Data

AccessorDescription
nameThe name of the dataset

Methods

MethodDescription
numNodes()
numEdges()
dimension()
type()
nodeFeatureNames()
edgeFeatureNames()
getNodeFeature()Returns the node feature index, or undefined if the name is not present.
addNodeFeature()Adds a node feature with the given name.
getEdgeFeature()Returns the edge feature index, or undefined if the name is not present.
addEdgeFeature()Adds an edge feature with the given name.
addNode()Adds a node and assigns it an index.
nodes()Returns All nodes, ordered by node index.
editNode()Edits a node.
removeNode()Removes a node and its incident edges.
addEdge()Adds an edge between two existing nodes.
edges()Returns all edges.
editEdge()Edits an edge.
removeEdge()Removes an edge.
displayOptions()
edge()Returns an edge, or undefined if the directed edge does not exist.
node()Returns a node, or undefined if the index does not exist.

Inherited from Data

MethodDescription
kind()Returns the kind of this data.
modality()Returns the modality of this data.
bounds()Returns the axis-aligned bounding box of this data in world space.

Inherited from ClassHandle

MethodDescription
isAliasOf()Returns true if this handle and other alias the same underlying C++ object.
delete()Releases this JavaScript handle.
deleteLater()Schedules this handle for deferred deletion and returns this handle.
isDeleted()Returns true if this handle has already been deleted.
[dispose]()Releases this handle when the enclosing scope exits, so a handle can be declared with using instead of calling delete() later manually.
clone()Returns a new JavaScript handle aliasing the same underlying C++ object.

numNodes()

ts
numNodes(): number;

Returns

number

The number of nodes of this graph.


numEdges()

ts
numEdges(): number;

Returns

number

The number of edges of this graph.


dimension()

ts
dimension(): GraphDimension;

Returns

GraphDimension

Whether this graph is planar or three-dimensional.


type()

ts
type(): GraphType;

Returns

GraphType

Whether the edges of this graph are directed.


nodeFeatureNames()

ts
nodeFeatureNames(): StringList;

Returns

StringList

The names of the features attached to every node, in feature order.


edgeFeatureNames()

ts
edgeFeatureNames(): StringList;

Returns

StringList

The names of the features attached to every edge, in feature order.


getNodeFeature()

ts
getNodeFeature(name: EmbindString): number | undefined;

Returns the node feature index, or undefined if the name is not present.

Parameters

ParameterType
nameEmbindString

Returns

number | undefined


addNodeFeature()

ts
addNodeFeature(name: EmbindString, defaultValue?: number): number | undefined;

Adds a node feature with the given name. All existing and subsequently added nodes are assigned defaultValue if no explicit value is provided in the respective addNode function.

Parameters

ParameterTypeDescription
nameEmbindString-
defaultValue?numberDefaults to 0.

Returns

number | undefined

The feature index in GraphNode.features, or undefined if the name already exists.


getEdgeFeature()

ts
getEdgeFeature(name: EmbindString): number | undefined;

Returns the edge feature index, or undefined if the name is not present.

Parameters

ParameterType
nameEmbindString

Returns

number | undefined


addEdgeFeature()

ts
addEdgeFeature(name: EmbindString, defaultValue?: number): number | undefined;

Adds an edge feature with the given name. All existing and subsequently added edges are assigned defaultValue if no explicit value is provided in the respective addEdge function.

Parameters

ParameterTypeDescription
nameEmbindString-
defaultValue?numberDefaults to 0.

Returns

number | undefined

The feature index in GraphEdge.features, or undefined if the name already exists.


addNode()

ts
addNode(node: {
  position: vec3;
  features?: number[];
}): number;

Adds a node and assigns it an index. Omitted feature values are populated from the node feature defaults.

Parameters

ParameterType
node{ position: vec3; features?: number[]; }
node.positionvec3
node.features?number[]

Returns

number

The new node index.


nodes()

ts
nodes(): GraphNode[];

Returns All nodes, ordered by node index.

Returns

GraphNode[]


editNode()

ts
editNode(index: number, options: {
  position?: vec3;
  features?: number[];
}): boolean;

Edits a node.

Parameters

ParameterTypeDescription
indexnumber-
options{ position?: vec3; features?: number[]; }Position and/or complete feature array to replace. Omitted properties remain unchanged.
options.position?vec3-
options.features?number[]-

Returns

boolean

Whether the node existed and was edited.


removeNode()

ts
removeNode(index: number): boolean;

Removes a node and its incident edges.

Parameters

ParameterType
indexnumber

Returns

boolean

Whether the node existed and was removed.


addEdge()

ts
addEdge(edge: {
  from: number;
  to: number;
  features?: number[];
}): boolean;

Adds an edge between two existing nodes.

Parameters

ParameterType
edge{ from: number; to: number; features?: number[]; }
edge.fromnumber
edge.tonumber
edge.features?number[]

Returns

boolean

false if either node does not exist or the edge already exists.


edges()

ts
edges(): GraphEdge[];

Returns all edges. Undirected edges are returned once.

Returns

GraphEdge[]


editEdge()

ts
editEdge(
   from: number,
   to: number,
   options: {
  features: number[];
}): boolean;

Edits an edge.

Parameters

ParameterTypeDescription
fromnumber-
tonumber-
options{ features: number[]; }Complete feature array to replace.
options.featuresnumber[]-

Returns

boolean

Whether the edge existed and was edited.


removeEdge()

ts
removeEdge(from: number, to: number): boolean;

Removes an edge.

Parameters

ParameterType
fromnumber
tonumber

Returns

boolean

false if the directed edge does not exist.


displayOptions()

ts
displayOptions(): GraphDisplayOptions;

Returns

GraphDisplayOptions

GraphDisplayOptions for configuring Graph rendering.


edge()

ts
edge(from: number, to: number): GraphEdge | undefined;

Returns an edge, or undefined if the directed edge does not exist. For undirected graphs, either node order addresses the same edge.

Parameters

ParameterType
fromnumber
tonumber

Returns

GraphEdge | undefined


node()

ts
node(index: number): GraphNode | undefined;

Returns a node, or undefined if the index does not exist.

Parameters

ParameterType
indexnumber

Returns

GraphNode | undefined

On this page