• 计算几何。。。?


    没过,不知道哪错了,有人帮我debug吗?

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    using namespace std;
    typedef double db;
    struct point
    {
    	db x,y;
    	point(){}
    	point(db _x,db _y)
    	{
    		x = _x;
    		y = _y;
    	} 
    	friend point operator + (const point &a,const point &b)//重载运算符
    	{
    		return point(a.x + b.x,a.y + b.y);
    	}
    	friend point operator - (const point &a,const point &b)
    	{
    		return point(a.x - b.x,a.y + b.y);
    	}
    	friend point operator * (const point &a,const db d) 
    	{
    		return point(a.x * d,a.y *d); 
    	}
    	friend db operator * (const point &a,const point &b)//叉乘 
    	{
    		return a.x * b.y - a.y * b.x;
    	}
    	db norm()
    	{
    		return sqrt(x * x + y * y);
    	}
    	friend db dot(const point &a,const point &b)
    	{
    		return a.x * b.x + a.y * b.y;
    	}//点乘
    }Point[5];
    struct seg
    {
    	point a,b;
    	db d;
    	seg(){}
    	seg(point _x,point _y)
    	{
    		a = _x;
    		b = _y;
    		d = (b.y - a.y) / (b.x - a.x);
    	}
    	friend point cross(const seg &s,const seg &t)
    	{
    		db s1 = (s.a - t.a) * (t.b - t.a);
    		db s2 = (s.b - t.b) * (t.a - t.b);
    		return s.a + (s.b - s.a) * (s1/(s1 + s2));
    	}
    }Seg[3];
    int main()
    {
    	db x1,y1,x2,y2;
    	cin>>x1>>y1>>x2>>y2;
    	Seg[1] = seg(point(x1,y1),point(x2,y2));
    	cin>>x1>>y1>>x2>>y2;
    	Seg[2] = seg(point(x1,y1),point(x2,y2));
    	printf("%lf",cross(Seg[1],Seg[2]));
    	return 0;
    }
    
  • 相关阅读:
    【ExtJS】关于自定义组件(一)
    【ExtJS】关于自定义组件
    特殊的css样式
    样式表笔记
    html 表单笔记
    图片热点和网页内嵌随笔
    快速网页
    HTML基础和表格
    HTML基础
    递归算法 笔记
  • 原文地址:https://www.cnblogs.com/DukeLv/p/9094653.html
Copyright © 2020-2023  润新知