要求用户输入4个坐标,判断前3个坐标是否可以作为三角形的3个顶点;如果能,同时判断第四个坐标是否在这个三角形内 (不包括在边上和顶点上)
解决方案 »
- WebBrowser 控件动态写入 HTML 出错
- Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Password=;Initial Catalog=database;Data Source=" & SVName APP=[ AppNa
- [ 共享 ] 一个取得文件属性的方法
- 在调用API函数时,出现了“实时错误6,溢出”的提示,问题出在哪里?
- 怎么让adodc的caption居中显示
- 如何用DEL键删除LIST里面的某一行???救救小女
- 高手指点一下 :能在没装Office的环境下调用Excel吗
- 发传真的问题!我已经试过用MAPI与FaxCom中类发传真都不行.
- 又来麻烦大家了!(VB+SQLSERVER)
- 如何读出文本文件中的内容?
- 如何判断某控件是否在PictureBox中?实现套打功能,只打印Picturebox中Text的内容~~~(高人进)
- 100分求 【Acrobat SDK】 (4.0,50.,6.0,7.0版本都可以)!Adobe公司网站上的下载不了!!
http://community.csdn.net/Expert/topic/4255/4255936.xml?temp=.1116754
http://community.csdn.net/Expert/topic/4255/4255936.xml?temp=.3281061
http://community.csdn.net/Expert/topic/4264/4264582.xml?temp=.6414453
http://community.csdn.net/Expert/topic/4310/4310685.xml?temp=.6980707
x As Long
y As Long
End Type
Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function PtInRegion Lib "gdi32" (ByVal hRgn As Long, ByVal x As Long, ByVal y As Long) As Long
'函数说明:
'CreatePolygonRgn( )函数是用来创建一个图形热点对象,lpPoint参数为形成图形热点区的第一个边界点坐标,nCount参数指出了边界点的个数(如nCount<3时,将无法形成一个封闭区域),nPolyFillMode参数指定填充模式,该函数返回图形热点对象(Long型);
'DeleteObject( )函数用来删除一个由hObject参数指定的对象;
'PtInRegion( )函数用来判断某坐标(由参数x、y指出)是否在hRgn图形热 点对象指出的热点区内,若是返回1,否则返回0。Sub diag()
Dim p(3) As POINTAPI, temp As String, x() As String, i As Long, rgn As Long, beline As Boolean
error:
temp = InputBox("请依次输入四个点的横坐标及纵坐标:", "提示", "100,100,500,100,300,300,200,150") '
x = Split(temp, ",")
If UBound(x) <> 7 Then MsgBox "输入有误,请重新输入!": GoTo errorFor i = 0 To 3
p(i).x = CLng(x(i * 2))
p(i).y = CLng(x(i * 2 + 1))
Next
beline = ((p(1).y - p(0).y) ^ 2 * (p(2).x - p(0).x) ^ 2 = (p(1).x - p(0).x) ^ 2 * (p(2).y - p(0).y) ^ 2)
If beline = True Then
MsgBox "非三角形!"
Exit Sub
Else
rgn = CreatePolygonRgn(p(0), 3, 0)
i = PtInRegion(rgn, p(3).x, p(3).y)
If i = 0 Then
MsgBox "第4个点在三角形外部!"
Else
beline = ((p(1).y - p(0).y) ^ 2 * (p(3).x - p(0).x) ^ 2 = (p(1).x - p(0).x) ^ 2 * (p(3).y - p(0).y) ^ 2)
beline = beline Or ((p(2).y - p(0).y) ^ 2 * (p(3).x - p(0).x) ^ 2 = (p(2).x - p(0).x) ^ 2 * (p(3).y - p(0).y) ^ 2)
beline = beline Or ((p(1).y - p(2).y) ^ 2 * (p(3).x - p(2).x) ^ 2 = (p(1).x - p(2).x) ^ 2 * (p(3).y - p(2).y) ^ 2)
MsgBox "第4个点在三角形" & IIf(beline = True, "顶点或边上!", "内部!")
End If
DeleteObject rgn
End IfEnd SubPrivate Sub Command1_Click()
diag
End Sub