我有一组建立形状的X和Y点,我需要知道对象是否在其中,该对象的计算是什么?
X和Y坐标示例:
522.56055 2389.885
544.96 2386.3406
554.18616 2369.2385
535.21814 2351.396
497.5552 2355.8396
我对数学不是很满意:(因此,我希望得到一些支持来理解它的完成方式。
我到目前为止的例子,但似乎并不十分可靠:
private boolean isInsideShape(Zone verifyZone, Position object)
{
int corners = verifyZone.getCorners();
float[] xCoords = verifyZone.getxCoordinates();
float[] yCoords = verifyZone.getyCoordinates();
float x = object.getX();
float y = object.getY();
float z = object.getZ();
int i, j = corners - 1;
boolean inside = false;
for(i = 0; i < corners; i++)
{
if(yCoords[i] < y && yCoords[j] >= y || yCoords[j] < y && yCoords[i] >= y)
if(xCoords[i] + (y - yCoords[i]) / (yCoords[j] - yCoords[i]) * (xCoords[j] - xCoords[i]) < x)
inside = !inside;
j = i;
}
return inside;
}
您可以从这里开始:http :
//en.wikipedia.org/wiki/Point_in_polygon
您可能还会研究JTS拓扑套件。特别是使用此功能。
编辑 :这是使用JTS的示例:
import java.util.ArrayList;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.LinearRing;
import com.vividsolutions.jts.geom.Point;
import com.vividsolutions.jts.geom.Polygon;
import com.vividsolutions.jts.geom.impl.CoordinateArraySequence;
public class GeoTest {
public static void main(final String[] args) {
final GeometryFactory gf = new GeometryFactory();
final ArrayList<Coordinate> points = new ArrayList<Coordinate>();
points.add(new Coordinate(-10, -10));
points.add(new Coordinate(-10, 10));
points.add(new Coordinate(10, 10));
points.add(new Coordinate(10, -10));
points.add(new Coordinate(-10, -10));
final Polygon polygon = gf.createPolygon(new LinearRing(new CoordinateArraySequence(points
.toArray(new Coordinate[points.size()])), gf), null);
final Coordinate coord = new Coordinate(0, 0);
final Point point = gf.createPoint(coord);
System.out.println(point.within(polygon));
}
}
这是使用AWT的示例(它更简单,是Java SE的一部分):
import java.awt.Polygon;
public class JavaTest {
public static void main(final String[] args) {
final Polygon polygon = new Polygon();
polygon.addPoint(-10, -10);
polygon.addPoint(-10, 10);
polygon.addPoint(10, 10);
polygon.addPoint(10, -10);
System.out.println(polygon.contains(0, 0));
}
}
本文向大家介绍Android使用FontMetrics对象计算位置坐标,包括了Android使用FontMetrics对象计算位置坐标的使用技巧和注意事项,需要的朋友参考一下 Canvas绘制文本时,使用FontMetrics对象,计算位置的坐标。 它的各基准线可以参考下图: 上图其实是通过代码画出来的,具体代码如下: 相信通过以上程序,能够很好的理解topLine,buttomLine,base
我有一个小立方体,它的表面有n个(你可以假设n=4)个可分辨的点。这些点被编号(1-N),并形成一个坐标空间,其中点#1是原点。 现在我用一个跟踪相机来获取这些点的坐标,相对于相机的坐标空间。这意味着我现在有n个向量从相机的原点指向立方体的表面。 有了这些信息,我试图计算仿射变换矩阵(旋转+平移),它代表了这两个坐标空间之间的变换。平移部分是相当琐碎的,但我正在纠结于旋转矩阵的计算。 在OpenC
我得到以下错误:可能未处理的承诺拒绝(id:0:网络请求失败)有时错误id更改为id:3。有人能帮我吗? 从“React”导入React,{useState,useEffect};从“React-Native”导入{SafeAreaView,StyleSheet,Image,AsyncStorage}; 从“../components/SpotList”导入SpotList; 从“../asset
我显示了这个错误,但我不知道为什么: [15:52:26]TypeError:TypeError:undefined不是对象(计算“props.navigationstate.index”)
问题内容: 我有一个从json_decode创建的stdClass对象,当我运行count($ obj)函数时不会返回正确的数字。该对象具有30个属性,但count()函数的返回值为1。 有任何想法吗? 以下是其中一个对象的示例。(我正在从Twitter请求每日趋势信息)。如果此对象具有多个属性,则count($ obj)等于1。 问题答案: 问题在于count的目的是对数组中的索引进行计数,而不