![]() |
#2
hyp_eagle2011-05-20 22:45
|

代码如下:

#include <iostream>
#include <cmath>
using namespace std;
class point{
public:
point(int xx,int yy)
{
x=xx;y=yy;
}
point(){};
~point(){}
point(point &p)
{
x=p.x;y=p.y;
}
int getx(){return x;}
int gety(){return y;}
private:
int x,y;
};
class line{
public:
line(point pt1,point pt2):p1(pt1),p2(pt2)
{
double k=(p2.gety()-p1.gety())/(p2.getx()-p1.getx()); //求出斜率K
double b=(p1.gety()-k*p1.getx()); //求出b
}
line(){}
line(line &l):p1(l.p1),p2(l.p2)
{
k=l.k;b=l.b;
}
friend point jd(line &l1,line &l2)
{
point p((l1.b-l2.b)/(l2.k-l1.k),l1.k*(l1.b-l2.b)/(l2.k-l1.k));
return p;
}
private:
point p1,p2;
double k,b;
};
void main()
{
point p1(0,0),p2(2,2),p3(0,2),p4(2,0); //初始化4点
line l1(p1,p2),l2(p3,p4); //两条不相交的直线
point px(jd(l1,l2));
cout<<px.getx()<<"\t"<<px.gety()<<endl;
}
#include <cmath>
using namespace std;
class point{
public:
point(int xx,int yy)
{
x=xx;y=yy;
}
point(){};
~point(){}
point(point &p)
{
x=p.x;y=p.y;
}
int getx(){return x;}
int gety(){return y;}
private:
int x,y;
};
class line{
public:
line(point pt1,point pt2):p1(pt1),p2(pt2)
{
double k=(p2.gety()-p1.gety())/(p2.getx()-p1.getx()); //求出斜率K
double b=(p1.gety()-k*p1.getx()); //求出b
}
line(){}
line(line &l):p1(l.p1),p2(l.p2)
{
k=l.k;b=l.b;
}
friend point jd(line &l1,line &l2)
{
point p((l1.b-l2.b)/(l2.k-l1.k),l1.k*(l1.b-l2.b)/(l2.k-l1.k));
return p;
}
private:
point p1,p2;
double k,b;
};
void main()
{
point p1(0,0),p2(2,2),p3(0,2),p4(2,0); //初始化4点
line l1(p1,p2),l2(p3,p4); //两条不相交的直线
point px(jd(l1,l2));
cout<<px.getx()<<"\t"<<px.gety()<<endl;
}
[ 本帖最后由 cnsongzi 于 2011-5-20 20:36 编辑 ]