// 点を描画します。パラメータは点のサイズ、色、座標、ラベルです。明らかに opts パラメータはオブジェクトです
;
関数drawPoint(opts){
document.write("
(opts.point[2" ]?("" opts .point[2] "
"):"") "");
}
//線を描く
//p開始点
//エンドポイントをペンド
//パラメータを選択します
functiondrawLine(pstart, pend, opts){
var ph = 1;
var pw = 1;
var color = "DarkRed";
If(opts){
color = opts.color ? opts.color: color;
}
var の傾き; //傾き
var noSlope = false //傾斜はありますか
var hdist = pend[0] - pstart[0];
var vdist = pend[1] - pstart[1];
If(hdist != 0){
slope = Math.abs(vdist/hdist) //傾きを計算します
;
}その他{
noSlope = true; // hdist=0 の場合、直線には傾きがありません
}
var gapp = pw > ? ph : pw; // 隣接する点間のデフォルトの距離 (左上隅のピクセル)
var 対角線 = Math.sqrt(Math.pow(hdist,2) Math.pow(vdist,2)) //斜辺の長さ
var pn = parseInt(diagonal/gapp) // 2 点間の点の数を計算します
If(pn pn=0の場合
var vgap = Math.abs(vdist)/pn; //隣接する 2 点間の垂直距離
var hgap = Math.abs(hdist)/pn; //隣接する 2 点間の水平距離
for(var i = 0; i
アリティ
//hgap 隣接する 2 点間の水平距離
//vgap 隣接する 2 点間の垂直距離
//hgap*i*(pend[0]
//vgap*i*(pend[1]
//(pend[0]
//(pend[1]
//(noSlope?0:1) 直線に傾きがない場合、水平オフセットは 0
drawPoint({
pw: pw,
ふ: ふ、
カラー: カラー、
ポイント: [(hgap*i*(pend[0]
});
}
}
//ps 点の 1 次元配列
関数drawPolyline(ps){
もし(ps){
//線を描く
for(var i = 0; i
drawLine(ps[i], ps[i 1]);
}
//変曲点を描画
for(var i = 0; i
drawPoint({
pw: 3、
ph: 3、
カラー: 'RED'、
ポイント: ps[i]
});
}
}
}
ポリゴン:
//ポリゴン
//ps 点の 1 次元配列
関数drawPolygon(ps){
もし(ps){
//線を描く
for(var i = 0; i
drawLine(ps[i], ps[i 1]);
}
//閉じる
If(ps.length > 2){
drawLine(ps[ps.length-1], ps[0])
}
//変曲点を描画
for(var i = 0; i
drawPoint({
pw: 3、
ph: 3、
カラー: 'RED'、
ポイント: ps[i]
});
}
}
}
長方形:
//長方形を描画します
//leftTop 左上隅の点の位置
//幅幅
//高い高い
functiondrawRectangle(leftTop, width, high){
drawPolygon([
左上、
[leftTop[0]、leftTop[1] 高]、
[leftTop[0] 幅、leftTop[1] 高]、
[leftTop[0] 幅, leftTop[1]]
]);
//パディング
//document.write("");
}
JS でもこのような素晴らしいことができることがわかりました。注意深く研究する必要があります