Road-Map
Example
import { NodeMapTemplateTransformer } from "./NodeMapTemplateTransformer";
import { PathFinding } from "./helper/PathFinding";
import { NodePathModel } from "./helper/model/NodePathModel";
const nodeMapTemplateTransformer = new NodeMapTemplateTransformer();
const template: INodeMapTemplate = {
nodes: [
{
id: 'node1',
location: {
x: 100,
y: 100,
}
},
{
id: 'node2',
location: {
x: 600,
y: 100,
}
},
{
id: 'node3',
location: {
x: 1000,
y: 100,
}
},
{
id: 'node4',
location: {
x: 1200,
y: 100,
}
},
],
paths: [
{
id: 'node1<->node2',
bidirectional: true,
startNodeId: 'node1',
endNodeId: 'node2',
distance: 3,
},
{
id: 'node3<->node2',
bidirectional: false,
startNodeId: 'node3',
endNodeId: 'node2',
distance: 4,
},
{
id: 'node2<->node3',
bidirectional: false,
startNodeId: 'node2',
endNodeId: 'node3',
distance: 3,
},
{
id: 'node3<->node4',
bidirectional: true,
startNodeId: 'node3',
endNodeId: 'node4',
distance: 3,
},
]
}
const { nodeList, pathList } = nodeMapTemplateTransformer.process(template);
const reducer = (accumulator: number, currentValue: number) => accumulator + currentValue;
const calcResultCost = (data: NodePathModel[]) => {
return data.map(v => ((!v.path) ? 0 : v.path.data.distance)).reduce(reducer);
}
const start = nodeList.find('node1');
const end = nodeList.find('node4');
const result = PathFinding.getShortestPath(start, end);
console.log(calcResultCost(result as any));
const resultBack = PathFinding.getShortestPath(end, start);
console.log(calcResultCost(resultBack as any));