Files
2023-05-03 09:59:46 +08:00

34 lines
1.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using AIStudio.Wpf.DiagramDesigner.Geometrys;
// Implementation taken from the JS version: https://gist.github.com/menendezpoo/4a8894c152383b9d7a870c24a04447e4
// Todo: Make it more c#, Benchmark A* vs Dijkstra, Add more options
namespace AIStudio.Wpf.DiagramDesigner
{
public static partial class Routers
{
public static PointBase[] FishBone(IDiagramViewModel _, ConnectionViewModel link)
{
if (link.IsPortless)
throw new Exception("Orthogonal router doesn't work with portless links yet");
if (link.IsFullConnection == false)
return Normal(_, link);
double x2 = link.SourceConnectorInfoFully.MiddlePosition.X < link.SinkConnectorInfoFully.MiddlePosition.X ?
link.SinkConnectorInfoFully.MiddlePosition.X - Math.Abs(link.SourceConnectorInfoFully.MiddlePosition.Y - link.SinkConnectorInfoFully.MiddlePosition.Y)
: link.SinkConnectorInfoFully.MiddlePosition.X + Math.Abs(link.SourceConnectorInfoFully.MiddlePosition.Y - link.SinkConnectorInfoFully.MiddlePosition.Y);
double y2 = link.SourceConnectorInfoFully.MiddlePosition.Y;
return new PointBase[] { new PointBase(x2, y2) };
}
}
}