已知三角型的三个顶点坐标,如何判断另一个点是否落在这个三角型内,本人在线恭候,谢谢。
解决方案 »
- vector 出错
- 我现在有两个比较重要的函数,想做成一个dll,应该如何入手呢?以前没有接触过dll,能不能给我推荐一个最快的方法呢?
- WriteFile()发不出数据?
- -->>50分一个小问题:如何改变一个只读属性文件夹为可写属性文件夹?
- vc++主要用来做什莫开发
- 请问char *sourceUser 和char* sourceUser 有区别吗?
- 我用代码创建一个按扭,但是报错,应该没问题的,我试了半天,还是不行,请高手帮忙~~~~~~
- 关于OnInitialUpdate()函数的一个问题
- CAD画板
- 150分求治疑难杂症!!!
- 在vb中调用dll的问题
- 请问到底如何才能在vc下编译一个console程序?是不是必须要像jjhou说的那样设置什么:set PATH=C:\MSDEV\VC98\BIN;C:\MSDEV\COMMON\MSDEV98
先用CreatePolygonRgn生成相应的区域...再用PtInRegion判断这个点是不是在这个区域内
我的编译器用不了CreatePolygonRgn函数。
在vc\mfc版发的贴我以为是window平台的...
rgn.CreatePolygonRgn()
如果(s(p,p1,p2)+s(p,p1,p3)+s(p,p3,p2))=s(p1,p2,p3)
p就在内部
哈哈,你厉害啊,我写的乱七八糟的,但我可也是原创啊!
哪如何判断是不是凸多边形你
我才是原创:)用凸多边形的方法也挺好。
能不能告诉大家三角形三点求面积的公式,谢谢
s=sqrt(p*(p-a)(p-b)(p-c))
若点(P)在三角形内,到三个顶点(P1, P2, P3) 的矢量表示为v1(P1-P), v2(P2-P), v3(P3-P), 则v1, v2, v3 之间的角度大于90小于180。假设V1, V2 之间的角度是A,则:
cos(A)<0 and sin(A)>0 或 cos(A)>0 and sin(A)<0.cos(A)+jsin(A) = exp(jA1 - jA2) = exp(jA1)*exp(-jA2) = (cos(A1) +j sin(A1)) * (cos(A2) - j sin(A2)) = ... + j ...
A1, A2 是 V1, V2 的角度.
设 V1为 x1, y1 -->
cos(A1) = x1 / sqrt(x1*x1 + y1*y1), sin(A1) = y1/sqrt(x1*x1 + y1*y1)
由于 sqrt(x1*x1 + y1*y1) > 0, 所以以上公式不必使用sqrt(x1*x1 + y1*y1):
= (x1 + j y1) * (x2 - j y2) = x1*x2 + y1*y2 + j(x2*y1 - x1*y2)
判断x1*x2 + y1*y2 与 x2*y1 - x1*y2 的符号即可。
以上的 x1 = px1 - px, y1 = py1 - py,
x2 = px2 - px, y2 = py2 - py
由于 sqrt(x1*x1 + y1*y1) > 0, 所以以上公式不必使用sqrt(x1*x1 + y1*y1):
= (x1 + j y1) * (x2 - j y2) = x1*x2 + y1*y2 + j(x2*y1 - x1*y2)
判断x1*x2 + y1*y2 与 x2*y1 - x1*y2 的符号即可。x1*x2 + y1*y2 也是大于0的,哪就是说只需要判断x2*y1 - x1*y2 的符合即可,是不是这样的。