判断一个点是否在三角形内部用C语言怎么编?

 我来答
tjpulord
2012-04-28 · TA获得超过284个赞
知道答主
回答量:80
采纳率:0%
帮助的人:58.3万
展开全部
沿着三角形的边按顺时针方向走,判断该点是否在每条边的右边(这可以通过叉乘判断),如果该点在每条边的右边,则在三角形内,否则在三角形外。这个算法只用到了三次叉乘,没有除法运算和三角函数、开根号等运算,所以效率很高,而且精度很高(没有浮点误差)。
Mr_Yang2012
2012-04-24 · TA获得超过1647个赞
知道小有建树答主
回答量:392
采纳率:0%
帮助的人:486万
展开全部
这道题有两种算法,第一种算法是面积法,用该点与三角形每一个端点连接,这样构成三个三角形,求新连接的三角形面积和于原三角形面积是否相等(用叉积或海伦公示),如相等即在三角形内(边界情况可能要单考虑),该方法思路简单但是代码书写较长。还有就是计算几何的方法,建议上网查查计算几何。
追问
我刚刚百度了,那人没说清楚,也就看不懂了,你要不就把代码打出来吧!我才刚学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应当类似,可以仿照写.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
魅之涛
2012-04-28
知道答主
回答量:95
采纳率:0%
帮助的人:27.7万
展开全部
叉乘...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式