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#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|