社区
图形处理/算法
帖子详情
征集多边形和圆的相关算法
numen27
2003-05-19 05:35:20
计算任意多边形之间相交以后重合部分的面积还有圆和任意多边形相交以后重合部分的面积有什么好算法?欢迎大家提供相关信息,谢谢。
...全文
36
3
打赏
收藏
征集多边形和圆的相关算法
计算任意多边形之间相交以后重合部分的面积还有圆和任意多边形相交以后重合部分的面积有什么好算法?欢迎大家提供相关信息,谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shaolunyuan
2003-05-20
打赏
举报
回复
两圆公共面积:
// 必须保证相交
double c2area(POINT p1,double r1,POINT p2,double r2)
{
POINT rp1,rp2;
c2point(p1,r1,p2,r2,rp1,rp2);
if(r1>r2) //保证r2>r1
{
swap(p1,p2);
swap(r1,r2);
}
double a,b,rr;
a=p1.x-p2.x;
b=p1.y-p2.y;
rr=sqrt(a*a+b*b);
double dx1,dy1,dx2,dy2;
double sita1,sita2;
dx1=rp1.x-p1.x;
dy1=rp1.y-p1.y;
dx2=rp2.x-p1.x;
dy2=rp2.y-p1.y;
sita1=acos((dx1*dx2+dy1*dy2)/r1/r1);
dx1=rp1.x-p2.x;
dy1=rp1.y-p2.y;
dx2=rp2.x-p2.x;
dy2=rp2.y-p2.y;
sita2=acos((dx1*dx2+dy1*dy2)/r2/r2);
double s=0;
if(rr<r2) //相交弧为优弧
s=r1*r1*(PI-sita1/2+sin(sita1)/2)+r2*r2*(sita2-sin(sita2))/2;
else //相交弧为劣弧
s=(r1*r1*(sita1-sin(sita1))+r2*r2*(sita2-sin(sita2)))/2;
return s;
}
圆和直线关系:
//0----相离 1----相切 2----相交
int clpoint(POINT p,double r,double a,double b,double c,POINT &rp1,POINT &rp2)
{
int res=0;
c=c+a*p.x+b*p.y;
double tmp;
if(a==0&&b!=0)
{
tmp=-c/b;
if(r*r<tmp*tmp)
res=0;
else if(r*r==tmp*tmp)
{
res=1;
rp1.y=tmp;
rp1.x=0;
}
else
{
res=2;
rp1.y=rp2.y=tmp;
rp1.x=sqrt(r*r-tmp*tmp);
rp2.x=-rp1.x;
}
}
else if(a!=0&&b==0)
{
tmp=-c/a;
if(r*r<tmp*tmp)
res=0;
else if(r*r==tmp*tmp)
{
res=1;
rp1.x=tmp;
rp1.y=0;
}
else
{
res=2;
rp1.x=rp2.x=tmp;
rp1.y=sqrt(r*r-tmp*tmp);
rp2.y=-rp1.y;
}
}
else if(a!=0&&b!=0)
{
double delta;
delta=b*b*c*c-(a*a+b*b)*(c*c-a*a*r*r);
if(delta<0)
res=0;
else if(delta==0)
{
res=1;
rp1.y=-b*c/(a*a+b*b);
rp1.x=(-c-b*rp1.y)/a;
}
else
{
res=2;
rp1.y=(-b*c+sqrt(delta))/(a*a+b*b);
rp2.y=(-b*c-sqrt(delta))/(a*a+b*b);
rp1.x=(-c-b*rp1.y)/a;
rp2.x=(-c-b*rp2.y)/a;
}
}
rp1.x+=p.x;
rp1.y+=p.y;
rp2.x+=p.x;
rp2.y+=p.y;
return res;
}
shaolunyuan
2003-05-20
打赏
举报
回复
/* 判断圆是否在多边形内.ptolineseg()函数的应用2 */
bool CircleInsidePolygon(int vcount,POINT center,double radius,POINT polygon[])
{
POINT q;
double d;
q.x=0;
q.y=0;
d=ptopointset(vcount,polygon,center,q);
if(d<radius||fabs(d-radius)<EP)
return true;
else
return false;
}
Skt32
2003-05-19
打赏
举报
回复
这不是不定积分的问题吗
封闭区域多边面积计算
算法
设计
往期回顾>>>>>> 傅里叶变换的积分实现 过冷水带您走进matlab数据转换新世界 十万个matlab编程问题
征集
,欢迎来问 科研绘图之用matlab实现离散
圆
状态图绘制 大神带你玩转matlab图像处理(6)——Hough变换 MATLAB...
利用OpenCV光流
算法
实现视频特征点跟踪
光流
算法
及opencv实现,并给出了实例源码
MATLAB
算法
实战应用案例精讲-【自动驾驶】激光雷达标定
三维环境感知方面,3D激光雷达能够在短时间内向周围环境发射大量的激光束,探测距离是介于200-300m远距离和最大90°*30°的大视野探测能力;角分辨率最高可达0.05°*0.05°,保证了它在远距离仍然能准确探测、追踪多...
人工智能学习之路
拥有良好的数学基础,有利于大家在后续课程的学习中更好的理解机器学习和深度学习的
相关
算法
内容。同时对于AI研究尤为重要,例如人工智能中的智能很大一部分依托“概率论”实现的。一、数据分析1)常数e2)导数 3)...
人工智能知识体系
拥有良好的数学基础,有利于大家在后续课程的学习中更好的理解机器学习和深度学习的
相关
算法
内容。同时对于AI研究尤为重要,例如人工智能中的智能很大一部分依托“概率论”实现的。 一、数据分析 1)...
图形处理/算法
19,468
社区成员
50,698
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章