判断一个点是否在三角形内部用C语言怎么编?
展开全部
这道题有两种算法,第一种算法是面积法,用该点与三角形每一个端点连接,这样构成三个三角形,求新连接的三角形面积和于原三角形面积是否相等(用叉积或海伦公示),如相等即在三角形内(边界情况可能要单考虑),该方法思路简单但是代码书写较长。还有就是计算几何的方法,建议上网查查计算几何。
追问
我刚刚百度了,那人没说清楚,也就看不懂了,你要不就把代码打出来吧!我才刚学C语言,很多地方真的不懂!
追答
那就比较难办了,那你先采用第一种方法吧。就是代码写着比较麻烦,但是知识点比较简单。求面积用海伦公式吧。如果你连两点间距离怎么求都不会我就没办法了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-02-05
展开全部
这个是用python写的(用来判断是否正确的function):
import math
#这里的输入是三个顶点的坐标所组成的6个元素的array
def TriangleArea(arr):
areas = [0, 0, 0, 0] #用来存ABC, OAB, OAC, OBC的面积
areas[0] = 0.5*abs(arr[0] * (arr[3] - arr[5]) + arr[2]*(arr[5] - arr[1]) + arrt[4]*(arr[1] - arr[3]))
areas[1] = 0.5*abs(arr[0] * arr[3] - arr[2]*arr[1])
areas[2] = 0.5*abs(arr[2] * arr[5] - arr[4]*arr[3])
areas[3] = 0.5*abs(arr[0] * arr[5] - arr[4]*arr[1])
# 后三者的面积均不为零,否则原点在边或顶点上
if areas[1] * areas[2] * areas[3] != 0 and areas[0] == areas[1] + areas[2] + areas[3]:
return 1 # 在三角形内
else:
return 0 # 不在三角形内
用C应当类似,可以仿照写.
import math
#这里的输入是三个顶点的坐标所组成的6个元素的array
def TriangleArea(arr):
areas = [0, 0, 0, 0] #用来存ABC, OAB, OAC, OBC的面积
areas[0] = 0.5*abs(arr[0] * (arr[3] - arr[5]) + arr[2]*(arr[5] - arr[1]) + arrt[4]*(arr[1] - arr[3]))
areas[1] = 0.5*abs(arr[0] * arr[3] - arr[2]*arr[1])
areas[2] = 0.5*abs(arr[2] * arr[5] - arr[4]*arr[3])
areas[3] = 0.5*abs(arr[0] * arr[5] - arr[4]*arr[1])
# 后三者的面积均不为零,否则原点在边或顶点上
if areas[1] * areas[2] * areas[3] != 0 and areas[0] == areas[1] + areas[2] + areas[3]:
return 1 # 在三角形内
else:
return 0 # 不在三角形内
用C应当类似,可以仿照写.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询