洛谷 B2031:计算三角形面积的向量叉积解法
创作时间:
作者:
@小白创作中心
洛谷 B2031:计算三角形面积的向量叉积解法
引用
CSDN
1.
https://blog.csdn.net/hnjzsyjyj/article/details/145344955
洛谷B2031题目要求计算给定三个顶点坐标的三角形面积。本文将介绍一种基于向量叉积的简洁算法来解决这个问题。
题目描述
平面上有一个三角形,它的三个顶点坐标分别为 ((x_1, y_1)),((x_2, y_2)),((x_3, y_3)),那么请问这个三角形的面积是多少。
输入格式
输入仅一行,包括 6 个双精度浮点数,分别对应 (x_1),(y_1),(x_2),(y_2),(x_3),(y_3)。
输出格式
输出也是一行,输出三角形的面积,精确到小数点后两位。
输入样例
0 0 4 0 0 3
输出样例
6.00
算法分析
本题有多种解法,如基于“海伦公式”的解法。下面给出基于“向量叉积”的解法,更简洁。
- 向量叉积:(\mathbf{a} \times \mathbf{b} = |\mathbf{a}||\mathbf{b}|\sin\theta),其中 (\theta) 为向量 (\mathbf{a}) 与向量 (\mathbf{b}) 的夹角。
- 向量叉积的绝对值是以两个向量 (\mathbf{a}) 与 (\mathbf{b}) 为邻边的平行四边形的面积。
在下图中,若设 ((x_1,y_1)) 到 ((x_2,y_2)) 的向量为 (\mathbf{a}),((x_1,y_1)) 到 ((x_3,y_3)) 的向量为 (\mathbf{b}),(dx=x_2-x_1),(dy=y_2-y_1),(du=x_3-x_1),(dv=y_3-y_1),则向量 (\mathbf{a}) 与向量 (\mathbf{b})的叉积的绝对值为 (|dx \cdot dv - du \cdot dy|)。
算法代码
#include <bits/stdc++.h>
using namespace std;
int main() {
double x1, y1, x2, y2, x3, y3;
cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
double dx = x2 - x1, dy = y2 - y1, du = x3 - x1, dv = y3 - y1;
double s = abs(dx * dv - du * dy) / 2.0;
printf("%.2lf", s);
return 0;
}
/*
in:
0 0 4 0 0 3
out:
6.00
*/
参考文献
热门推荐
冀惠保理赔全攻略:轻松搞定健康保障!
“冀惠保”第五季上线,优化你的财务安全网
口服液剂型:便捷与高效的结合
人工耳蜗 vs 助听器:谁更适合你?
助听器 vs 人工耳蜗:谁更适合你?
英语辅修专业:提升就业竞争力的明智之选
小S脸肿真相揭秘:减压消肿有妙招!
AI和通信工程:政策支持下的黄金赛道
18岁如何提升职场竞争力:从表达到学习的全方位指南
10分钟面部按摩,告别脸部浮肿!
秋冬护肤小窍门:告别面部浮肿!
秋冬吃菠菜豆苗,告别脸部浮肿!
脸部浮肿:不只是"上火",这些健康隐患需警惕
《众人划桨开大船》:一首歌的诞生与时代精神的传承
掌握日语语法的高效记忆法,你get了吗?
NHK简明日语:语法酷学法大揭秘!
揭秘徐子淇八字命理:命运还是努力?
八字命理学:解读生辰八字中的命运密码
八字算命:千年文化瑰宝的现代传承
《复仇者联盟5:毁灭日》即将开拍!60位超级英雄齐聚,罗素兄弟执导
《复仇者联盟5:康之王朝》新英雄阵容揭秘
怎样管理好一个班级?关键是建立和谐、相互尊重的关系
“汉语新解”:优雅怼人新潮流
《流星花园》杉菜成绝响:大S经典角色回顾
大S离世后,娱乐圈集体哀思:你最怀念她的哪个角色?
大S离世,娱乐圈集体悼念
毁灭博士:一个天才的自我救赎与迷失
小罗伯特·唐尼变身毁灭博士:《复仇者联盟5》角色揭秘
小罗伯特·唐尼变身毁灭博士!漫威电影宇宙迎来最强反派
小罗伯特·唐尼变身毁灭博士:从英雄到反派的完美转型