Google Earthから、次のような画像の座標が記載されたボックスを入手しました。
<LatLonBox>
<north>53.10685</north>
<south>53.10637222222223</south>
<east>8.853144444444444</east>
<west>8.851858333333333</west>
<rotation>-26.3448</rotation>
</LatLonBox>
次に、このLatLonBoxと交差するポイントの天気をテストします。ポイントがLatLonBoxと交差するかどうかを確認する基本的なアイデアは、ポイントを指定された角度だけ回転させて戻し、ポイントが通常の(回転されていない)長方形と交差するかどうかをテストすることでした。
回転を手動で計算しようとしました:
public static MyGeoPoint rotatePoint(MyGeoPoint point, MyGeoPoint origion, double degree)
{
double x = origion.getLatitude() + (Math.cos(Math.toRadians(degree)) * (point.getLatitude() - origion.getLatitude()) - Math.sin(Math.toRadians(degree)) * (point.getLongitude() - origion.getLongitude()));
double y = origion.getLongitude() + (Math.sin(Math.toRadians(degree)) * (point.getLatitude() - origion.getLatitude()) + Math.cos(Math.toRadians(degree)) * (point.getLongitude() - origion.getLongitude()));
return new MyGeoPoint(x, y);
}
public boolean intersect(MyGeoPoint geoPoint)
{
geoPoint = MyGeoPoint.rotatePoint(geoPoint, this.getCenter(), - this.getRotation());
return (geoPoint.getLatitude() < getTopLeftLatitude()
&& geoPoint.getLatitude() > getBottomRightLatitude()
&& geoPoint.getLongitude() > getTopLeftLongitude()
&& geoPoint.getLongitude() < getBottomRightLongitude());
}
そして、結果は間違っているようです。
LatLonBox box = new LatLonBox(53.10685, 8.851858333333333, 53.10637222222223, 8.853144444444444, -26.3448);
MyGeoPoint point1 = new MyGeoPoint(53.106872, 8.852311);
MyGeoPoint point2 = new MyGeoPoint(53.10670378322918, 8.852967186822669);
MyGeoPoint point3 = new MyGeoPoint(53.10652664993972, 8.851994565566875);
MyGeoPoint point4 = new MyGeoPoint(53.10631650700605, 8.85270995172055);
System.out.println(box.intersect(point1));
System.out.println(box.intersect(point2));
System.out.println(box.intersect(point3));
System.out.println(box.intersect(point4));
結果はtrue、false、false、trueです。しかし、それは4倍真であるはずです。おそらく私は、推論に何らかの誤りを犯しています。緯度の値が上に向かって大きくなっているためかもしれません。しかし、私はフォーミュラを変更する方法を知りません。
助けが必要です ...
編集:私の基本的な考え方と公式は正しいと思います。また、私は同様の解決策を見つけました。リンクし、違いを見つけることができませんでした。
したがって、考えられる唯一のエラーの原因は、軸が比例していないことだと思います。したがって、問題はこれをどのように考慮するかです。
誰かがアイデアを持っていることを願っています。