洛谷 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
*/
参考文献
热门推荐
服务器看视频时,带宽如何优化以确保流畅播放?
红苋菜尽量少吃最好不吃
空气流量计大揭秘:原理、应用到未来,一网打尽!
宠物饮食需定时定量,不宜三餐
全新F1技术规则出台 赛车更灵活 竞争更激烈
重疾险交费时间越长越好吗?
一天只能吃一个鸡蛋吗?营养专家为你解答
电子烟中含有哪些化学物质?电子烟成分详解
人才盘点的意义是什么?
房屋检测需要检测什么
如何进行有效的房屋维护?这种维护需要注意哪些方面?
新冠疫苗有效期、价格、生产能力……这场发布会信息量很大
显存12g的显卡有哪些
云朵沙发选购指南:从设计到材质全方位解析
梯度的数学定义、物理意义、几何意义和形象化比喻
什么是投诉机制?其构成、重要性及建立方法全解析
吃一个菠萝算多吗 菠萝吃多了会怎么样
抑郁症四肢发麻怎么办缓解
情感麻木影响身心健康教你这样改善
小空间大利用:家庭厨房收纳效率提升指南
如何确定原油交易一手的价格范围?这个价格范围受哪些国际因素影响?
车辆加油不走车的原因
选调生性质解析:公考与人才引进的界定及是否属于公务范畴探讨
在VS Code中调试Vue.js应用程序
四十五年手机发展简史
玻璃体混浊与营养物质缺乏的关系
工程安全管理体系的构建与实施
国际贸易与进出口分析报告
蜜袋鼯:特征、习性与饲养指南
如何利用学习进度甘特图高效管理你的学习计划?