導航:首頁 > 編程語言 > 點在多邊形內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相關的資料

熱點內容
php生成word圖片 瀏覽:799
程序員和你是我的命中註定 瀏覽:56
邊緣檢測計演算法 瀏覽:459
bldc紋波演算法 瀏覽:34
win7kms命令 瀏覽:477
java修改類名 瀏覽:703
產權pdf 瀏覽:194
淘寶可以出售程序源碼嗎 瀏覽:357
我的世界指令命令方塊 瀏覽:303
java窗口大小設置 瀏覽:966
小益智能加密卡怎麼用 瀏覽:989
java微信接入 瀏覽:105
程序員進階到高級教程 瀏覽:275
雲城伺服器新手拉什麼賺錢快 瀏覽:468
美利達騎行app叫什麼 瀏覽:892
呼吸機演算法 瀏覽:813
app維度是什麼意思 瀏覽:600
泰拉瑞亞為什麼進不去聯機伺服器 瀏覽:910
ftplist命令 瀏覽:803
戴爾英文版為什麼不能壓縮文件夾 瀏覽:405