java 畫一個曲線執行個體代碼(二款網頁特效phttp://www.111cn.net/網頁特效p.html target=_blank >jsp教程繪製曲線執行個體)
/*
參數名 描 述
畫出模式 必需的; 整數型。參數值可以為以下常量: 6912、#點,將畫出的多邊形顯示為點; 6913、#線,將畫出的多邊形顯示為線段;
曲線起點 必需的; 整數型。參數值應該介於 0 和"設定曲線等分點"命令中的"u向等分數"之間。
曲線終點 必需的; 整數型。參數值應該介於 0 和"設定曲線等分點"命令中的"u向等分數"之間
*/
public class test {
public static void main(string[] args) {
trifunc tri = new trifunc();
// 產生一塊25×100的畫布
canvas canvas = new canvas(25, 120);
// 畫sin曲線,周期為2
tri.drawsin(canvas, 2.0);
canvas.printcanvas();
system.out.println();
canvas.reset();
// 畫cos曲線,周期為2
tri.drawcos(canvas, 2.0);
canvas.printcanvas();
}
}
class trifunc {
/**
* 畫sin曲線
* @param canvas 畫布
* @param period 曲線周期
*/
public void drawsin(canvas canvas, double period) {
char[][] chars = canvas.getcanvas();
// x 軸的比率
double xratio = (2 * period * math.pi) / (canvas.getwidth() - 1);
// y 軸的放大倍率
int ymulti = (canvas.getheight() - 1) / 2;
for(int i = 0; i < canvas.getwidth(); i++) {
// 將數組索引映射為橫座標值
double k = (i - canvas.getwidth() / 2) * xratio;
// 將sin值對應為數組索引
int h = ymulti - (int)math.round(math.sin(k) * ymulti);
chars[h][i] = canvas.fill_char;
}
}
/**
* 畫cos曲線
* @param canvas 畫布
* @param period 曲線周期
*/
public void drawcos(canvas canvas, double period) {
char[][] chars = canvas.getcanvas();
double xratio = (2 * period * math.pi) / (canvas.getwidth() - 1);
int ymulti = (canvas.getheight() - 1) / 2;
for(int i = 0; i < canvas.getwidth(); i++) {
double k = (i - canvas.getwidth() / 2) * xratio;
int h = ymulti - (int)math.round(math.cos(k) * ymulti);
chars[h][i] = canvas.fill_char;
}
}
}