这样的任务能够通过简单的方法实现吗?该怎么解决
发布时间:2010-05-24 22:04:04 文章来源:www.iduyao.cn 采编人员:星星草
这样的任务能够通过简单的方法实现吗?
如何快捷的要确定一个点的坐标是否在某个图形内,图形是有矩形和三角形组成的(如图)。
我现在的做法是将图形分成矩形和三角形一个一个的比较,矩形好比较,三角形比较麻烦。
图形大小,形状有时会变化,但最复杂的也就是这个了。
大家看看有没有简单的算法
------解决方案--------------------
Dimension LineArr(8,4)
LineArr(1,1)=0
LineArr(1,2)=0
LineArr(1,3)=6
LineArr(1,4)=0
LineArr(2,1)=6
LineArr(2,2)=0
LineArr(2,3)=6
LineArr(2,4)=8
LineArr(3,1)=6
LineArr(3,2)=8
LineArr(3,3)=0
LineArr(3,4)=10
LineArr(4,1)=0
LineArr(4,2)=10
LineArr(4,3)=0
LineArr(4,4)=6
LineArr(5,1)=0
LineArr(5,2)=6
LineArr(5,3)=4
LineArr(5,4)=6
LineArr(6,1)=4
LineArr(6,2)=6
LineArr(6,3)=4
LineArr(6,4)=2
LineArr(7,1)=4
LineArr(7,2)=2
LineArr(7,3)=0
LineArr(7,4)=2
LineArr(8,1)=0
LineArr(8,2)=2
LineArr(8,3)=0
LineArr(8,4)=0
If ISINNER(5,7,99999,99999,@LineArr)
=Messagebox('点在多边体内',64,'Message')
Else
=Messagebox('点在多边体外',64,'Message')
ENDIF
Function ISINNER()
Parameters X1,Y1,X2,Y2,LineArr
*********************X1,Y1为要判断的点,X2,Y2为多边体外参考点********************
Local nInterNum,nLineNum
nLineNum = Alen(LineArr) / 4
nInterNum = 0
For i =1 To nLineNum
If ISINSACTION(X1,Y1,X2,Y2,Linearr(i,1),Linearr(i,2),Linearr(i,3),Linearr(i,4))
nInterNum=nInterNum+1
Endif
Endfor
If nInterNum % 2 = 1
Return .T.
Else
Return .F.
Endif
Endfunc
Function ISINSACTION()
Lparameters X1,Y1,X2,Y2,X3,Y3,X4,Y4
Local V1,V2,V3,V4
V1=(X2-X1)*(Y4-Y1)-(Y2-Y1)*(X4-X1)
V2=(X2-X1)*(Y3-Y1)-(Y2-Y1)*(X3-X1)
If V1*V2>0
Return .F.
Endif
V3=(X4-X3)*(Y2-Y3)-(Y4-Y3)*(X2-X3)
V4=(X4-X3)*(Y1-Y3)-(Y4-Y3)*(X1-X3)
If V3*V4>=0
Return .F.
Endif
Return .T.
Endfunc
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
菜鸟求一句命令
我做VC的,没做过VFP,完全不懂,帮人问一句命令,谢谢各位大牛们帮忙。
“我有两张表,称为A表,B表,其中B表数据很多,我现在...
-
求助:实现grid修改后直接后直接更新到数据表里
各位道友,小弟有两个问题
1。如何实现在grid表格里直接修改数据;
2。修改的数据可直...
-
请问treeview 里面如何选择性展开其中某树枝及其获得焦点?
请问如何在treeview里面,如何实现选择性展开其中的某枝,原本是全部收起来...
-
vfp中treeview控件的用法
我在VFP中使用了treeview控件,我对treeview中的某一个节点的文本修改了,怎么在treeview窗口中进行就更。
...
-
求编排考号问题
需求是这样的,如1年级有8个班,那么考号编排规则是:第1个班的第一个学生考号为1号,第2个班的第一个学生考号为2号,以此...
-
大家讨论,对现有vfp6.0产品只升级为sql server数据库有必要吗?
功能保留原来 只是数据库变化
我本人觉得会丧失很多vfp 本身文...
-
表单中的出错,第一次遇到
VFP9.0中新建了一个表单
表单中,增加一个command1,使其width=25
然后,将此按钮,复制150个出来. (此时...
-
VFP 如何做一个类似word控件?
如题。
类似于电子病历的那种控件。可以像word一样的编辑文件、表格、图片等
可以直接取数据库的数...
-
vfp使用Msxml2.ServerXMLHTTP的乱码问题
oo = = newObject('Msxml2.ServerXMLHTTP')
oo.open('post','http://localhost/',.f.)
o...
-
表中定位 如下 记录 seek办不到
表结构
dlh fb
100 5
110 2
112 3
........
假如 我想查找 dl...