社区
Java SE
帖子详情
求面积问题,请大家来帮忙讨论!
queena
2003-10-20 11:46:24
问题是:求多边型的面积;
1.先给出顶点数N;
2.然后按顺序给出每一个顶点:
3.判断是否是多边型,是,输出;不是,输出不是.
如
N=5
(0,0)(0,1)(1,1)(0.5,0.5)(1,0)注意这里的点是按顺序输入的;
那么输出:
是多边型;面积是:0.75
如
N=4
(0,0)(1,0)(0,1)(1,1)
那么输出不是多边型
...全文
72
8
打赏
收藏
求面积问题,请大家来帮忙讨论!
问题是:求多边型的面积; 1.先给出顶点数N; 2.然后按顺序给出每一个顶点: 3.判断是否是多边型,是,输出;不是,输出不是. 如 N=5 (0,0)(0,1)(1,1)(0.5,0.5)(1,0)注意这里的点是按顺序输入的; 那么输出: 是多边型;面积是:0.75 如 N=4 (0,0)(1,0)(0,1)(1,1) 那么输出不是多边型
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
queena
2003-10-22
打赏
举报
回复
对于凹多边型我的想法是:
任取一点作为寻找起点,按照起点开始顺序走;
对每相邻的俩条线如果它们的夹角是小于180度
那么就计算接下去的两条;
如果大于的话就把第二条的起点与本次寻找的起点相连
形成凸边型计算;
那么就把凹多边型分成几个凸多边型进行计算.
谢谢zhang21cnboy(事了抚衣去,不留身与名)
的代码
zhang21cnboy
2003-10-22
打赏
举报
回复
凹多边形的我也有,不过呢,这个东东就不给你了!不然人家说我泄漏秘密哦!
queena
2003-10-22
打赏
举报
回复
呵呵还是谢谢了
zhang21cnboy
2003-10-21
打赏
举报
回复
上代码:
package com.kefa.zhang.math;
import java.awt.Point;
import java.lang.Math;
import java.util.Vector;
/**
* <p>描述:计算两点之间的距离,计算多边形的面积</p>
*
* */
public class MeasureMath {
public MeasureMath() {
}
/**
* 计算两点之间的距离
* */
public static double distBetween2Dots(Point point1,Point point2){
double res = Math.sqrt((point2.getX()-point1.getX()) * (point2.getX()-point1.getX())
+ (point2.getY()-point1.getY()) * (point2.getY()-point1.getY()));
return res;
}
/**
* 按顺序计算各点之间的距离之和,带方向
* **/
public static double distAmongNDots(Vector points){
int j=0;
double res1 = 0.0;
for (int i=0;i<points.size();i++){
Point p1 = (Point)points.get(j);
Point p2 = (Point)points.get(i);
res1 += MeasureMath.distBetween2Dots(p1,p2);
j = i;
}
return res1;
}
/**
* 计算三角形的面积
* */
public double getAreaOf3Angels(Point p1,Point p2,Point p3){
double a = MeasureMath.distBetween2Dots(p1,p2);
double b = MeasureMath.distBetween2Dots(p2,p3);
double c = MeasureMath.distBetween2Dots(p1,p3);
double all = 0.5*(a+b+c);
return Math.sqrt(all*(all-a)*(all-b)*(all-c));
}
//判断是否是凸多边形
public boolean validateAngels(Vector points){
boolean rt = true;
int j = 0;
int z = 0;
boolean left=false,right = false;
for(int i=0;i<points.size();i++){
j = (i+1)%points.size();
z = (i+2)%points.size();
Point p1 = (Point)points.get(i);
Point p2 = (Point)points.get(j);
Point p3 = (Point)points.get(z);
Point ft1 = new Point();
ft1.setLocation(p2.getX()-p1.getX(),p2.getY()-p1.getY());
Point ft2 = new Point();
ft2.setLocation(p3.getX()-p1.getX(),p3.getY()-p1.getY());
//求叉积
double cj = ft1.getX()*ft2.getY() - ft1.getY()*ft2.getX();
if (cj < 0) //左边
left = true;
else //右边
right = true;
if((left == true) && (right == true)){//如果有左边,也有右边,则一定不是凸多边形
rt = false;
break;
}
// i++;
j++;
z++;
}
return rt;
}
/**
* 计算多边形面积
* */
public double getAreaOfNAngels(Vector points)throws Exception{
if(!this.validateAngels(points)){
throw new StyleError("计算面积不允许凹多边形");
}
double rts = this.calculArea(points);
return rts;
}
private double calculArea(Vector points){
double rs = 0.0;
Point p1 = (Point)points.get(0);
Point p2 = (Point)points.get(1);
Point p3 = (Point)points.get(2);
rs = this.getAreaOf3Angels(p1,p2,p3);
Vector new1 = points;
new1.remove(1);
if (new1.size() >=3)
return rs + calculArea(new1);
else
return rs;
}
public static void main(String[] args) {
MeasureMath measureMath1 = new MeasureMath();
}
}
class StyleError extends Exception {
String ErrorMsg = null;
public StyleError(String msg) {
ErrorMsg = msg;
}
public String toString() {
return ErrorMsg;
}
}
zhang21cnboy
2003-10-21
打赏
举报
回复
可以计算,不过凹多边形计算起来有点麻烦,我这里有计算凸多边形的代码。
leotonny
2003-10-21
打赏
举报
回复
N=4
(0,0)(1,0)(0,1)(1,1)
确实不是多边形,因为必须按顺序连线
应该能够做得,只不过现在还没什么思路。
关注中...
qiyongjun2003
2003-10-21
打赏
举报
回复
比如
n=4
{0,0},{0.2,0.2},{0.1,3),{-0.1,5}
她也是四边形,他的面积如何算?
qiyongjun2003
2003-10-21
打赏
举报
回复
N=4
(0,0)(1,0)(0,1)(1,1)
那么输出不是多边型
这个为什么不是多边形?它可是正规的长方形
还有如果他输入的顶点构成的多边形不是正规的象什么长方形之类的面积就不好算了
比如他输入构成的多边形很不正规。
2021年部编版五年级道德与法治上册期末考试题及答案(1).pdf
1. 我国陆地
面积
排名:中国陆地
面积
居世界第三位。 2. 《南京条约》签订时间:1842年。 3. 黄山地理位置:黄山位于安徽省。 4. 抗日民族统一战线初步形成事件:西安事变。 5. 青藏铁路建设:青藏铁路由多个民族...
2022年份电大远程网络教育大学英语统考题库试卷八.doc
第五题是提供帮助的情境,B选项“I'll give you a hand.”表示愿意
帮忙
,最为得体。 2. 阅读理解: 这段阅读理解主要
讨论
了森林的重要性以及森林消失可能带来的后果。第一题的判断题,根据文章内容,的确强调了...
python编程正方形
面积
_借绘画学编程(Python Turtle绘图)—第1课时
学习python找turtle来
帮忙
!ps:通过炫酷的绘画技术,展示python编程绘画的魅力,激发学生的学习热情。一、预热:画直线import turtlet=turtle.Pen()t.forward(200)#尝试修括号中的数字,并调试程序观察变化
讨论
:...
小学数学与计算机整合课优质教案,小学数学优质课教案《长方形的
面积
》(通用5篇)...
以下是小编为大家收集的小学数学优质课教案《长方形的
面积
》(通用5篇),欢迎阅读,希望大家能够喜欢。小学数学优质课教案《长方形的
面积
》1教学内容苏教版《义务教育课程规范实验教科书数学》三年级(下册)第74~77页...
python
求
圆柱体的体积_漫谈超球体的体积公式
现实生活中,我们只要掌握圆的周长和
面积
公式,了解球的表
面积
和体积公式就够用了,没有什么可以深究的。本篇将带你走进高维度球的表
面积
和体积公式[1]。 我们生活在三维空间,对更高维度的空间难以构想。笛卡尔说...
Java SE
62,635
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章