HTML5のCanvasで3Dの球体を描く方法を徹底解説
HTML5 Canvasで3D球体を描く基本の考え方
HTML5ではCanvas要素とJavaScriptを組み合わせることで、ブラウザ上に3Dの球体を描画できます。基本的なアプローチは、3D空間上の点(頂点)を三角関数で計算し、それらを順に描画していくというものです。
以下は、指定した半径をもとに球体を構成する点群を生成する関数の例です。
function display(r) {
this.point = new Array();
this.color = "blue";
this.r = (typeof(r) == "undefined") ? 20.0 : r;
this.r = (typeof(r) != "number") ? 20.0 : r;
this.vertexes = 0;
for(alpha = 0; alpha <= 6.28; alpha += 0.17) {
p = this.point[this.vertexes] = new Point3D();
p.x = Math.cos(alpha) * this.r;
p.y = 0;
p.z = Math.sin(alpha) * this.r;
this.vertexes++;
}
}
コードの仕組み
この関数の処理の流れは次のとおりです。
- 半径の初期化:引数
rが未定義または数値以外の場合は、デフォルト値の20.0を使用します。 - 頂点の生成:角度
alphaを0から約6.28(=2π、円一周分)まで0.17ずつ増やしながらループします。 - 座標の計算:
Math.cos(alpha)とMath.sin(alpha)に半径を掛け合わせて、X座標とZ座標を求めます。 - 格納:各点を
Point3Dオブジェクトとして配列this.pointに保存し、頂点数をカウントしていきます。
より本格的な球体を描くには
このコードではY座標が常に0のため、実際には水平面上の「リング(円)」を描いている状態です。完全な立体としての球体を表現するには、さらなる工夫が必要です。
- 2つの角度を使う:水平方向の角度(経度)に加えて垂直方向の角度(緯度)も用意し、二重ループで球面全体の頂点を生成します。
- 射影変換:3D座標を2D画面に表示するため、透視投影の計算を行います。
- ライブラリの活用:Three.jsなどの3Dライブラリを使えば、複雑な数学処理を意識せずに高品質な3Dグラフィックスを手軽に実装できます。
まずはシンプルなコードで仕組みを理解し、段階的に機能を拡張していくのがおすすめです。
-
HTML5のarc()メソッドで円を描く方法をわかりやすく解説
HTML5では、<canvas>要素とarc()メソッドを組み合わせることで、簡単に円を描くことができます。完全な円を描きたい場合は、開始角度を「0」、終了角度を「2 * Math.PI」に指定するのがポイントです。 arc()メソッドのパラメータ一覧 arc()メソッドには、以下の6つのパラメータを渡します。 No.パラメータ説明 1x円の中心のx座標 2y円の中心のy座標 3r円の半径 4startingAngle描画開始の角度(ラジアン単位) 5endingAngle描画終了の角度(ラジアン単位) 6counterclockwise(true / false)反時計回りに
-
HTML5のlineTo()メソッドで線を描画する方法
HTML5のlineTo()メソッドで線を描画する方法HTMLで線を描画するには、canvas要素を使用します。canvas上に線を引く際に活躍するのがlineTo()メソッドです。このメソッドはx座標とy座標の2つのパラメータを受け取り、指定した位置までの直線を定義します。lineTo()メソッドは単独では機能せず、以下のメソッドと組み合わせて使用するのが基本の流れです。beginPath(): 新しいパスの作成を開始するmoveTo(): 線の始点となる座標を指定するlineTo(): 線の終点となる座標を指定するstroke(): 定義したパスを実際に画面へ描画するサンプルコード以下のコ