python输入三点,求三角形面积

1)平面三点判断是否为三角形,判断三点是否共线即可:

三点坐标为(x1,y1),(x2,y2),(x3,y3),第一步的判断条件即\left | \frac{(x1-x2))}{(y1-y2))} \right |\neq \left | \frac{(x1-x3))}{(y1-y3))} \right |

条件成立的话,三点确定三角形。

2)确定三点不共线之后就是面积的求解,一般知道三边长推荐海伦公式:

S = \sqrt{p(p-a)(p-b)(p-c)}

其中p = \frac{a+b+c}{2}为三角形半周长。这里知道三点坐标用海伦公式没有问题,但是使用三角公式会更方便点。

\vec{a}=(x2-x1,y2-y1)  ;\vec{b}=(x3-x1,y3-y1) 

S = \frac{1}{2}\left | \vec{a} \right | \left | \vec{b} \right | \left | sin(A)\right |

cos(A) = \frac{\left | \vec{a}\cdot \vec{b} \right |}{\left | \vec{a}\right |\cdot \left | \vec{b}\right |},因此sin(A) = \frac{\sqrt{(\left | \vec{a}\right |\cdot\left | \vec{b} \right |)^{2}-(\left | \vec{a}\cdot \vec{b} \right |)^{2}}}{\left | \vec{a}\right |\cdot \left | \vec{b}\right |}

 因此S = \frac{\sqrt{(\left | \vec{a}\right |\cdot\left | \vec{b} \right |)^{2}-(\left | \vec{a}\cdot \vec{b} \right |)^{2}}}{2}  ;将a,b向量代入,可以得到:

S = (x2y3-x3y2-x1y3-x2y1+x1y2+x3y1)/2

###输入三点判断三角形是否存在,存在计算三角形的面积

[x1,y1,x2,y2,x3,y3] = map(int,input('请分别输入三点的横纵坐标,用‘,’分隔:').split(','))
if (abs((y1-y2)/(x1-x2))==abs((y1-y3)/(x1-x3))):
    print('您输入的三点在共线,输入有误')
else:
    s = (x1*y2-x1*y3+x2*y3-x2*y1+x3*y1-x2*y2)/2
print('您输入的三点坐标({0},{1}),\
({2},{3}),({4},{5})的面积为{6}'.format(x1,y1,x2,y2,x3,y3,s))

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值