我在二维空间中有一个正方形(宽度=高度)。该正方形当前由两个点定义:BottomLeft(X1,Y1) 和 TopRight(X2,Y2)。
正方形是轴对齐的,因此找到其他两个角就像 (X1, Y2) 和 (X2, Y1) 一样简单。
我还有两点——一是总是在方阵内,二是肯定在方阵外。它们不一定位于广场的中心——它们可以位于任何地方。我也知道他们的坐标。
我需要的是找到这两点定义的线段与正方形边之间的交点。我还想知道我与正方形的哪一边相交。给我带来麻烦的是线对角线延伸并且靠近正方形角的情况 - 例如它可以与顶线或边线相交。
暴力法是尝试计算正方形每条边的交点并检查它是否存在。可以通过计算第二个点相对于正方形的位置并丢弃两条线来优化它(例如,如果 X 和 Y 坐标都增加,则无需检查正方形的底部和左侧)。
我想知道是否有更好/更快的解决方案来解决我的问题?我会用Java写
我正在使用 postgres/postGIS 我有两个我有兴趣查询的表:
table A: contains geometry values as (POINT) such as (P1, P2,P3,...)
table B: contains geometry values as (POLYGON) such as (Polygon 1, polygon 2, ...)
Run Code Online (Sandbox Code Playgroud)
我试图找到每个点位于哪个多边形内。我最有可能寻找的答案列出了点及其包含的多边形,例如:
| 观点 | 多边形 |
|---|---|
| P1 | 多边形3 |
| P2 | 多边形1 |
我尝试过以下内容:
SELECT *
FROM area, points
WHERE st_intersects(area.polygons, points.point) ;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ERROR: ST_Intersects: Operation on mixed SRID geometries (Polygon, 4326) != (Point, 8307)
非常感谢您的帮助。
我有两个使用以下代码的 ecdf 图:
ecdf1 <- ecdf(data1)
ecdf2 <- ecdf(data2)
Run Code Online (Sandbox Code Playgroud)
这些情节相互交叉。我需要获取交叉点(交点)坐标。我应该如何在 R 中执行此操作?
我有2个向量,每个向量由2 Point3D(原点和方向)定义.我需要找出他们交叉点的意义.总是欢迎一点帮助.我将发布我的功能,这给了我错误的输出.
public static CurvIntersect3D Intersect2Linii3D (Vector3D dr1, Vector3D dr2) {
CurvIntersect3D result = new CurvIntersect3D(0, null);
double x = Math3D.VectorNorm3D(dr1.getDirectie());
double t = Math3D.VectorNorm3D(dr2.getDirectie());
double cosa = (dr1.getDirectie().getX()*dr2.getDirectie().getX() + dr1.getDirectie().getY()*dr2.getDirectie().getY() + dr1.getDirectie().getZ()*dr2.getDirectie().getZ()) / (t*x);
Punct3D p1 = dr1.getOrigine();
Punct3D p2 = new Punct3D(), p3 = new Punct3D();
for (int i=0; i<3; i++)
{
p2.set(i, dr1.getOrigine().get(i) + dr1.getDirectie().get(i));
p3.set(i, dr1.getOrigine().get(i) + dr2.getDirectie().get(i));
}
Matrici.Matrice3x3 rot = Math3D.GetMatriceRotatie(p1, p2, p3);
Punct3D orig = new Punct3D();
for (int i=0; i<3; i++) …Run Code Online (Sandbox Code Playgroud) 我目前正在做以下作业:
CREATE TABLE T_1
(COURSE_NO CHAR(8) PRIMARY KEY,
COURSE_NAME CHAR(50) );
CREATE TABLE T_2
(COURSE_NO CHAR(8),
COURSE_NAME CHAR(50) );
CREATE TABLE T_3
(COURSE_NO CHAR(8),
STUDENT_ID CHAR(15),
GRADE CHAR (2));
INSERT INTO T_1
VALUES
('CS100','Data Structures'),
('CS200','Object Oriented Programming'),
('CS300','Distributed Systems'),
('EE100','Circuit Analysis'),
('EE200','VLSI Design'),
('EE300','Packet Switching Networks');
INSERT INTO T_2
VALUES
('EE100','Circuit Analysis'),
('EE200','VLSI Design'),
('EE300','Packet Switching Networks'),
('MA100','Calculus'),
('MA200','Advanced Calculus'),
('MA300','Number Theory');
INSERT INTO T_3
VALUES
('CS100','150-70-5879','B'),
('CS100','280-90-8766','A'),
('EE100','430-76-6858','B'),
('CS200','720-60-5000','B');
Run Code Online (Sandbox Code Playgroud)
我被要求指定给定的元组:(T1-T2)联合(T2-T1)联合(T1与T2相交).
现在我知道MySQL使用了,或者为减号运算符加入,我能够以自己的方式处理每个减号,如:
SELECT *
FROM T_1
LEFT JOIN T_2 …Run Code Online (Sandbox Code Playgroud) 想象一下,有两个功能.您需要找到该功能的交叉点.您绝对不想尝试检查所有x值f(x)==g(x).通常在数学中,您可以创建从中派生的联立方程f(x)==g(x).但我认为如何用任何编程语言实现方程式都没办法.
再一次,我在寻找什么:
我相信应该有一些使用函数派生的解决方法,但我最近在学校学习了派生概念,我不知道如何在这种情况下使用它.
我在python中有2D列表
list = [[9, 2, 7], [9, 7], [2, 7], [1, 0], [0, 5, 4]]
Run Code Online (Sandbox Code Playgroud)
如果出现任何交叉点,我想获得列表项的联合.例如[9, 2, 7],[9, 7],[2, 7]具有多于一个位的交叉点.这种联盟将是[9,2,7].
如何以有效的方式获得如下最终列表?
finalList = [[9,2,7], [0, 1, 5, 4]]
Run Code Online (Sandbox Code Playgroud)
NB数字顺序并不重要.
我有两个对象,我需要确定它们是否会在将来的某个时间发生碰撞.假设两个物体是卡车,每个都在它们的独立车道上.第一辆卡车想改变车道,但卡车是否会碰撞?
两个物体都向前移动,但只有第一个物体有一个角度.物体以不同的,不同的速度移动,但只知道第二物体的速度.此外,这两个对象在不同的坐标系上运行(意味着每个对象都有一个新的原点),对象之间的距离也不同.
我没有第一个物体的矢量,但是我确实有一个相对于x轴的角度(不固定).
对于第二个对象,我有一个向量,它是直的.
请参考下图:

如何根据这些标准找到交叉点?我想这个角度是一条无限的线,它在某个点上会越过第二个物体的矢量幅度.我不认为这比计算两条线的交点更直接.
包起来:
我有一个关联数组
$preans[$id]...
Run Code Online (Sandbox Code Playgroud)
它有很多与之相关的数据$id.
我还有另一个阵列
$affected_feature_ids[$id] = TRUE;
Run Code Online (Sandbox Code Playgroud)
现在我想$preans只保留那些存在的索引$affected_feature_ids.
怎么做?
我有两个列表:
a = ['item.1','item.2','item.3', 'another_item']
b = ['item.4','item.5', 'another_item']
Run Code Online (Sandbox Code Playgroud)
我将元素拆分为最终
a = ['item', 'item', 'item', 'another_item']
b = ['item', 'item', 'another_item']
Run Code Online (Sandbox Code Playgroud)
我想找到实际的共享项目,最后得到
c = ['item','item', 'another_item']
Run Code Online (Sandbox Code Playgroud)
但set(a).intersection(b)会回报我['item', 'another_item']
和
c = [x for x in list1 if x in list2] 退货 ['item', 'item', 'item', 'another_item']
我的列表实际上是由其他出现多次的项目组成的,因此,我不能仅仅找出哪个列表包含“ item”出现次数最少的列表并对其进行迭代(如果它包含更多的“ another_item”出现次数)。我还能尝试什么?