mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-05-04 23:10:25 +08:00
xx
This commit is contained in:
15
AIStudio.Wpf.DiagramDesigner/Routers/RouterFishBone.cs
Normal file
15
AIStudio.Wpf.DiagramDesigner/Routers/RouterFishBone.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using AIStudio.Wpf.DiagramDesigner.Geometrys;
|
||||
|
||||
namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public class RouterFishBone : IRouter
|
||||
{
|
||||
public PointBase[] Get(IDiagramViewModel _, ConnectionViewModel link)
|
||||
{
|
||||
return Routers.FishBone(_, link);
|
||||
}
|
||||
}
|
||||
}
|
||||
33
AIStudio.Wpf.DiagramDesigner/Routers/Routers.FishBone.cs
Normal file
33
AIStudio.Wpf.DiagramDesigner/Routers/Routers.FishBone.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
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.SourceConnectorInfo.MiddlePosition.X < link.SinkConnectorInfoFully.MiddlePosition.X ?
|
||||
link.SinkConnectorInfoFully.MiddlePosition.X - Math.Abs(link.SourceConnectorInfo.MiddlePosition.Y - link.SinkConnectorInfoFully.MiddlePosition.Y)
|
||||
: link.SinkConnectorInfoFully.MiddlePosition.X + Math.Abs(link.SourceConnectorInfo.MiddlePosition.Y - link.SinkConnectorInfoFully.MiddlePosition.Y);
|
||||
double y2 = link.SourceConnectorInfo.MiddlePosition.Y;
|
||||
|
||||
return new PointBase[] { new PointBase(x2, y2) };
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -38,6 +38,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
shapeMargin = 0;
|
||||
inflatedA = shapeA;
|
||||
|
||||
inflatedB = shapeB;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user