1 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊
您所要做的就是在連續(xù)點(diǎn)之間畫(huà)線。
點(diǎn)的下一個(gè)索引i是i+1。%對(duì)于最后一個(gè)點(diǎn),它是 0。這可以通過(guò)模 ( ) 運(yùn)算符 (h )來(lái)實(shí)現(xiàn)(i+1) % points.size()。
獲取循環(huán)中的 2 個(gè)連續(xù)點(diǎn)并在它們之間畫(huà)一條線:
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);? ?
}
參見(jiàn)示例:
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);? ?
? ? }
}
添加回答
舉報(bào)