1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/akwkevin-aistudio.-wpf.-diagram

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
LineBase.cs 1.4 КБ
Копировать Редактировать Исходные данные Просмотреть построчно История
艾竹 Отправлено 2 лет назад 6a4c311
namespace AIStudio.Wpf.DiagramDesigner.Geometrys
{
public struct LineBase
{
public LineBase(PointBase start, PointBase end)
{
Start = start;
End = end;
}
public PointBase Start { get; }
public PointBase End { get; }
public PointBase? GetIntersection(LineBase line)
{
var pt1Dir = new PointBase(End.X - Start.X, End.Y - Start.Y);
var pt2Dir = new PointBase(line.End.X - line.Start.X, line.End.Y - line.Start.Y);
var det = (pt1Dir.X * pt2Dir.Y) - (pt1Dir.Y * pt2Dir.X);
var deltaPt = new PointBase(line.Start.X - Start.X, line.Start.Y - Start.Y);
var alpha = (deltaPt.X * pt2Dir.Y) - (deltaPt.Y * pt2Dir.X);
var beta = (deltaPt.X * pt1Dir.Y) - (deltaPt.Y * pt1Dir.X);
if (det == 0 || alpha * det < 0 || beta * det < 0)
return null;
if (det > 0)
{
if (alpha > det || beta > det)
return null;
}
else
{
if (alpha < det || beta < det)
return null;
}
return new PointBase(Start.X + (alpha * pt1Dir.X / det), Start.Y + (alpha * pt1Dir.Y / det));
}
public override string ToString() => $"Line from {Start} to {End}";
}
}

Комментарий ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/akwkevin-aistudio.-wpf.-diagram.git
git@gitlife.ru:oschina-mirror/akwkevin-aistudio.-wpf.-diagram.git
oschina-mirror
akwkevin-aistudio.-wpf.-diagram
akwkevin-aistudio.-wpf.-diagram
1.0.7Demo