- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有要画线的坐标列表。
实际上问题是这些坐标没有按顺序排列。
结束线的坐标是另一条线的起始线的坐标。如果任何一条线的结束线坐标与另一条线的起始坐标不匹配,则创建连接线列表。
线的坐标为startx,starty,endx,endy。
下面是线坐标列表。
3350 1500 3200 1500
1450 1750 1450 2200
1450 2200 2100 2200
2400 2200 2550 2200
2550 2200 2550 2350
2550 2350 2850 2350
2850 2350 2850 2700
2850 2700 3350 2700
3650 2700 3750 2700
3750 2700 3750 2600
3750 2600 5250 2600
5250 2600 5250 2350
5250 2350 5000 2350
4700 2350 4350 2350
4350 2350 4350 1600
4350 1600 3650 1600
3650 1600 3650 1500
3200 1500 3200 1750
3200 1750 1450 1750
这里最后两条线坐标实际上位于第二和第三位置。
3200 1500 3200 1750
3200 1750 1450 1750
我的要求是创建所有相互连接的线。
List<DeviceElement> outerListWire= new ArrayList<DeviceElement>(schematicImporter.listOfWires);
List<DeviceElement> innerListWire = new ArrayList<DeviceElement>(schematicImporter.listOfWires);
List<DeviceElement> listWireTemp = new ArrayList<DeviceElement>();
for (int j = 0; j < outerListWire.size(); j++) {
Wire wire1 = (Wire) outerListWire.get(j);
for (int i = 0; i < innerListWire.size(); i++) {
Wire wire2 = (Wire) innerListWire.get(i);
if (wire1.getEndPoint().getX() == wire2.getStartPoint().getX() && wire1.getEndPoint().getY() == wire2.getStartPoint().getY() ) {
if (!listWireTemp.contains(wire1)) {
listWireTemp.add(wire1);
System.out
.println("wire1 = " + wire1.getStartPoint().toString() + " = " + wire1.getEndPoint().toString());
innerListWire.remove(wire1);
}
if (!listWireTemp.contains(wire2)) {
listWireTemp.add(wire2);
System.out
.println("wire2 = " + wire2.getStartPoint().toString() + " = " + wire2.getEndPoint().toString());
innerListWire.remove(wire2);
}
}
}
}
我已经尝试了上面的代码,但坐标列表仍然没有按顺序排列。
最佳答案
根据以下假设进行更新:
所需的逻辑位于Main.java
中。我还创建了 Point.java 和 Line.java 来测试逻辑。如果您遇到任何问题,请随时告诉我。
Point.java
public class Point {
int x,y;
public Point(int x, int y) {
super();
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
@Override
public String toString() {
return "Point [x=" + x + ", y=" + y + "]";
}
}
Line.java
public class Line {
int x1,y1,x2,y2;
Point start,end;
boolean used;
public Line(int x1, int y1, int x2, int y2) {
super();
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
}
public Line(Point start, Point end) {
super();
this.start = start;
this.end = end;
}
public int getX1() {
return x1;
}
public void setX1(int x1) {
this.x1 = x1;
}
public int getY1() {
return y1;
}
public void setY1(int y1) {
this.y1 = y1;
}
public int getX2() {
return x2;
}
public void setX2(int x2) {
this.x2 = x2;
}
public int getY2() {
return y2;
}
public void setY2(int y2) {
this.y2 = y2;
}
public Point getStart() {
return start;
}
public void setStart(Point start) {
this.start = start;
}
public Point getEnd() {
return end;
}
public void setEnd(Point end) {
this.end = end;
}
public boolean isUsed() {
return used;
}
public void setUsed(boolean used) {
this.used = used;
}
@Override
public String toString() {
return "Line [x1=" + x1 + ", y1=" + y1 + ", x2=" + x2 + ", y2=" + y2 + "]";
}
}
Main.java
import java.util.ArrayList;
import java.util.List;
class Main {
public static void main(String args[]) {
List<Line> givenLines = new ArrayList<Line>();
givenLines.add(new Line(3350, 1500, 3200, 1500));
givenLines.add(new Line(1450, 1750, 1450, 2200));
givenLines.add(new Line(1450, 2200, 2100, 2200));
givenLines.add(new Line(2400, 2200, 2550, 2200));
givenLines.add(new Line(2550, 2200, 2550, 2350));
givenLines.add(new Line(2550, 2350, 2850, 2350));
givenLines.add(new Line(2850, 2350, 2850, 2700));
givenLines.add(new Line(2850, 2700, 3350, 2700));
givenLines.add(new Line(3650, 2700, 3750, 2700));
givenLines.add(new Line(3750, 2700, 3750, 2600));
givenLines.add(new Line(3750, 2600, 5250, 2600));
givenLines.add(new Line(5250, 2600, 5250, 2350));
givenLines.add(new Line(5250, 2350, 5000, 2350));
givenLines.add(new Line(4700, 2350, 4350, 2350));
givenLines.add(new Line(4350, 2350, 4350, 1600));
givenLines.add(new Line(4350, 1600, 3650, 1600));
givenLines.add(new Line(3650, 1600, 3650, 1500));
givenLines.add(new Line(3200, 1500, 3200, 1750));
givenLines.add(new Line(3200, 1750, 1450, 1750));
int linesIndex, usedCounter=0;
List<List<Line>> listOfConnectedLines = new ArrayList<List<Line>>();
//The start (first) line, in the list of given lines, to be processed to find the first set of connected lines
Line startLineforTheNextSetOfConnectedLines=givenLines.get(0);
startLineforTheNextSetOfConnectedLines.setUsed(true);
usedCounter = 1;
//Process the list of given lines until all the lines have been used to form the connected lines
while (usedCounter < givenLines.size()) {
linesIndex = 0;
List<Line> connectedLines = new ArrayList<Line>();
connectedLines.add(linesIndex, startLineforTheNextSetOfConnectedLines);
Line nextLine=null;
//Starting with startLineforTheNextSetOfConnectedLines, the variable lastArrangedLine will hold the next lines qualifying to become the connected line
Line lastArrangedLine=startLineforTheNextSetOfConnectedLines;
//Create the list of connected lines starting with startLineforTheNextSetOfConnectedLines
for (int i = 0; i < givenLines.size(); i++) {
for (int j = 0; j < givenLines.size(); j++) {
nextLine=givenLines.get(j);
if (!nextLine.isUsed() && lastArrangedLine.getX2() == nextLine.getX1()
&& lastArrangedLine.getY2() == nextLine.getY1()) {
nextLine.setUsed(true);
usedCounter++;
connectedLines.add(++linesIndex, nextLine);
lastArrangedLine = nextLine;
break;
}
}
}
//Add the list of connected lines (found from the above nested for loops) to the list of connected lines
listOfConnectedLines.add(connectedLines);
//Find the start (first) line for the next set of connected lines
for (int i = 0; i < givenLines.size(); i++) {
if(!givenLines.get(i).isUsed()) {
startLineforTheNextSetOfConnectedLines=givenLines.get(i);
startLineforTheNextSetOfConnectedLines.setUsed(true);
usedCounter++;
break;
}
}
}
//Display the lists of connected lines
for(List<Line> connectedLines:listOfConnectedLines)
System.out.println(connectedLines);
}
}
给定行列表的输出:
[Line [x1=3350, y1=1500, x2=3200, y2=1500], Line [x1=3200, y1=1500, x2=3200, y2=1750], Line [x1=3200, y1=1750, x2=1450, y2=1750], Line [x1=1450, y1=1750, x2=1450, y2=2200], Line [x1=1450, y1=2200, x2=2100, y2=2200]]
[Line [x1=2400, y1=2200, x2=2550, y2=2200], Line [x1=2550, y1=2200, x2=2550, y2=2350], Line [x1=2550, y1=2350, x2=2850, y2=2350], Line [x1=2850, y1=2350, x2=2850, y2=2700], Line [x1=2850, y1=2700, x2=3350, y2=2700]]
[Line [x1=3650, y1=2700, x2=3750, y2=2700], Line [x1=3750, y1=2700, x2=3750, y2=2600], Line [x1=3750, y1=2600, x2=5250, y2=2600], Line [x1=5250, y1=2600, x2=5250, y2=2350], Line [x1=5250, y1=2350, x2=5000, y2=2350]]
[Line [x1=4700, y1=2350, x2=4350, y2=2350], Line [x1=4350, y1=2350, x2=4350, y2=1600], Line [x1=4350, y1=1600, x2=3650, y2=1600], Line [x1=3650, y1=1600, x2=3650, y2=1500]]
关于java - 我有坐标列表,我的要求是安排它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58351952/
我有一个点(粉色圆圈),它有一个已知的 X 坐标和一个已知的 Y 坐标,但 Y 坐标> 坐标不正确。它当前位于目标贝塞尔曲线(部分位于白色正方形中的曲线)所在的点(如果它是两点之间的一条线)。我需要为
有一个基于QML 和QWT 的代码,一种具有更多可能性的图形生成器。技术要求之一是根据某个 X 坐标获得绘图曲线的 Y 坐标。 有一种不准确的方法 - 获取 QwtPlotCurve 的 QPoint
我目前正在将对象的 3D 坐标转换为 2D 坐标,然后在其上绘制 2D 文本(目前是对象名称): public static int[] getScreenCoords(double x, doubl
首先,我创建一个元组列表(要绘制的点)。每个元组由 3 个数字组成(x - 坐标,y - 坐标,c - 点的颜色) import random import matplotlib.pyplot as
我正在制作一个 2 人 Java 游戏,但我需要确保坐标保留在板上。 addPiece(1, 1, "X"); addPiece(8, 8, "O"); showBoard(); Scanner my
我想检查我是否正确使用了 scipy 的 KD 树,因为它看起来比简单的暴力破解要慢。 关于这个我有三个问题: Q1. 如果我创建以下测试数据: nplen = 1000000 # WGS84 lat
我有一个 GeoJSON 文件,我正在尝试处理它以便在谷歌地图上绘制一些功能。然而,问题在于坐标不是传统的纬度/经度表示法,而是一些大的六位/七位数字。示例: { "type":
我在使用坐标时遇到格式化问题。 public class Coordinate { public int x; public int y; public Coordinate( int x
我正在尝试获取当前位置的经度和纬度坐标。这是到目前为止我的代码: public class MainActivity extends AppCompatActivity { @Override pro
基本上,我需要获取从 OpenGL 中的贝塞尔曲线实现绘制的所有坐标。具体来说,我需要坐标来沿着弯曲的轨迹路径移动场景中的球体对象(棒球)。这是我用来绘制曲线的: GL2 gl = drawable.
现在我用 JAVA 遇到了一些问题,但不记得如何获取坐标系之间的长度。 例如。A 点 (3,7)B点(7,59) 我想知道如何计算a点和b点之间的距离。非常感谢您的回答。 :-) 最佳答案 A = (
我正在用 Pi2Go 机器人制作一个小项目,它将从超声波传感器获取数据,然后如果它看到一个物体,则放置一个 X,并放置 O 它当前所在的位置,我有两个问题:如何在 tkinter 上设置坐标位置?例如
如何在 pygame 中存储对象的先前坐标?我的问题可能有点难以解释,但我会尽力,如果您自己尝试我的代码以理解我的意思可能会有所帮助。 这就是我的游戏的内容。我希望这能让我的问题更容易理解。 我正在创
如何存储用户的当前位置并在 map 上显示该位置? 我能够在 map 上显示预定义的坐标,只是不知道如何从设备接收信息。 此外,我知道我必须将一些项目添加到 Plist 中。我怎样才能做到这一点? 最
我在 android 应用程序开发方面不是很熟练,我正在开发一个测试应用程序。我检测到了脸和眼睛,现在我要根据眼睛的坐标在脸上画一些像粉刺或疤痕的东西(例如脸颊上的眼睛下方)。稍后,我会把眼镜或帽子放
所以我正在使用 API 来检测图像中的人脸,到目前为止它对我来说效果很好。然而,我一直无法弄清楚如何将图像裁剪到脸上。我知道如何裁剪位图,但它需要获取位图中脸部的左上角位置以及宽度和高度。当我使用 查
我有 2 个表。第一个表包含以下列:Start_latitude、start_longitude、end_latitude、end_longitude、sum。 sum 列为空,需要根据第二张表进行填
有没有办法给 Google Maps API 或类似的 API 一个城镇名称,并让它返回城镇内的随机地址?我希望能够将数据作为 JSON 获取,以便我可以在 XCode 中使用 SwiftyJSON
我将坐标保存在 numpy 数组 x 和 y 中。现在我想要的只是获得一个多边形(分别是点数组),它用给定的宽度参数定义周围区域。 我遇到的问题是我需要一个没有(!)交叉点的多边形。但是,当曲线很窄时
我正在开发井字游戏 (3x3),所以我有 9 个按钮,我想做的是获取用户按下的按钮的坐标,并在按钮的位置插入图像。 例子: @IBOutlet weak var button1Outlet: UIBu
我是一名优秀的程序员,十分优秀!