社区
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)
那么输出不是多边型
...全文
58
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写文章
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)
那么输出不是多边型
这个为什么不是多边形?它可是正规的长方形
还有如果他输入的顶点构成的多边形不是正规的象什么长方形之类的面积就不好算了
比如他输入构成的多边形很不正规。
沐风老师3DMAX藤编沙发建模视频教程
编织建模在3DMAX建模当中属于难度比较高一点儿的建模,主要是因为编织这种结构大
面积
的出现,结构复杂,如果靠一根一根线去调整几乎无法完成,所以需要一定的方法和技巧妙。 *我们在每一个模型的挑选上都有一些小小...
小学数学与计算机整合课优质教案,小学数学优质课教案《长方形的
面积
》(通用5篇)...
小学数学优质课教案《长方形的
面积
》(通用5篇)作为一名无私奉献的老师,编写教案是必不可少的,教案是教学活动的依据,有着重要的地位。怎样写教案才更能起到其作用呢?以下是小编为大家收集的小学数学优质课教案《长方形的
面积
》(通用5篇),欢迎阅读,希望大家能够喜欢。小学数学优质课教案《长方形的
面积
》1教学内容苏教版《义务教育课程规范实验教科书数学》三年级(下册)第74~77页。教学目标1.使同学在观察、操...
凌晨1点突发致命生产事故,人工多线程来破局!
有一个读者问我:你认为一个程序员具备什么样的能力,才算得上是厉害的程序员? 我答:拥有解决
问题
的能力的程序员。 这个回答貌似有点抽象,不要紧看下面的文章你会慢慢有所了解。 一、解决
问题
的能力 很多年前,当我还是一个小菜鸟的时候,我的领导经常告诉我,解决
问题
的时候,不要局限于技术本身,并且形象的给我举了一个例子。 有一次两个程序员一直
讨论
,如何判断两台服务器之间是否网络正常,争争吵吵了很久...
深夜生产事故,人工多线程来救场!
有一个读者问我:你认为一个程序员具备什么样的能力,才算得上是厉害的程序员? 我答:拥有解决
问题
的能力的程序员。这个回答貌似有点抽象,不要紧看下面的文章你会慢慢有所了解。 一、解决
问题
的能力 很多年前,当我还是一个小菜鸟的时候,我的领导经常告诉我,解决
问题
的时候,不要局限于技术本身,并且形象的给我举了一个例子。 有一次两个程序员一直
讨论
,如何判断两台服务器之间是否网络正常,争争吵吵了很久...
农用地分等成果中存在的几个
问题
最近一直在外
帮忙
做湖北省按等折算的事情,本以为应该可以顺利完成,可是现在发现事实已经很严峻了。农用地分等成果实在让我头痛!——这也是按等折算工作不能顺利继续的原因。里面的
问题
很多,花了几天和SUMMER
讨论
,总结了以下几个:1、各县成果时间不一致,包括:项目启动、运做、结束的时间不一致,搜集资料的年份不一致等;2、各县成果数据不一致,包括:(1)数据格式不一致,可以说这一点真是五花八门,关键因为《...
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章