You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Txgy.EWS.Client.FocalMechanism.Model
{
public class Line : Graph
{
public int angle;
public double dis;
public double p1x;
public double p1y;
public double p2x;
public double p2y;
public Line(int a, double d)
{
angle = a;
dis = d;
}
public void compute(double xmax, double xmin, double ymax, double ymin)
{
if (angle == 90)
{
p1x = p2x = 0 - dis;
p1y = ymin;
p2y = ymax;
return;
}
double tan = Math.Tan(angle * Math.PI / 180);
double cos = Math.Cos(angle * Math.PI / 180);
double sin = Math.Sin(angle * Math.PI / 180);
p2x = xmax;
p2y = p2x * tan + dis / cos;
p1x = xmin;
p1y = p1x * tan + dis / cos;
//make sure point 1 is under point 2
if (p1y > p2y)
{
double tem = p1x;
p1x = p2x;
p2x = tem;
tem = p1y;
p1y = p2y;
p2y = tem;
}
if (p2y > ymax)
{
p2y = ymax;
p2x = p2y / tan - dis / sin;
}
if (p1y < ymin)
{
p1y = ymin;
p1x = p1y / tan - dis / sin;
}
}
}
}