题目
按顺序给定一个多边形顶点坐标(x, y),求其面积。
附加:若再给定一个点,求该点是否在此多边形上(在边界上也算)
思路
利用向量的点积求面积,参考博客:传送门
附加:以该点为起点,加入多边形的点中计算面积,若最后结果和原多边形相等,则表示该点在此多边形上。
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
Point[] p = new Point[n+5];
for(int i=0; i<n; i++) {
double x = cin.nextDouble();
double y = cin.nextDouble();
p[i] = new Point(x, y);
}
double ans = 0;
for(int i=1; i<n; i++) {
ans += (p[i].x * p[i-1].y - p[i].y * p[i-1].x) / 2;
}
ans += (p[0].x * p[n-1].y - p[0].y * p[n-1].x) / 2;
ans = ans < 0 ? -ans : ans;
System.out.println(ans);
}
static class Point{
double x, y;
public Point(double x,double y) {
this.x = x;
this.y = y;
}
}
}
运行结果
如有错误或不合理的地方,敬请指正~
加油!!