计算几何。。。?

Posted DukeLv

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算几何。。。?相关的知识,希望对你有一定的参考价值。

没过,不知道哪错了,有人帮我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;
}

 

以上是关于计算几何。。。?的主要内容,如果未能解决你的问题,请参考以下文章

如果几何着色器处于活动状态,如何将信息从顶点着色器传递到片段着色器?

计算几何模板中的代码

仅仅三行JAVA代码计算多边形的几何中心点

仅仅三行JAVA代码计算多边形的几何中心点

计算几何——凸包问题

计算几何中的精度问题(转)