直线与圆位置关系的算法
- 提问者网友:记得曾经
- 2021-02-05 00:14
写出判断直线Ax+By+C=0与圆(x-a)^2+(y-b)^2=r^2的位置关系的算法.
谢谢!
- 五星知识达人网友:患得患失的劫
- 2021-02-05 01:07
若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(); }