导航:首页 > 编程语言 > 点在多边形内java

点在多边形内java

发布时间:2022-08-19 15:47:26

java中怎么设计一个算法实现一个点是否在一个多边形内

射线法判断一个点是否在一个多边形内

http://hi..com/xiaoheng199110/item/a63ae6fbfab88e1efe358237

Ⅱ JAVA中正多边形的问题已知一个点到另外N个点的距离,用JAVA求出这N个点是否为正多边形,若是求边长

你好,这个题确实描述的不准确。 你可以建立一个数学模型,求解,按照求解过程去编程

Ⅲ 判断点是否多边形内部java

//方法一
(Point2D.Doublepoint,List<Point2D.Double>polygon){
java.awt.geom.GeneralPathp=newjava.awt.geom.GeneralPath();
Point2D.Doublefirst=polygon.get(0);
p.moveTo(first.x,first.y);
for(Point2D.Doubled:polygon){
p.lineTo(d.x,d.y);
}
p.lineTo(first.x,first.y);
p.closePath();
returnp.contains(point);
}

//方法二
(Point2D.Doublepoint,List<Point2D.Double>polygon){
java.awt.Polygonp=newPolygon();
//java.awt.geom.GeneralPath
finalintTIMES=1000;
for(Point2D.Doubled:polygon){
intx=(int)d.x*TIMES;
inty=(int)d.y*TIMES;
p.addPoint(x,y);
}
intx=(int)point.x*TIMES;
inty=(int)point.y*TIMES;
returnp.contains(x,y);
}

Ⅳ Java 判断 一个点是不是在一个多边形围起来

MobilelocationEntity 是手机位置信息类 包含经度纬度

Enclosure 围栏类 每一个对象是形成多边形围栏的一个点 包含经度纬度

[java]view plain

Ⅳ 急求!!14号就要用!用JAVA编写:输入N个点的坐标,判断这N个点能否构成一个凸多边形。十分感谢!

/**
* 原理: 凸多边形的定义,以某一边做直线,其他各点必在该直线同一侧
* @author tjx
*
*/
public class Mshape {
/*判定点p 与直线位置,这里忽略了点p在直线l上的情况,你可以适当补充完善*/
private static boolean pointPosition(Line l,Point p){
if(l.isVertical()){
if(p.getX()- l.getC()<0) return true;
else return false;
}else{
if(p.getY()-l.getK()*p.getX()-l.getC()>0)
return true;
else
return false;
}
}
/*根据点数组判定是否是凸多边形*/
public static boolean isCp(Point[] ps){
if(ps.length<3) // 点数大于等于三
return false;
boolean isLeft = false; //某点是否在另外两点组成直线的左边
Line l = null;
for(int i=0;i<ps.length-1;i++){
boolean isFirstTime = true;
label:
for(int j=i+1;j<ps.length;j++){
l = new Line(ps[i],ps[j]);
int times = 0;
for(int k=0;k<ps.length;k++){
if(k==i || k == j)
continue;
if(isFirstTime){ //记录第一点相对直线的位置,是否在其左边
isFirstTime = false;
isLeft = pointPosition(l, ps[k]);
times ++;
}else{
boolean isL = pointPosition(l, ps[k]);
times++;
if(isLeft != isL){ //各点不在直线l的同一边,换线
continue label;
}
if(isLeft == isL && times == ps.length-2 )
return true;
}
}

}
}

return false;
}
public static void main(String[] args){
Point[] ps= new Point[4]; //这个数字可以由main参数来控制
ps[0] = new Point(1,1);
ps[1] = new Point(8,8);
ps[2] = new Point(9,0);
ps[3] = new Point(0,9);
System.out.println( Mshape.isCp(ps));

}

}
class Point{
public Point(){

}
public Point(double x,double y){
this.x = x;
this.y = y;
}
public double getX() {
return x;
}
public void setX(double x) {
this.x = x;
}
public double getY() {
return y;
}
public void setY(double y) {
this.y = y;
}

private double x;
private double y;
}

class Line {
private double k;//斜率
private double c;//常数
private boolean isVertical = false; //是否垂直直线
public Line(){};
public Line(Point p1,Point p2){
if(p1.getY()-p2.getY() != 0){
this.k = (p1.getY()-p2.getY())/(p1.getX()-p2.getX());
this.c = p1.getY()-k*p1.getX();
}else{ //垂直线
this.c = p1.getX();
this.isVertical = true;
}

}
public Line(Double k,Double c){
this.k = k;
this.c = c;
}

public double getK() {
return k;
}
public void setK(double k) {
this.k = k;
}
public double getC() {
return c;
}
public void setC(double c) {
this.c = c;
}
public boolean isVertical() {
return isVertical;
}
public void setVertical(boolean isVertical) {
this.isVertical = isVertical;
}

}

Ⅵ java中如何写一个射线法,判断点是否在多边形内

楼上的方法判断不准。
鉴定完毕。
三角形内点与顶点的连线斜率一定在对应的两直线斜率之间,斜率好计算吧

阅读全文

与点在多边形内java相关的资料

热点内容
东方财富app筹码蓝色和红色是什么 浏览:564
pr安装文件夹图标变白 浏览:177
如何用服务器建设网站 浏览:347
定时闹钟单片机课程设计 浏览:537
腰椎压缩性骨折症状 浏览:466
绝地求生全军出击的服务器什么时候开 浏览:490
怎么入侵游戏服务器篡改数据 浏览:734
线性压缩机原理 浏览:540
javanewinstance 浏览:815
程序员第一玄学 浏览:496
精品源码怎么算 浏览:491
加密技术在现实中应用体会 浏览:180
单片机如何换晶振 浏览:206
合并两个数组java 浏览:13
命令标注圆半径怎么用 浏览:659
出差人员电脑加密 浏览:248
文件夹0项什么意思 浏览:603
空调冷媒压缩机启动 浏览:912
流氓文件夹怎么强制删除 浏览:783
嵌入式基础命令 浏览:526