我希望這不會太令人困惑:
我有一條線,點在 (x1,y1) 和 (x2,y2) 處。我需要的是一種方法,它只會以整數的增量回傳它們之間的每個點。
(例如:從 (0,20) 到 (0,40) 的線會給我 (0,20)、(0,21)、(0,22) 等等)
任何幫助將非常感激!
uj5u.com熱心網友回復:
假設Line有int坐標,您可以使用IntStream:
Line line = new Line(0, 20, 0, 40);
int startX = (int) Math.round(line.getStartX());
int endX = (int) Math.round(line.getEndX());
int startY = (int) Math.round(line.getStartY());
int endY = (int) Math.round(line.getEndY());
int[][] points = IntStream.rangeClosed(startX, endX).boxed()
.flatMap(x -> IntStream.rangeClosed(startY, endY)
.mapToObj(y -> new int[]{x, y})).toArray(int[][]::new);
System.out.println(Arrays.deepToString(points));
輸出:
[[0, 20], [0, 21], [0, 22], [0, 23], [0, 24], [0, 25], [0, 26], [0, 27], [0, 28], [0, 29], [0, 30], [0, 31], [0, 32], [0, 33], [0, 34], [0, 35], [0, 36], [0, 37], [0, 38], [0, 39], [0, 40]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/360171.html
上一篇:Java同步集合-價值是什么?
下一篇:如何從字串中的括號中獲取單詞?
