向量叉乘求多变形面积

#include <iostream>
#include <algorithm>
#include <vector>
#include <fstream>
#include <cmath>
using namespace std;
 struct Point {
     double x, y;
};
//计算叉乘,平面上的点,所以向量总是沿z轴方向
double cross(const Point &A, const Point &B, const Point &C) {
    return (B.x - A.x) * (C.y - A.y) - (B.y - A.y) * (C.x - A.x);
}
//默认以(0,0)为向量起点,循环计算各三角形的面积
double polygon_area(vector<Point>& v){
    double area=0;
    auto it=v.begin();
    for(;it<v.end();++it){
        area+=cross({0,0},*it,*(it+1));
    }
    return abs(area/2.0);
}
int main(){
fstream fs("C:\\Documents and Settings\\Administrator\\桌面\\poly.txt");
Point tmp;
vector<Point> v;
while(!fs.eof()){
fs>>tmp.x>>tmp.y;
v.push_back(tmp);
}
double area=polygon_area(v);
cout<<"多边形面积为:"<<area<<endl;
return 0;
}

向量叉乘求多变形面积

时间: 2024-10-10 12:48:44

向量叉乘求多变形面积的相关文章

叉积求多变形面积

Description Mr. Tenant is going to buy a new house. In fact, he is going to buy a piece of land and build his new house on it. In order to decide which piece of land to buy, Mr. Tenant needs a program which will give a score to each piece. Each candi

hdu 3934&amp;&amp;poj 2079 (凸包+旋转卡壳+求最大三角形面积)

链接:http://poj.org/problem?id=2079 Triangle Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 8173   Accepted: 2423 Description Given n distinct points on a plane, your task is to find the triangle that have the maximum area, whose vertices

向量叉乘与叉乘矩阵

本文以三维向量来说明向量的叉乘计算原理以及叉乘矩阵如何求取 1.向量叉乘的计算原理              a.b分别为三维向量:                                                                                    a叉乘b一般定义为:                                      或              可是这只是一个符号的定义啊,具体怎么得到代数值呢             

!HDU 4380 三角屋内有奇数个宝藏的三角形有多少个-计算几何-(向量叉乘&amp;线段与点的关系&amp;暴力枚举)

题意:小明要买三座房子,这三个房子构成一个三角形,已知n个房子的坐标,任何三个房子都不在一条直线上,又已知有m个宝藏的坐标,问房子构成的三角形内有奇数个宝藏的三角形有多少个.数据范围:n(3~100),m(1~1000) 分析: 简单的计算几何.记住这题的做法. 三角形内的点的个数=上面的线段下面的点的个数 -- 下面两条线段下面的点的个数(或者下面一条线段减上面两条线段,看具体位置情况,所以直接取绝对值就好) n个点有n(n-1)/2条线段,不超过1W,枚举每条线段,再枚举每个宝藏的坐标(10

JAVA求圆的面积

import java.text.DecimalFormat;import java.util.Scanner; public class TheAreaOfCircle { public static void main(String[] args) { /*问题描述 给定圆的半径r,求圆的面积. 输入格式 输入包含一个整数r,表示圆的半径. 输出格式 输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积. 说明:在本题中,输入是一个整数,但是输出是一个实数. 对于实数输出的问题,请

c++入门第一天(求圆的面积)

看了一会书,发现C++和C虽然于发上相似,但是解决问题的方式还是不一样的,毕竟面向对象和面向过程是两种不同的思维方式.下面就通过一个求圆的面积的例子,比较C和C++的不同. 需求:输入圆的半径,求解圆的面积 使用C语言来解决:1.定义两个变量半径r.面积s;  2.输入半径;  3.打印结果. 以下是源代码: #include <stdio.h> int main01() { double r, s; //定义变量圆和半径 printf("请输入圆的半径:"); scanf

求三角形的面积

1.数学知识 求三角形的面积 三边的边长分别为:a, b, c; 公式:s = (a + b + c) / 2; area = √s * ( s - a) * (s - b) * (s -c); 2.源代码 #include<iostream> #include<cmath> using namespace std; bool TriangleArea(double a, double b, double c, double &area) { if(a + b <=

数据结构——栈——求直方图最大面积

原题描述 Given n non-negative integers representing the histogram’s bar height where the width of each bar is 1, find the area of largest rectangle in the histogram. Above is a histogram where width of each bar is 1, given height = [2,1,5,6,2,3]. The lar

hdu4587 求割点变形

http://acm.hdu.edu.cn/showproblem.php?pid=4587 Problem Description Suppose that G is an undirected graph, and the value of stab is defined as follows: Among the expression,G-i, -j is the remainder after removing node i, node j and all edges that are