AutoPatientInfoRecorder/src/AntdUI/Lib/SVG/Text/PathStatistics.cs
(开头部分) 11KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
// THIS FILE IS PART OF SVG PROJECT
// THE SVG PROJECT IS AN OPENSOURCE LIBRARY LICENSED UNDER THE MS-PL License.
// COPYRIGHT (C) svg-net. ALL RIGHTS RESERVED.
// GITHUB: https://github.com/svg-net/SVG
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
namespace AntdUI.Svg
{
public class PathStatistics
{
private const double GqBreak_TwoPoint = 0.57735026918962573;
private const double GqBreak_ThreePoint = 0.7745966692414834;
private const double GqBreak_FourPoint_01 = 0.33998104358485631;
private const double GqBreak_FourPoint_02 = 0.86113631159405257;
private const double GqWeight_FourPoint_01 = 0.65214515486254621;
private const double GqWeight_FourPoint_02 = 0.34785484513745385;
private PathData _data;
private double _totalLength;
private List<ISegment> _segments = new List<ISegment>();
public double TotalLength { get { return _totalLength; } }
public PathStatistics(PathData data)
{
_data = data;
int i = 1;
_totalLength = 0;
ISegment newSegment;
while (i < _data.Points.Length)
{
switch (_data.Types[i])
{
case 1:
newSegment = new LineSegment(_data.Points[i - 1], _data.Points[i]);
i++;
break;
case 3:
newSegment = new CubicBezierSegment(_data.Points[i - 1], _data.Points[i], _data.Points[i + 1], _data.Points[i + 2]);
i += 3;
break;
default:
throw new NotSupportedException();
}
newSegment.StartOffset = _totalLength;
_segments.Add(newSegment);
_totalLength += newSegment.Length;
}
}
public void LocationAngleAtOffset(double offset, out PointF point, out float angle)
{
_segments[BinarySearchForSegment(offset, 0, _segments.Count - 1)].LocationAngleAtOffset(offset, out point, out angle);
}
public bool OffsetOnPath(double offset)
后面还有 206 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。