计算几何

这里说一点计算几何的基本模板

点的表示

struct point
{
	double x;
	double y;
};

向量的表示

struct v
{
	point start;
	point end;
};

向量的加减法

P+Q = (x1+x2,y1+y2);

P+Q = (x1-x2,y1-y2);

向量的点乘

P*Q = (x1*x2+y1*y2);

double dotProduct(v* v1,v* v2)
{
	v vt1,vt2;
	double result;
	
	vt1.start.x = 0 , vt1.start.y = 0;
	vt1.end.x = v1->end.x - v1->start.x;
	vt1.end.y = v1->end.y - v1->start.y;

	vt2.start.x = 0 , vt2.start.y = 0;
	vt2.end.x = v2->end.x - v2->start.x;
	vt2.end.y = v2->end.y - v2->start.y;

	result = vt1.end.x * vt2.end.x + vt1.end.y * vt2.end.y;

	returb result;
}

/*dotProduct*/
double dmult(point p1,point p2,point p0)
{
    return (p1.x-p0.x)*(p2.x-p0.x)+(p1.y-p0.y)*(p2.y-p0.y);
}
double dmult(double x1,double y1,double x2,double y2,double x0,double y0)
{
    return (x1-x0)*(x2-x0)+(y1-y0)*(y2-y0);
}





向量的叉乘

代码

double crossProduct(v* v1,v* v2)
{
	v vt1,vt2;
	double result;
	
	vt1.start.x = 0 , vt1.start.y = 0;
	vt1.end.x = v1->end.x - v1->start.x;
	vt1.end.y = v1->end.y - v1->start.y;

	vt2.start.x = 0 , vt2.start.y = 0;
	vt2.end.x = v2->end.x - v2->start.x;
	vt2.end.y = v2->end.y - v2->start.y;

	result = vt1.end.x * vt2.end.y - vt1.end.y * vt2.end.x;

	returb result;
}



/*CorssProduct*/
double xmult(point p1,point p2,point p0)
{
    return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
}
double xmult(double x1,double y1,double x2,double y2,double x0,double y0)
{
    return (x1-x0)*(y2-y0)-(x2-x0)*(y1-y0);
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值