//
// main.cpp
// 计算几何模版收集
//
// Created by 刘鑫伟 on 14/11/25.
// Copyright (c) 2014年 刘鑫伟. All rights reserved.
//
/*
struct point
{
double x,y;
}
struct v
{
point start,end;
}
//点积
double dotProduct(v* v1,v* v2)
{
v vt1,vt2;
double result = 0;
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;
return result;
}
//叉积
double crossProduct(v* v1,v* v2)
{
v vt1,vt2;
double result = 0;
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;
return result;
}
//判断点是否在线段上
bool onSegment(point Pi,point Pj,point Q)
{
if((Q.x-Pi.x)*(Pj.y-Pi.y)==(Pj.x-Pi.x)*(Q.y-Pi.y)&&min(Pi.x,Pj.x)<=Q.x&&Q.x<=max(Pi.x,Pj.x)&&min(Pi.y,Pj.y)<=Q.y&&Q.y<=max(Pi.y,Pj.y))
{
return ture;
}
else return false;
}
//判断点p是否在三角形abc内
Spab+Spac+Spbc=Sabc
Spab=1/2*crossProduct(ap,bp);
*/
计算几何模版整理
最新推荐文章于 2020-09-28 16:29:16 发布