给定一个点,如何来判断这个点位于一条直线上,这条直线宽度较大的时候,是用矩形画的,并且做了坐标变化,用来画出有斜率的直线.
解决方案 »
- 想让对话框跟着加载图片的大小变化而变化该怎么办
- 请问下各位大大怎么把阻塞的线程队列变成非阻塞的?
- 这段代码中:PAINTSTRUCT 变量的作用是什么呢?
- 讨论com口的传输速度问题
- 求救:directshow samplegrabber 问题
- 高难度的VC调试问题!
- 求dexplore最新版本
- vs2005的msvcr80d.dll怎么突然找不到了?
- 如何在不启动Matlab的情况下,在vc中调用matlab实现绘图功能?
- 我用m_wndSplitter;把窗体分成了三行,请问我如何让中间的那个VIEW隐藏或者消失,
- 关于保存用户输入的数据
- 急!!!求一个直线拟合的算法,具体要求请进,谢谢!
pt_Rgn[0].y = y1;
pt_Rgn[1].x = x2;
pt_Rgn[1].y = y2;
pt_Rgn[2].x = x3;
pt_Rgn[2].y = y3;
pt_Rgn[3].x = x4;
pt_Rgn[3].y = y4;
pt_Rgn[4].x = pt_Rgn[0].x;
pt_Rgn[4].y = pt_Rgn[0].y;
HRGN hRgn = CreatePolygonRgn( pt_Rgn, 5, WINDING );
if( PtInRegion( hRgn, pt.x, pt.y ) )
{
}
DeleteObject( hRgn );
设宽直线为两条平行直线l1:y=kx+b l2:y=kx+c
其中:k,b,c是常数,c>=b;
判断一点x1,y1是否在宽直线上,就是在两条平行线之间。即:kx1+b<=y1 && kx1+c>=y1
如果直接平行于Y轴,就将x和y换一下就行了
哎 数学都忘光了
pt_Rgn[0].x = x1;
pt_Rgn[0].y = y1;
pt_Rgn[1].x = x2;
pt_Rgn[1].y = y2;
pt_Rgn[2].x = x3;
pt_Rgn[2].y = y3;
pt_Rgn[3].x = x4;
pt_Rgn[3].y = y4;
pt_Rgn[4].x = pt_Rgn[0].x;
pt_Rgn[4].y = pt_Rgn[0].y;
HRGN hRgn = CreatePolygonRgn( pt_Rgn, 5, WINDING );
if( PtInRegion( hRgn, pt.x, pt.y ) )
{
//点在直线上
}
DeleteObject( hRgn );
线宽度较大,那么直线有四个点(x1,y1),(x2,y2),(x3,y3),(x4,y4)
点为(pt.x,pt.y)