永发信息网

直线与圆位置关系的算法

答案:2  悬赏:50  手机版
解决时间 2021-02-05 12:41
帮忙:
写出判断直线Ax+By+C=0与圆(x-a)^2+(y-b)^2=r^2的位置关系的算法.
谢谢!
最佳答案
圆心是(a,b)到直线的距离是d=(/Aa+Bb+C/)/根号下(A^2+B^2)……(/Aa+Bb+C/)是绝对值,后面一个/是除号
若d=r,则直线与圆相切
若d>r,则直线与圆相离
若d
全部回答
  • 1楼网友:舍身薄凉客
  • 2021-02-05 01:21

请看这个。。在mfc建立exe即可

void mbline(); void antdisline();

double m_x0,m_y0,m_x1,m_y1;

#include"inputdlg.h" #define round(a) int(a+0.5)

void ctestview::mbline()//走样函数直线 {  cclientdc dc(this);  colorref rgb=rgb(0,0,0);  x=m_x0;y=m_y0;k=(m_y1-m_y0)/(m_x1-m_x0);  d=0.5-k;  for(x=x0;x<=x1;x++)  {  if(d<0)   {    y++;    d+=1-k;   }  else   d-+k;  } dc.testout(10,10,"走样直线"); }

void ctestview::antidisline()//距离加权反走样直线 {  cclientdc dc(this);  double x,y,d,k;  k=(y1-y0)/(x1-x0);  d=0;x=x0+10;y=y0+10;  colorref rgb1=rgb(0,0,0),rgb2=rgb(0,0,0);  for(x=x0;x<=(x1+10);x++)  {   rgb1=rgb(d*255,d*255,d*255);   rgb2=rgb((1-d)*255,(1-d)*255,(1-d)*255);   dc.setpixel(round(x),round(y+1),rgb2);   d+=k;   if(d>1.0)   {    y++;    d--;   }  }  dc.testout(10,100,"反走样直线");  }

void ctestview::onmenuantiliasing() {  inputdlg dlg;  if(dlg.domodal()==idok)     {    x0=dig.m_x0;    y0=dig.m_y0;    x1=dig.m_x1;    y1=dig.m_y1;   }  afxgetmainwnd()->setwindowtest("反走样:直线距离权反走样算法");  redrawwindow();  mbline();  antidisline(); }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯