簡體   English   中英

如何將一條線分成多個線段?

[英]How to divide a line into multiple line segments?

我試圖將一條線分成多個部分。 因為我在下面創建了一個函數來嘗試獲得兩點之間的子點。 它不是很有效,但幾乎就在那里。 理想情況下,我想使用這樣的東西:

subPoint(point1, point2, 5, 10);  // this would return the half way point
subPoint(point1, point2, 1, 10);  // this would return a point 1 tenth towrds point2

以下是粗略的代碼 - 非常歡迎任何提示或指示。

Vector subPoint(Vector startPoint, Vector endPoint, int segment, int totalSegments) {

  int division = (int)(totalSegments / segment);

  PVector divPoint = new PVector();

  int midX=(int)(startPoint.x+((endPoint.x-startPoint.x)/division));
  int midY=(int)(startPoint.y+((endPoint.y-startPoint.y)/division));

  divPoint.set(midX, midY, 0);

  return(divPoint);
}

嘗試使用以下內容替換計算:

int midX = (startPoint.x + (int) ((double) (endPoint.x - startPoint.x) / (double) totalSegments) * segment);
int midY = (startPoint.y + (int) ((double) (endPoint.y - startPoint.y) / (double) totalSegments) * segment);

我將值轉換為雙精度值,以使計算更加准確。 您可能需要考慮將值保持為雙精度,這樣可以在線段上提供更好的准確性。

你正在使用整數數學。 也許你的Vector應該使用花車或雙打?

感謝Kris的幫助。 這是完整的子點函數Processing / Java代碼,現在可供其他可能需要它的人使用。

PVector subPoint(PVector startPoint, PVector endPoint, int segment, int totalSegments) {

  PVector p1 = new PVector();

  float midX = (startPoint.x + (int) ((double) (endPoint.x - startPoint.x) / (double) totalSegments) * segment);
  float midY = (startPoint.y + (int) ((double) (endPoint.y - startPoint.y) / (double) totalSegments) * segment);

  p1.set(midX, midY, 0);   

  return(p1);
}

我喜歡這一行

int division = totalSegments = segment;

但我懷疑你想保留它:-)(不知道是否有更多的錯誤)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM