61 lines
1.5 KiB
C#
61 lines
1.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace StgSharp_Geometry
|
|
{
|
|
internal class PointOnLine : Point
|
|
{
|
|
private Point _beginPoint;
|
|
|
|
public Point BeginPoint
|
|
{
|
|
get { return _beginPoint; }
|
|
set { _beginPoint = value; }
|
|
}
|
|
|
|
private Point _endPoint;
|
|
|
|
public Point EndPoint
|
|
{
|
|
get { return _endPoint; }
|
|
set { _endPoint = value; }
|
|
}
|
|
|
|
private float _angle;
|
|
|
|
public float Angle
|
|
{
|
|
get { return _angle; }
|
|
set { _angle = value; }
|
|
}
|
|
|
|
|
|
|
|
private float rate;
|
|
|
|
public PointOnLine(Point beginPoint,Point endPoint,float rate,int number)
|
|
{
|
|
_beginPoint = beginPoint;
|
|
_endPoint = endPoint;
|
|
|
|
_angle = (float)(Math.Atan2(endPoint.Y-beginPoint.Y,endPoint.X-beginPoint.Y));
|
|
|
|
rate = rate * number;
|
|
this.Y = beginPoint.Y + rate * (endPoint.Y - beginPoint.Y);
|
|
this.X = beginPoint.X + rate * (endPoint.X - beginPoint.X);
|
|
}
|
|
|
|
public override void OnRender()
|
|
{
|
|
_angle = (float)(Math.Atan2(_endPoint.Y - _beginPoint.Y, _endPoint.X - _beginPoint.Y));
|
|
|
|
this.Y = _beginPoint.Y + rate * (_endPoint.Y - _beginPoint.Y);
|
|
this.X = _beginPoint.X + rate * (_endPoint.X - _beginPoint.X);
|
|
}
|
|
}
|
|
}
|