由於寫論文要將“哈密頓回路問題(TSP)”的求解中間結果表示出來,查了一下使用程序畫多邊形圖形。現在在總結一下,這個圖是“由給定節點首尾相連的”閉合多邊形。
1.使用matlab作閉合多邊形圖
沒有找到直接畫多邊形的函數,只能是將各個點的坐標保存在數組中,將一個點與其相鄰的點相連,並將最后一個點與第一個點連接。下面是一個示例的.m文件:
clear; clc; a=[0 2 4 6 8 10 12 14;0 2 1 4 6 6 5 7]; %要連接的點坐標 x;y [n,m]=size(a); for i=1:m-1; line([a(1,i),a(1,i+1)],[a(2,i),a(2,i+1)]); %連接節點line([x1,x2],[y1,y2]) hold on end hold on line([a(1,1),a(1,m)],[a(2,1),a(2,m)]); %首尾節點相連
2.使用Java作閉合多邊形圖
Java中的Graphics類drawPolygon函數提供了直接的多邊形作圖。
函數原型:public abstract void drawPolygon(int[] xPoints, int[] yPoints,int nPoints)
說明:(1)繪制一個由 x 和 y 坐標數組定義的閉合多邊形。每對 (x, y) 坐標定義了一個點。nPoints表示線段的個數。
(2)前面的 nPoint - 1
個線段是當 1 ≤ i ≤ nPoints
時,從 (xPoints[i-1], yPoints[i-1])
到 (xPoints[i], yPoints[i])
的線段。如果最后一個點和第一個點不同,則圖形會通過在這兩點間繪制一條線段來自動閉合。
代碼示例如下:
import java.applet.*; import java.awt.*; public class DrawPicture extends Applet { public void paint(Graphics g) { int px[]={20,70,130,240}; int py[]={20,150,100,130}; g.drawPolygon(px,py,4); } }
執行結果:
3.說明
是否能構成多邊形,凸多邊形,還是凹多邊形,這些與給定的點的順序有關。
程序只是負責將相鄰的節點連接, 以及首尾連接。