1 回答

TA貢獻1804條經驗 獲得超3個贊
您所要做的就是在連續點之間畫線。
點的下一個索引i是i+1。%對于最后一個點,它是 0。這可以通過模 ( ) 運算符 (h )來實現(i+1) % points.size()。
獲取循環中的 2 個連續點并在它們之間畫一條線:
for (int i = 0; i < points.size(); ++ i) {
? ? Point p1 = points.get(i);
? ? Point p2 = points.get((i+1) % points.size());
? ? line(p1.x, p1.y, p2.x, p2.y);? ?
}
參見示例:
void draw () {
? ? background (255);
? ? int gridW = width/n_part;
? ? int gridH = height/n_part;
? ? strokeWeight(1);
? ? stroke(210);
? ? noFill();
? ? for (int row = 0; row < n_part; row++){?
? ? ? ? int gridY = 0 + row*gridH;
? ? ? ? for (int col = 0; col < n_part; col++) {
? ? ? ? ? ? int gridX = 0+ col* gridW;
? ? ? ? ? ? rect (gridX, gridY, gridW, gridH);? ?
? ? ? ? }
? ? }
? ? stroke(0, 0, 0);
? ? fill(0);
? ? for (int i = 0; i < points.size(); ++ i) {
? ? ? ? Point p = points.get(i);
? ? ? ? p.Draw();
? ? }
? ? strokeWeight(3);
? ? stroke(255, 0, 0);
? ? for (int i = 0; i < points.size(); ++ i) {
? ? ? ? Point p1 = points.get(i);
? ? ? ? Point p2 = points.get((i+1) % points.size());
? ? ? ? line(p1.x, p1.y, p2.x, p2.y);? ?
? ? }
}
添加回答
舉報