1. 程式人生 > >ACM OJ 2036 多邊形面積計算

ACM OJ 2036 多邊形面積計算

多邊形面積公式推導:

使用二維向量求三角形的面積:對於三角形ABC S=0.5 * |\vec{AB} * \vec{AC}|

該題目中,取原點為三角形的一個點。

二維向量的叉乘公式為:a(x_{}1,y_{} 1 ) b (x_{}2,y_{} 2 )     a*b=x_{}1y_{} 2-x_{}2y_{} 1

如果A(x1,y1),B(x2,y2),那麼S=(x1*y2-x2*y1) / 2

得出多邊形的計算公式:

S=0.5 * |x_{}1y_{} 2-x_{}2y_{} 1+x_{}2y_{} 3-x_{}3y_{} 2+...+x_{}ny_{} 1-x_{}1y_{} n|

(由於叉乘有正負,可處理凹多邊形的情況) 


#include <iostream>
#include <vector>
#include <math.h>
#include <iomanip>
using namespace std;
struct point{
    int x;
    int y;
};
 
int main(){
    int n;
    vector<point> p;
    point temp;
    double area;
    while(cin >> n){
        p.clear();
        area = 0.0;
        if(n == 0){
            break;
        }
        else{
            for(int i = 0; i < n; i++){
                cin >> temp.x;
                cin >> temp.y;
                p.push_back(temp);
            }
        }
        for(int i = 0; i < p.size() - 1; i++){
            area += 0.5*(p[i].x * p[i+1].y - p[i+1].x * p[i].y);
        }
        area += 0.5*(p[p.size()-1].x * p[0].y - p[0].x * p[p.size()-1].y);
        area = area >= 0 ? area: -area;
        printf("%.1lf\n",area);
    }
    return 0;
}
 
 

相關推薦

ACM OJ 2036 多邊形面積計算

多邊形面積公式推導: 使用二維向量求三角形的面積:對於三角形ABC  該題目中,取原點為三角形的一個點。 二維向量的叉乘公式為:      如果A(x1,y1),B(x2,y2),那麼S=(x1*y2-x2*y1) / 2 得出多邊形的計算公式: (由

任意多邊形面積計算

原理介紹 任意多邊形的面積可由任意一點與多邊形上依次兩點連線構成的三角形向量面積求和得出。        向量面積=三角形兩邊向量的叉乘。        如下圖: 按定理,多邊形面積由P點與A-G的各頂點連線所構成的三角形向量面積構成,假定多邊形頂點座標順序

1018 - 計算幾何之多邊形面積 - 改革春風吹滿地 (HDU 2036

傳送門   分析 sb題 主要是題面太皮,我才去做的:) 簡單的多邊形面積,用叉積即可   程式碼 #include<bits/stdc++.h> #define in read() #define N 105 using name

【改革春風吹滿地 HDU - 2036 】【計算幾何-----利用叉積計算多邊形面積

利用叉積計算多邊形的面積 我們都知道計算三角形的面積時可以用兩個鄰邊對應向量積(叉積)的絕對值的一半表示,那麼同樣,對於多邊形,我們可以以多邊形上的一個點為源點,作過該點並且過多邊形其他點中的某一個的多條射線,這樣就可以把該多邊形變為多個三角形,然後利用叉積求面積即可。 不過要注意,對於三角形可以簡單的用叉積

POJ 3907 Build Your Home | 計算多邊形面積

line cstring i+1 return 多邊形 ble def != poi 給個多邊形 計算面積 輸出要四舍五入 直接用向量叉乘就好 四舍五入可以+0.5向下取整 #include<cstdio> #include<algorithm>

HDU 2036 改革春風吹滿地 (求多邊形面積

tput %d 回老家 show .cn 三分 strong otto 而且 傳送門: 改革春風吹滿地 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To

Cows 計算幾何 求凸包 求多邊形面積

operator head opera -a ack ros mean lock rom 題目鏈接:https://cn.vjudge.net/problem/POJ-3348 題意 啊模版題啊 求凸包的面積,除50即可 思路 求凸包的面積,除50即可 提交過程 AC

hdu 2036多邊形面積 (凸、凹多邊形

node 開始 責任 clas 簡化 memset abs 得到 algo <題目鏈接> Problem Description “ 改革春風吹滿地,不會AC沒關系;實在不行回老家,還有一畝三分地。謝謝!(樂隊奏樂)”話說部分學生心態極好,每天就知道遊戲,這

計算任意多邊形面積

HDU 2036   改革春風吹滿地 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submissi

ACM】杭電OJ 2036(待更)

AC程式碼  #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include &l

hdu-2036求任意多邊形面積

改革春風吹滿地 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 45028   

計算幾何(多邊形面積計算,線段規範相交模板)

摘自 《計算幾何》    --謝迪 規範相交 ---兩條線段恰有唯一一個不是斷點的公共點。 可以用解析幾何解法 1.列直線方程: Ax+By+C=0   判斷解的情況   --若無解則平行   --無窮多解,則說明共線   --唯一解     -判斷

POJ 2826 An Easy Problem?! 叉積求多邊形面積計算幾何】

An Easy Problem?! Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7837 Accepted: 1145 Description It's

ssl1213-多邊形面積【差積,計算幾何】

正題 題目大意 求一個多邊形面積。 解題思路 隨便定一個原點,然後答案就是相鄰點的差積之和的絕對值。 要判斷不能組成多邊形的情況。 c

c# 畫任意多邊形並判斷點是否在多邊形內(計算任意多邊形面積

c# winform 中實現計算任意多邊形面積,包括 凹多邊形,線段有交叉的多邊形等。具體形式如下: 目標:計算紅色區域的面積 實現的方法: 1、首先能夠在滑鼠點選事件、滑鼠移動事件、和paint事件中實現多邊形的繪製。 2、利用GraphicsPa

hdoj-2036題解-向量積法求任意多邊形面積

該題題意就是逆時針給出點的座標,求這個多邊形的面積。下面就寫一下如何用向量積法求多邊形面積。 向量積法與面積 上圖說明了如何利用向量求得三角形的面積,下面介紹一下所謂的右手法則: 如圖,2個三角形ABC,唯一的區別在於上面的三角形ABC的標識是逆時針,而下面的

js根據經緯度計算多邊形面積

專案因使用百度地圖,但百度地圖的面積計算太過low,經常為出現面積為負的情況; 呼叫computeSignedArea(path) function computeSignedArea(path) { //傳入path:{ [{lat:,lng:}

js版根據經緯度計算多邊形面積(墨卡託投影)

var earthRadiusMeters = 6371000.0; var metersPerDegree = 2.0 * Math.PI * earthRadiusMeters / 360.0; var radiansPerDegree = Math.PI / 180.

由頂點坐標計算任意多邊形面積

class mage tro 順時針 面積 因此 習題 show hdu2036 我們知道,如果三角形的一個頂點在原點,另兩點A(x1 , y1)和B(x2 , y2) 則其面積可以表示為 SABC =0.5× |OA|×|OB|×sin(∠AOB) =0.5×|OA×O

eoj1127 計算幾何 任意多邊形面積

題目:eoj1127 “ 改革春風吹滿地, 不會演算法沒關係; 實在不行回老家, 還有一畝三分地。 謝謝!(樂隊奏樂)” 話說部分學生心態極好,每天就知道遊戲,這次考試如此簡單的題目,也是雲裡霧裡,而