[基本算法]Java——编写一个线段类,实现基本数学算法
主要属性有:e1,e2端点,类型为Point;
编写构造方法,如(Point p1, Point p2)
编写成员方法。如:
检查线段是否位于第一象限
求线段的长度
判断两天线段是否相交
求一点到该线段的距离
主要属性有:e1,e2端点,类型为Point;
编写构造方法,如(Point p1, Point p2)
编写成员方法。如:
检查线段是否位于第一象限
求线段的长度
判断两天线段是否相交
求一点到该线段的距离
import
java.awt.Point;
import java.lang.Math;
public class MyLine
... {
private Point e1;
private Point e2;
MyLine(Point p1,Point p2)
...{
e1=p1;
e2=p2;
}
void is1quadrant()
...{
if(e1.x>0&&e1.y>0&&e2.x>0&&e2.y>0)
System.out.println("线段位于第一象限");
else
System.out.println("线段不在第一象限");
}
public float length(Point p1,Point p2)
...{
return (float)java.lang.Math.sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
}
/**//*public bool IsIntersect(float x0,float y0,float x1,float y1,float x2,float y2,float x3,float y3,float &InterX,float &InterY)
{
}*/
public void distance(Point a,Point b,Point c)
...{
float f;
float d;
Point ab=new Point();
Point ac=new Point();
Point e=new Point();
ab.x=b.x-a.x;
ab.y=b.y-a.y;
ac.x=c.x-a.x;
ac.y=c.y-a.y;
f=ab.x*ac.x+ab.y*ac.y;
d=ab.x*ab.x+ab.y+ab.y;
if(f<0)
System.out.println(length(a,c));
if(f>d)
System.out.println(length(a,b));
f=f/d;
e.x=a.x+(int)f*ab.x; // c在ab线段上的投影点
e.y=a.y+(int)f*ab.y;
System.out.println(length(a,e));
}
}
class l
... {
public static void main(String args[])
...{
Point p1;
Point p2;
Point m;
p1=new Point(1,1);
p2=new Point(2,1);
m=new Point(4,1);
MyLine line=new MyLine(p1,p2);
line.is1quadrant();
System.out.println("两点间线段的长度:"+line.length(p1,p2));
System.out.println("点x到线段的长度:");
line.distance(p1,p2,m);
}
}
import java.lang.Math;
public class MyLine
... {
private Point e1;
private Point e2;
MyLine(Point p1,Point p2)
...{
e1=p1;
e2=p2;
}
void is1quadrant()
...{
if(e1.x>0&&e1.y>0&&e2.x>0&&e2.y>0)
System.out.println("线段位于第一象限");
else
System.out.println("线段不在第一象限");
}
public float length(Point p1,Point p2)
...{
return (float)java.lang.Math.sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
}
/**//*public bool IsIntersect(float x0,float y0,float x1,float y1,float x2,float y2,float x3,float y3,float &InterX,float &InterY)
{
}*/
public void distance(Point a,Point b,Point c)
...{
float f;
float d;
Point ab=new Point();
Point ac=new Point();
Point e=new Point();
ab.x=b.x-a.x;
ab.y=b.y-a.y;
ac.x=c.x-a.x;
ac.y=c.y-a.y;
f=ab.x*ac.x+ab.y*ac.y;
d=ab.x*ab.x+ab.y+ab.y;
if(f<0)
System.out.println(length(a,c));
if(f>d)
System.out.println(length(a,b));
f=f/d;
e.x=a.x+(int)f*ab.x; // c在ab线段上的投影点
e.y=a.y+(int)f*ab.y;
System.out.println(length(a,e));
}
}
class l
... {
public static void main(String args[])
...{
Point p1;
Point p2;
Point m;
p1=new Point(1,1);
p2=new Point(2,1);
m=new Point(4,1);
MyLine line=new MyLine(p1,p2);
line.is1quadrant();
System.out.println("两点间线段的长度:"+line.length(p1,p2));
System.out.println("点x到线段的长度:");
line.distance(p1,p2,m);
}
}