plebeiangraphlibrary 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Binary file
package/Build/pgl.d.ts ADDED
@@ -0,0 +1,642 @@
1
+ import * as THREE from "three";
2
+ import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";
3
+ interface Point {
4
+ x: number;
5
+ y: number;
6
+ z: number;
7
+ }
8
+ declare class Point {
9
+ /**
10
+ * Constructs a point based on the x y z values
11
+ * @param x x value
12
+ * @param y y value
13
+ * @param z z value
14
+ */
15
+ constructor(x: number, y: number, z: number);
16
+ /**
17
+ * Displaces a point - note this method moves the existing point
18
+ * @param Point This is the displacement vactor, used as a point but the same idea holds
19
+ */
20
+ translate(Point: Point): void;
21
+ }
22
+ interface Line {
23
+ points: Point[];
24
+ }
25
+ declare class Line {
26
+ /**
27
+ * Constructs a line from an array of points
28
+ * @param points an array of points
29
+ */
30
+ constructor(points: Point[]);
31
+ }
32
+ interface _Node {
33
+ data: any;
34
+ neighbours: number[];
35
+ }
36
+ /**
37
+ * This is the node class - they have an ID which is
38
+ * essentially an index and some data associated with it
39
+ * The data also contains the position of the
40
+ */
41
+ declare class _Node {
42
+ /**
43
+ *
44
+ * @param data Data associated with the node, be sure to be careful to pass in any "pos" data as they correspond to position of the nodes in the visuals of the graph
45
+ */
46
+ constructor(data: any);
47
+ }
48
+ interface Edge {
49
+ start: number;
50
+ end: number;
51
+ data: any;
52
+ }
53
+ /**
54
+ * The edge class, edges have a start and end but they can also have data associated with that edge
55
+ */
56
+ declare class Edge {
57
+ /**
58
+ *
59
+ * Construct an edge
60
+ *
61
+ * @param start Start index of the edge based on the array of nodes
62
+ * @param end End index of the edge based on the array of nodes
63
+ * @param data Data associated, note that ldata is reserved for how to draw the lines associated with the edge
64
+ */
65
+ constructor(start: number, end: number, data: any);
66
+ }
67
+ export interface Graph {
68
+ nodes: Map<number, _Node>;
69
+ edges: Map<number, Edge>;
70
+ }
71
+ /**
72
+ * The main graph object - this contrains nodes and edges that get modified with different
73
+ * Operations etc.
74
+ */
75
+ export class Graph {
76
+ /**
77
+ *
78
+ * Construct a graph object (no initializing)
79
+ *
80
+ * @param nodes - Map of all the nodes associated with the graph
81
+ * @param edges - Map of all the edges assocaiated with the graph
82
+ */
83
+ constructor(nodes: Map<number, _Node>, edges: Map<number, Edge>);
84
+ /**
85
+ * Prints out a snapshot of data associated with this graph like how many nodes and how many edges
86
+ */
87
+ printData(): void;
88
+ /**
89
+ * Initializes the graph and constructs a node adajaceny list list
90
+ */
91
+ initialize(): Promise<void>;
92
+ /**
93
+ *
94
+ * This is the official create method to make a graph based on a set of nodes and edges
95
+ * It also auto initializes the graph and sets all the adjaceny lists in the memory
96
+ *
97
+ * @param nodes - map of nodes
98
+ * @param edges - map of edges
99
+ * @returns
100
+ */
101
+ static create(nodes: Map<number, _Node>, edges: Map<number, Edge>): Promise<Graph>;
102
+ /**
103
+ * Constructs the adjacency associated with the graph
104
+ */
105
+ constructAdjacencyList(): Promise<void>;
106
+ /**
107
+ * Add a noce to the graph
108
+ * @param nodeID - the node ID
109
+ * @param data - data associated with the node
110
+ */
111
+ add_node(nodeID: number, data: _Node): void;
112
+ /**
113
+ * Add an edge to the graph
114
+ * @param start - Starting index of the edge
115
+ * @param end - The end index of the edge
116
+ * @param data - data associated with the edge
117
+ */
118
+ add_edge(start: number, end: number, data: any): void;
119
+ /**
120
+ *
121
+ * @returns Get the adjaceny (adjacency lists) associated with the graph
122
+ */
123
+ get_adjacency(): Map<number, number[]>;
124
+ /**
125
+ * Apply a position map based on some data
126
+ * @param data - the position map that has to be applied to the graph
127
+ */
128
+ apply_position_map(data: Map<number, Point>): void;
129
+ /**
130
+ * Apply an line map to a graph
131
+ * @param data Line data that has to be applied to the graph
132
+ */
133
+ apply_edge_pos_maps(data: Map<number, Line>): void;
134
+ /**
135
+ * get the current edge map
136
+ * @returns The current set of edges associated with the graph
137
+ */
138
+ get_edge_map(): Map<number, Line>;
139
+ /**
140
+ * Applies all the maps to the graph
141
+ * @param layout - Applies an object of maps associated with with a graph is made up of {pmap:(the position map), emap:{the edge map}}
142
+ */
143
+ apply_drawing_maps(layout: {
144
+ pmap: Map<number, Point>;
145
+ emap: Map<number, Line>;
146
+ }): void;
147
+ /**
148
+ * Gets the position map and the edge map respectively
149
+ * @returns the positon map and the edge map as pmap and emap
150
+ */
151
+ get_map(): {
152
+ pmap: Map<number, Point>;
153
+ emap: Map<number, Line>;
154
+ };
155
+ /**
156
+ * get the postion of the nodes in the graph
157
+ * @returns the position map
158
+ */
159
+ get_position_map(): Map<number, Point>;
160
+ }
161
+ /**
162
+ *
163
+ * Performs a BFS search on a graph - Async because it takes a while on large graphs
164
+ *
165
+ * @param Graph - The graph which has to be searched using the BFS algorithm
166
+ * @param node - The node form which to start
167
+ * @returns - A map of which node was explored from which other node
168
+ */
169
+ declare function BFSSearch(Graph: Graph, node: number): Promise<Map<number, number>>;
170
+ /**
171
+ *
172
+ * Performs a dijkstra search on a graph
173
+ *
174
+ * @param Graph - The graph on which to perform the Dijkstra search
175
+ * @param Node - The node from which to start
176
+ * @returns - Map from which each one of the nodes was searched from
177
+ */
178
+ declare function Dijkstra(Graph: Graph, Node: number): Promise<Map<number, number>>;
179
+ /**
180
+ *
181
+ * Finds the diameter of the graph
182
+ *
183
+ * @param Graph
184
+ * @returns returns an object with a start, end - the two points of a graph and the diameter of the graph
185
+ */
186
+ declare function GraphDiameter(Graph: Graph): Promise<{
187
+ start: number;
188
+ end: number;
189
+ distance: number;
190
+ }>;
191
+ /**
192
+ *
193
+ * Select a subgraph
194
+ *
195
+ * @param graph - The main graph to select from
196
+ * @param nodeList - The selection of nodes that we want to select from this graph
197
+ * @returns A graph object that contains this subgraph
198
+ */
199
+ declare function SelectSubgraph(graph: Graph, nodeList: number[]): Promise<Graph>;
200
+ export const GraphMethods: {
201
+ GraphDiameter: typeof GraphDiameter;
202
+ Dijkstra: typeof Dijkstra;
203
+ BFSSearch: typeof BFSSearch;
204
+ SelectSubgraph: typeof SelectSubgraph;
205
+ };
206
+ /**
207
+ * construct a graph based on an edge list and node list
208
+ * @param nodes nodes as a list
209
+ * @param edges edges as a list
210
+ * @returns A graph that was construct from the list of nodes and edges
211
+ */
212
+ declare function ConstructGraphNodeEdgesList(nodes: any[], edges: any[]): Promise<Graph>;
213
+ export const Constructors: {
214
+ ConstructGraphNodeEdgesList: typeof ConstructGraphNodeEdgesList;
215
+ };
216
+ /**
217
+ * calculate the average of an array of numberss
218
+ * @param arr an array of number whose average has to be calculated
219
+ * @returns the average
220
+ */
221
+ declare function calculateAverage(arr: number[]): number;
222
+ /**
223
+ * Calculate the distance betweeen two points
224
+ * @param p1 the first point
225
+ * @param p2 the second point
226
+ * @returns the distance between the points
227
+ */
228
+ declare function calculateDistance(p1: Point, p2: Point): number;
229
+ /**
230
+ * Calculate the squared distance between two points
231
+ * @param p1 the first point
232
+ * @param p2 the second point
233
+ * @returns the squared distance between the two points
234
+ */
235
+ declare function calculateSquaredDistance(p1: Point, p2: Point): number;
236
+ /**
237
+ * get a random subset of something from a array of things must provide the number of things we want from that array
238
+ * @param arr the array from which the subset has to be made
239
+ * @param n number of items to select
240
+ * @returns a new array made up of a random sample from the original array
241
+ */
242
+ declare function getRandomSubset(arr: any[], n: number): any[];
243
+ /**
244
+ * This is a super useful method to get a random number of edges or something that you would like to draw
245
+ * this is primarily done because there are way too many edges sometimes and and the number of edges is really
246
+ * What slows the whole rendering process down
247
+ * @param map - the map that youd like to reduce
248
+ * @param n - the fraction of items that youd like to return from this map
249
+ * @returns A reduced map with a fractio of those many entries
250
+ */
251
+ declare function getRandomSubset_map(map: Map<number, any>, n: number): Map<any, any>;
252
+ export const Utilities: {
253
+ calculateAverage: typeof calculateAverage;
254
+ calculateDistance: typeof calculateDistance;
255
+ calculateSquaredDistance: typeof calculateSquaredDistance;
256
+ getRandomSubset: typeof getRandomSubset;
257
+ getRandomSubset_map: typeof getRandomSubset_map;
258
+ };
259
+ /**
260
+ * Creates a line based on the number of divisons
261
+ *
262
+ * @param start the start point
263
+ * @param end the end point
264
+ * @param divisions the number of divisions
265
+ * @returns the line object
266
+ */
267
+ declare function line_from_start_end_divisions(start: Point, end: Point, divisions: number): Line;
268
+ /**
269
+ * Divides the line into a number of divisions based on distance
270
+ * @param start - the start point
271
+ * @param end - the end point
272
+ * @param distance - the distance at which this line must be divided
273
+ * @returns A line object with the right number of points
274
+ */
275
+ declare function line_from_start_end_distance(start: Point, end: Point, distance: number): Line;
276
+ /**
277
+ * Calculates the centroid of an array of points
278
+ * @param points An array of points
279
+ * @returns the central point of the array of points
280
+ */
281
+ declare function centroid(points: Point[]): Point;
282
+ export const Geometry: {
283
+ line_from_start_end_divisions: typeof line_from_start_end_divisions;
284
+ line_from_start_end_distance: typeof line_from_start_end_distance;
285
+ centroid: typeof centroid;
286
+ };
287
+ /**
288
+ * Simulates Kamada kawai for a network in 2d. 3d is not supported yet
289
+ * Note: This is an async function as it take time for some of the large graphs
290
+ *
291
+ * @param Graph - The first input number
292
+ * @param iterations - The second input number
293
+ * @param simulationBound - The bounds of simulation (Mostly a global number to scale the graph up or down)
294
+ * @param cohesionValue - How sticky the nodes are i.r. how much they cluster together
295
+ * @returns And node map of all the nodes and their simulated positions - Please note: position maps have to to be applied to the graph!
296
+ *
297
+ */
298
+ declare function SimulateKamadaKawai(Graph: Graph, iterations: number, simulationBound?: number, cohesionValue?: number, repulsionValue?: number): Promise<Map<number, Point>>;
299
+ /**
300
+ *
301
+ * Randomly sets all the positions for a graph
302
+ * Not really very useful but I've used it in some cases and have kept it around
303
+ *
304
+ * @param Graph - The graph who's nodes you would want to reposition
305
+ *
306
+ * @return A position map of all the nodes and its corresponding positions
307
+ */
308
+ declare function InstanciateRandomPositions(Graph: Graph): Map<number, Point>;
309
+ /**
310
+ *
311
+ * Constructs the edges as lines, Note: these are just a representation of the lines
312
+ * they then have to be visulized using one of the Three JS Drawer functions like
313
+ * draw a thick line or a thin line. This draws out the edges divided by some number of
314
+ * divisions that you specify
315
+ *
316
+ * @param Graph - The graph whos edges are getting drawn
317
+ * @param divDistance - How many divisions (distance) to make along the edge
318
+ * @returns A line map - which holds a map of all the edge indices and the corresponding line representations
319
+ */
320
+ declare function DrawEdgeLines(Graph: Graph, divDistance: number): Map<number, Line>;
321
+ /**
322
+ *
323
+ * Constructs the edges as lines, Note: these are just a representation of the lines
324
+ * they then have to be visulized using one of the Three JS Drawer functions like
325
+ * draw a thick line or a thin line - this draws them based on the number of divisions
326
+ * you would like them to have
327
+ * @param Graph - The graph whos edges are getting drawn
328
+ * @param numberOfDivs - How many divisions to make along the edge
329
+ * @returns A line map - which holds a map of all the edge indices and the corresponding line representations
330
+ */
331
+ declare function DrawEdgeLinesDivisions(Graph: Graph, numberOfDivs: number): Map<number, Line>;
332
+ /**
333
+ *
334
+ * Edge bundling - this isnt as fast as the current KDE based methods - but it provides a basic method of
335
+ * Visualizing large edge flows. Note: This is an aysnc function as it takes a while for the edge bundling to happen
336
+ *
337
+ * @param LineMap - The map of edges as a line map
338
+ * @param iterations - The number of iterations to run edge bundling
339
+ * @param distance - A shorthand for how close together the vertices need to be before they get influnced by each other
340
+ * @returns A line map with all the updated positions of the line (Where they are bundled together) Again - this needs to be applied to the graph!
341
+ */
342
+ declare function DrawEdgeBundling(LineMap: Map<number, Line>, iterations: number, distance: number): Promise<Map<number, Line>>;
343
+ /**
344
+ *
345
+ * Displace the edges vertically, almost akin to the Deck.gl arcs
346
+ * The displacement is done in a sin curve with the ends still touching the nodes
347
+ * Note: This is an inplace modification of the edges
348
+ *
349
+ * @param LineMap - The map of edges as a line map
350
+ * @param displacement - the amount of vertical displacement
351
+ */
352
+ declare function DisplaceEdgeInY(LineMap: Map<number, Line>, displacement: number): Map<number, Line>;
353
+ /**
354
+ *
355
+ * Displace the vertices vertically based on some prameter (For example degree or modularity)
356
+ *
357
+ * @param Graph - the graph whos nodes have to be displaced
358
+ * @param parameter - the prameter based on which you want to modify the
359
+ * @param displacement - the maximum amunt of displacement, all the other values are rescaled linerly
360
+ */
361
+ declare function DisplaceVertices(Graph: Graph, parameter: string, displacement: number): void;
362
+ /**
363
+ *
364
+ * Generates a hive plot for a graph, this includes the option to displace the graph vertically based on degrees and how far away each node is
365
+ *
366
+ * @param Graph - The graph
367
+ * @param selectedNode - the node around which the hive plot is generated
368
+ * @param step - If the hive should step up or down if yes then by what increments
369
+ * @param startPosition - Starting position
370
+ * @returns
371
+ */
372
+ declare function HivePlot(Graph: Graph, selectedNode: number, step: number, startPosition: Point): Promise<{
373
+ pmap: Map<any, any>;
374
+ emap: Map<number, Line>;
375
+ }>;
376
+ /**
377
+ * Move a graph somewhere (like the physical location) - This is an inplace movement and overwrites existing values
378
+ *
379
+ * @param Graph - The graph that has to be moved
380
+ * @param dispacement - This is a point and I end up using Point and Vector interchangably. So here the xyz values from the point are used to displace the nodes
381
+ */
382
+ declare function MoveGraph(Graph: Graph, dispacement: Point): void;
383
+ /**
384
+ *
385
+ * Draw new lines from edges, and draw them based on the distance of divisions (i.e. divide the line up every 10 units) Note: This is an in place update that takes place on the graph - it overwrites the existing data.
386
+ *
387
+ * @param Graph - The grapht who's edges have to be updated
388
+ * @param divDistance - The distance by which the divisions are made
389
+ */
390
+ declare function UpdateEdgeLinesDist(Graph: Graph, divDistance: number): void;
391
+ /**
392
+ *
393
+ * Draw new lines from edges, and draw them based on divisions (i.e. divide the line into 10 units) Note: This is an in place update that takes place on the graph - it overwrites the existing data.
394
+
395
+ * @param Graph - The grapht who's edges have to be updated
396
+ * @param Divs - The number of divisions to be made
397
+ */
398
+ declare function UpdateEdgeLinesDivs(Graph: Graph, Divs: number): void;
399
+ export const Drawing: {
400
+ SimulateKamadaKawai: typeof SimulateKamadaKawai;
401
+ DrawEdgeLines: typeof DrawEdgeLines;
402
+ DrawEdgeLinesDivisions: typeof DrawEdgeLinesDivisions;
403
+ DrawEdgeBundling: typeof DrawEdgeBundling;
404
+ HivePlot: typeof HivePlot;
405
+ DisplaceEdgeInY: typeof DisplaceEdgeInY;
406
+ MoveGraph: typeof MoveGraph;
407
+ InstanciateRandomPositions: typeof InstanciateRandomPositions;
408
+ DisplaceVertices: typeof DisplaceVertices;
409
+ UpdateEdgeLinesDist: typeof UpdateEdgeLinesDist;
410
+ UpdateEdgeLinesDivs: typeof UpdateEdgeLinesDivs;
411
+ };
412
+ /**
413
+ *
414
+ * @returns the raw ZKC dataset
415
+ */
416
+ declare function LoadZKC(): Promise<Graph>;
417
+ /**
418
+ *
419
+ * @returns the ZKC dataset with the positons simulated before hand
420
+ */
421
+ declare function LoadZKCSimulated(): Promise<Graph>;
422
+ export const SampleData: {
423
+ LoadZKC: typeof LoadZKC;
424
+ LoadZKCSimulated: typeof LoadZKCSimulated;
425
+ };
426
+ /**
427
+ *
428
+ * Draw the veritces of the graph out as a point cloud
429
+ *
430
+ * @param Graph - the graph that has to be drawn out
431
+ * @param bounds - A global scaling parameter defaults to 1 but change to scale up a garph
432
+ * @param size - The size of all the nodes - either input an array the same length of the number of nodes decribing how big each node is, or a global node value as a number or defaults to 1
433
+ * @param color - the color of the node defaults to white
434
+ * @param alpha - the alpha value of the node defaults to 1 (opaque)
435
+ * @returns a three JS group that contains all the vertices as a point cloud or a three js points object that can be added to the scene
436
+ */
437
+ declare function DrawTHREEGraphVertices(Graph: Graph, bounds?: number, size?: number | number[], color?: number, alpha?: number): THREE.Group;
438
+ /**
439
+ *
440
+ * Draws out all the edges (Thick edges of a graph)
441
+ *
442
+ * @param Graph - The graph whose edges have to be drawn
443
+ * @param bounds - the global scale for all the edges to be drawn defaults to 1
444
+ * @param color - color of the edges defaults to white
445
+ * @param thickness - thickness of the edges (defaults to 0.2)
446
+ * @returns a Three Js group of edges that can be added to the scene
447
+ */
448
+ declare function DrawTHREEGraphEdgesThick(Graph: Graph, bounds?: number, color?: number, thickness?: number): THREE.Group;
449
+ /**
450
+ *
451
+ * Draw thick edges from an edge map
452
+ *
453
+ * @param EdgeMap - The edge map associated with the graph
454
+ * @param bounds - The global scale of the graph - defaults to 1
455
+ * @param color - The color of the edges - defaults to white
456
+ * @param thickness - thickness of the edges - defaults to 0.2
457
+ * @returns
458
+ */
459
+ declare function DrawThickEdgesFromEdgeMap(EdgeMap: Map<number, Line>, bounds: number, color?: number, thickness?: number): THREE.Group;
460
+ /**
461
+ *
462
+ * Draw thin lines for all the edges given a graph
463
+ *
464
+ * @param Graph - The graph that has to be drawn
465
+ * @param bounds - The global scale factor for the the edges - defaults to 1
466
+ * @param color - color of the lines - defaults to white
467
+ * @returns
468
+ */
469
+ declare function DrawTHREEGraphEdgesThin(Graph: Graph, bounds?: number, color?: number): THREE.Group;
470
+ /**
471
+ *
472
+ * Draw Line map as lines given the edge map assocaited with the graph
473
+ *
474
+ * @param LineMap - The edge map that has to be drawn out
475
+ * @param bounds - Global scale for the edges to be drawn defaults to 1
476
+ * @param color - Color of the edges defaults to 1
477
+ * @returns
478
+ */
479
+ declare function DrawThinEdgesFromEdgeMap(LineMap: Map<number, Line>, bounds?: number, color?: number): THREE.Group;
480
+ /**
481
+ *
482
+ * Adde boxes where all the boxes are
483
+ *
484
+ * @param nodeMap - a map of all the nodes
485
+ * @param bounds - global scale of the edges to be drawn, defaults to 1
486
+ * @param color - default color of the edges, defaults to white
487
+ * @param size - size of the nodes defaults to 10
488
+ * @returns a group of vertices that contains all of the boxes associated with each one of the vertices
489
+ */
490
+ declare function AddBoxBasedImaging(nodeMap: Map<number, Point>, bounds?: number, color?: number, size?: number | number[]): THREE.Group;
491
+ /**
492
+ *
493
+ * Draw box based verices given a graph
494
+ *
495
+ * @param Graph - The graph that needs its vertices drawn
496
+ * @param bounds - A global scale for the graph, defaults to one
497
+ * @param color - Default color of the boxes defaults to white
498
+ * @param size - Default size of the nodes defaults to 10
499
+ * @returns
500
+ */
501
+ declare function DrawTHREEBoxBasedVertices(Graph: Graph, bounds?: number, color?: number, size?: number | number[]): THREE.Group;
502
+ /**
503
+ *
504
+ * Draw cylinders where all the vertices are based on a node map
505
+ *
506
+ * @param nodeMap - the node map assiciate with the graph that has to be drawn out
507
+ * @param divisonLength - the length of the divisions that are there in each one of the cylinder (this is a circumfurence amount), defaults to 16
508
+ * @param color - the default color of the cylinder, defaults to white
509
+ * @param size - the default size of the cylinder, defaults to 10
510
+ * @returns
511
+ */
512
+ declare function AddCylinderBasedImaging(nodeMap: Map<number, Point>, divisonLength?: number, color?: number, size?: number | number[]): THREE.Group;
513
+ /**
514
+ *
515
+ * Split up a graph and return an boject containing a bunch of node groups and edge groups based on some parameterS
516
+ *
517
+ * @param Graph - the graph that you want to split up
518
+ * @param propertyName - the property that you want to split them on
519
+ * @returns - an object that hasa set of node vertices and a set of edge lines based on the splitting factor
520
+ */
521
+ declare function AddInModularityBasedPointGroups(Graph: Graph, propertyName: string): Promise<{
522
+ nodeGroups: Map<number, THREE.Group>;
523
+ EdgeGroups: Map<number, THREE.Group>;
524
+ }>;
525
+ /**
526
+ *
527
+ * Draw simplified line edges (thin based) based on some number. This number is a fraction of the total number of edges (so if you specify 0.1 it would draw 10% of the edges)
528
+ *
529
+ * @param Graph - The graph that has to be drawn out
530
+ * @param amount - The fraction of edges to be drawn
531
+ * @param color - color of these edges - defaults to 0.1
532
+ * @returns - a group of simple lines based on all the edges supplied to it
533
+ */
534
+ declare function DrawSimplifiedEdges(Graph: Graph, amount: number, color?: number): THREE.Group;
535
+ /**
536
+ *
537
+ * Change all the vertex colors based on some array of properties
538
+ *
539
+ * @param vertices - ThreeJS Points object, be sure to pass in the points object and not the group that the points belong too
540
+ * @param indexArray - The array of the indices of all the nodes whose values that have to be changed
541
+ * @param color - The color that they have to be changed too
542
+ */
543
+ declare function ChangeTheVertexColours(vertices: THREE.Points, indexArray: number[], color: number): void;
544
+ /**
545
+ *
546
+ * This resets all the colors to white
547
+ *
548
+ * @param vertices - ThreeJS Points object, be sure to pass in the points object and not the group that the points belong too
549
+ */
550
+ declare function ResetVertexColors(vertices: THREE.Points): void;
551
+ export const ThreeWrapper: {
552
+ DrawTHREEGraphVertices: typeof DrawTHREEGraphVertices;
553
+ DrawTHREEGraphEdgesThick: typeof DrawTHREEGraphEdgesThick;
554
+ DrawTHREEGraphEdgesThin: typeof DrawTHREEGraphEdgesThin;
555
+ AddBoxBasedImaging: typeof AddBoxBasedImaging;
556
+ AddInModularityBasedPointGroups: typeof AddInModularityBasedPointGroups;
557
+ DrawThinEdgesFromEdgeMap: typeof DrawThinEdgesFromEdgeMap;
558
+ DrawThickEdgesFromEdgeMap: typeof DrawThickEdgesFromEdgeMap;
559
+ AddCylinderBasedImaging: typeof AddCylinderBasedImaging;
560
+ DrawSimplifiedEdges: typeof DrawSimplifiedEdges;
561
+ ChangeTheVertexColours: typeof ChangeTheVertexColours;
562
+ ResetVertexColors: typeof ResetVertexColors;
563
+ DrawTHREEBoxBasedVertices: typeof DrawTHREEBoxBasedVertices;
564
+ };
565
+ interface GraphDrawer3d {
566
+ canvas: HTMLCanvasElement;
567
+ width: number;
568
+ height: number;
569
+ geometryMap: Map<any, any>;
570
+ materialMap: Map<any, any>;
571
+ meshMap: Map<any, any>;
572
+ controls: OrbitControls;
573
+ renderer: THREE.WebGLRenderer;
574
+ camera: THREE.PerspectiveCamera;
575
+ scene: THREE.Scene;
576
+ graphs: Map<number, Graph>;
577
+ }
578
+ /**
579
+ * This is the main graph drawer class
580
+ */
581
+ declare class GraphDrawer3d {
582
+ /**
583
+ * To initialize the graph drawer there are a set of graph drawing settings that have to be set.
584
+ * Here are the details to do the same:
585
+ * canvas - the html canvas element that you would like to render
586
+ * height - the the height of the initialized canvas
587
+ * width - the width of the initialized canvas
588
+ * geometry map - a map that keeps track of all the geometry in the scene (Optional)
589
+ * material map - a mapt that keeps track of all the materials in the scene (Optional)
590
+ * controls - Controls that define how one can navigate this 3d space (Self initialized)
591
+ * renderer - Renderer element form the three JS library
592
+ * camera - A perspective camera from the threeJS library
593
+ * scene - The three JS scene that gets define automatically
594
+ *
595
+ * @param GraphDrawerOptions3d - These above options are construdeted into a single object and passed into the Options elem
596
+ */
597
+ constructor(GraphDrawerOptions3d: {
598
+ canvas: HTMLCanvasElement;
599
+ width: number;
600
+ height: number;
601
+ geometryMap: Map<any, any>;
602
+ materialMap: Map<any, any>;
603
+ meshMap: Map<any, any>;
604
+ controls: OrbitControls;
605
+ renderer: THREE.WebGLRenderer;
606
+ camera: THREE.PerspectiveCamera;
607
+ scene: THREE.Scene;
608
+ });
609
+ /**
610
+ * This essentially initializes the drawing element based on the settings
611
+ * Remember to do this since if if its not done the scene will not render
612
+ */
613
+ init(): Promise<void>;
614
+ /**
615
+ *
616
+ * This is the main way to add elements to the viewer window that gets initialized
617
+ *
618
+ * @param element A geomerty element + material element to add to the scene as a group line or point cloud
619
+ */
620
+ addVisElement(element: THREE.Group | THREE.Line | THREE.Points): void;
621
+ /**
622
+ * This is the render call that is called every frame to update the rendering of the canvas
623
+ * Remember to do this since this is a common are for bugs to occur
624
+ */
625
+ rendercall(): void;
626
+ }
627
+ export const GraphDrawer: {
628
+ GraphDrawer3d: typeof GraphDrawer3d;
629
+ };
630
+ /**
631
+ * The G ( n , p ) G(n,p) model, a graph is constructed by connecting labeled nodes randomly. Each edge is included in the graph with probability p p, independently from every other edge.
632
+ * https://en.wikipedia.org/wiki/Erd%C5%91s%E2%80%93R%C3%A9nyi_model
633
+ * @param n Number of nodes
634
+ * @param p Probability of two edges to eb connected
635
+ * @returns A Erdos Reyni graph
636
+ */
637
+ declare function GenerateErdosReyni_n_p(n: number, p: number): Promise<Graph>;
638
+ export const Models: {
639
+ GenerateErdosReyni_n_p: typeof GenerateErdosReyni_n_p;
640
+ };
641
+
642
+ //# sourceMappingURL=pgl.d.ts.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["Src/Src/HelperClasses/Point.ts","Src/Src/HelperClasses/Line.ts","Src/Src/Core/_Node.ts","Src/Src/Core/Edge.ts","Src/Src/Core/Graph.ts","Src/Src/GraphAlgorithms/GraphMethods.ts","Src/Src/SampleData/ZKC.ts","Src/Src/SampleData/ZKC_simulated.ts","Src/Src/HelperClasses/GraphConstructors.ts","Src/Src/HelperClasses/Utilities.ts","Src/Src/HelperClasses/GeometryHelpers.ts","Src/Src/Drawing/Drawing.ts","Src/Src/SampleData/DataLoader.ts","Src/Src/HelperClasses/ColorHelper.ts","Src/Src/Shaders/vertexShader.glsl.ts","Src/Src/Shaders/fragmentShader.glsl.ts","Src/Src/Drawing/ThreeJSDrawer.ts","Src/Src/Drawing/GraphDrawer.ts","Src/Src/Models/ErdosRenyiModel.ts","Src/Src/index.ts","Src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"export { default as Graph } from \"./Core/Graph\";\r\nexport { default as GraphMethods } from \"./GraphAlgorithms/GraphMethods\";\r\nexport { default as SampleData } from \"./SampleData/DataLoader\";\r\nexport { default as Constructors } from \"./HelperClasses/GraphConstructors\";\r\nexport { default as Drawing } from \"./Drawing/Drawing\";\r\nexport { default as Geometry } from \"./HelperClasses/GeometryHelpers\";\r\nexport { default as Utilities } from \"./HelperClasses/Utilities\";\r\nexport { default as ThreeWrapper } from \"./Drawing/ThreeJSDrawer\";\r\nexport { default as GraphDrawer } from \"./Drawing/GraphDrawer\";\r\nexport { default as Models } from \"./Models/ErdosRenyiModel\";\r\n"],"names":[],"version":3,"file":"pgl.d.ts.map"}