検索
ホームページウェブフロントエンドCSSチュートリアル2Dグラフィックスを描画するための初心者のガイド。2.js

A Beginner's Guide to Drawing 2D Graphics With Two.js

two.jsは、コードを使用して2Dシェイプを簡単に作成できるAPIです。フォローすると、JavaScriptから形状を作成してアニメーション化する方法を学びます。ライブラリには、画面上に異なる形状がどのように表示されるか、またはアニメーション化されている方法を制御するために使用できる多くの方法があります。

グループ内の基本的な形状の作成
  • グラデーションの定義とテキストの作成テキストを定義し、テキストを作成します
  • GitHubからライブラリの模擬バージョンをダウンロードするか、CDNホストバージョンに直接リンクできます。ライブラリをWebページに追加したら、さまざまな形状やオブジェクトの描画とアニメーション化を開始できます。
  • 基本的な形状を作成する
  • 最初に、2Dを描画し、形状をアニメーション化する要素について2つのjsを伝える必要があります。いくつかのパラメーターをTwo.Makeline(x1、y1、x2、y2)
に渡すことができます。ここでは、2つのMakerectangle(x、y、width、height)

および2.makecircle(x、y、radius)

および2.makearrow(x1、y1、x2、y2、size)

メソッド。 y1

値は、矢印の尾の位置を決定します。 y2

値は、矢印の位置を決定します。 5番目のパラメーターは、矢印のサイズを決定します。

radiusと呼ばれるメソッドがあり、中心からのポリゴンの頂点の距離を決定します。この方法のパラメーターとして、異なるオブジェクトのリストを渡すか、オブジェクト、パス、またはグループの配列を渡すことができます。また、一度に記入

、linewidth

値を返します。実際、グループの位置を設定します。長方形はグループの一部であるため、自動的に移動します。練習のために、コードを変更し、長方形を2つの等しいグループに分割する必要があります。それらのそれぞれに別のストローク色の値を適用して、独自の幾何学的なアートピースを作成します。

勾配を定義し、テキストを作成する

2つの線形勾配とラジアル勾配の両方を2つで定義できます。JS。勾配を定義することは、画面上で自動的にレンダリングされることを意味するものではありませんが、2.makelineargradient(x1、y1、x2、y2、stops)を設定するときに使用できるようになります。値は新しい2.stop(offset、color、ofacity)、ここで2.makeradialgradient(x、y、radius、stops、fx、fy)。この場合、値2.maketext(message、x、y、styles)値。パラメーターの名前から、 message <code>messageが作成したい実際のテキストであることが明らかです。パラメーター x<code>xおよび y<code>yは、テキストを書くためのセンターとして機能するポイントの座標です。 styles <code>パラメーターは、大量のプロパティセットの値を設定するために使用できるオブジェクトです。<code>styles

スタイルを使用して、font code> size> size> size> size> alignment<p>などのプロパティの値を設定できます。また、<code> fill <code>、<code> stroke<code>family ofacity> ofacity> opacity> rotation<code>size scale <code>alignment、および翻訳<code>fillなどのプロパティの値を指定することもできます。このチュートリアルでは、2つの.jsを使用して、電子が核の周りを回転している周期表の最初の10の要素をレンダリングする方法を示します。また、核は、表現の視覚的魅力を改善するためのわずかな動きを持ちます。strokeopacity後で使用されるいくつかの変数と関数を定義することから始めます。これらは後で中央に原子を配置するために使用されます。 elementNames<code>rotation配列には、周期表の最初の10の要素の名前が含まれています。各名前のインデックスは、その要素の電子とプロトンの数に対応し、空の文字列から始まります。 styles <code>オブジェクトには、テキストオブジェクトをスタイリングするためのプロパティが含まれています。<code>scaletranslation関数 intrange()

を定義して、極端にランダムな整数値を取得します。赤/黒い放射状勾配は陽子を表し、青/黒い勾配は中性子を表します。

intrange()<p>関数を使用して、これらすべてのニュートロンとプロトンを互いに20ピクセル以内に配置しました。 <code> makecircle()

メソッドは、これらのプロトンと中性子の半径も10ピクセルに設定します。その後、 nucleusArray<p>を反復し、各円を別の勾配で交互に埋めます。</p> <pre class="brush:php;toolbar:false">var rects = [];&lt;br&gt;&lt;br&gt;var elemWidth = document.querySelector(&quot;#draw-shapes&quot;).offsetWidth;&lt;br&gt;&lt;br&gt;for (i = 0; i rects[i] = two.makeRectangle(&lt;br&gt; Math.floor(Math.random() * elemWidth * 2),&lt;br&gt; Math.floor(Math.random() * 420 * 2),&lt;br&gt; 10 + Math.floor(Math.random() * 100),&lt;br&gt; 10 + Math.floor(Math.random() * 100)&lt;br&gt; );&lt;br&gt;}&lt;br&gt;&lt;br&gt;var group = two.makeGroup(...rects);&lt;br&gt;&lt;br&gt;group.noFill();&lt;br&gt;group.stroke = &quot;black&quot;;&lt;br&gt;group.linewidth = 6;&lt;br&gt;&lt;br&gt;two.update();&lt;br&gt;</pre> <p>核内に中性子と陽子を配置するのは簡単でした。ただし、電子を均一な距離に適切に配置するには、少し数学が必要です。 <code>shellRadius変数を使用して、核からの異なる電子シェルの距離を指定します。円全体が2 piラジアンに等しい角度を覆います。 2つのPiラジアンをそれらの間に均等に分布させることにより、異なる電子を均一に配置できます。

Math.cos()Math.sin()および

関数は、角度に基づいて異なる電子の位置ベクトルの垂直および水平コンポーネントを分離するために使用されます。また、特定の軌道にあるすべての電子の充填色を一度に設定します。
var centerX = window.innerWidth / 2;<br>var centerY = window.innerHeight / 2;<br><br>var elem = document.getElementById("atoms");<br><br>var elementNames = [<br>  "",<br>  "Hydrogen",<br>  "Helium",<br>  "Lithium",<br>  "Beryllium",<br>  "Boron",<br>  "Carbon",<br>  "Nitrogen",<br>  "Oxygen",<br>  "Fluorine",<br>  "Neon"<br>];<br><br>var styles = {<br>  alignment: "center",<br>  size: 36,<br>  family: "Lato"<br>};<br><br>var nucleusCount = 10;<br>var nucleusArray = Array();<br><br>var electronCount = 10;<br>var electronArray = Array();<br><br>function intRange(min, max) {<br>  return Math.random() * (max - min) + min;<br>}<br>

コードのこの部分は、個々の電子とプロトンの不透明度をゼロに設定します。また、2つのjsに、特定の速度で電子とプロトンを回転させるように指示します。
var two = new Two({ fullscreen: true }).appendTo(elem);<br><br>var protonColor = two.makeRadialGradient(<br>  0,<br>  0,<br>  15,<br>  new Two.Stop(0, "red", 1),<br>  new Two.Stop(1, "black", 1)<br>);<br><br>var neutronColor = two.makeRadialGradient(<br>  0,<br>  0,<br>  15,<br>  new Two.Stop(0, "blue", 1),<br>  new Two.Stop(1, "black", 1)<br>);<br><br>for (i = 0; i   nucleusArray.push(two.makeCircle(intRange(-10, 10), intRange(-10, 10), 8));<br>}<br><br>nucleusArray.forEach(function(nucleus, index) {<br>  if (index % 2 == 0) {<br>    nucleus.fill = protonColor;<br>  }<br>  if (index % 2 == 1) {<br>    nucleus.fill = neutronColor;<br>  }<br>  nucleus.noStroke();<br>});<br>

コードの最終部分により、マウスをクリックするか、タッピングして要素を反復させることができます。次の要素をロードするには、もう1つの電子ともう1つのプロトンまたは中性子を表示し、要素名を更新します。最後の要素をクリックした後、すべての粒子が再び隠されているので、やり直すことができます。
for (var i = 0; i   if (i     var shellRadius = 50;<br>    var angle = i * Math.PI;<br>    electronArray.push(<br>      two.makeCircle(<br>        Math.cos(angle) * shellRadius,<br>        Math.sin(angle) * shellRadius,<br>        5<br>      )<br>    );<br>  }<br>  if (i >= 2 && i     var shellRadius = 80;<br>    var angle = (i - 2) * Math.PI / 4;<br>    electronArray.push(<br>      two.makeCircle(<br>        Math.cos(angle) * shellRadius,<br>        Math.sin(angle) * shellRadius,<br>        5<br>      )<br>    );<br>  }<br>}<br>
可変は、現在見える原子粒子の数を追跡して、それに応じて表示または非表示にできるようにします。 Two.JSライブラリと、長方形、円、楕円などの形状を描くために使用する方法。その後、さまざまなオブジェクトをグループ化して一度に操作する方法について説明しました。この機能を使用して、要素をグループ化して同期して翻訳して回転させました。これらのツールはすべて、周期表の最初の10の要素の原子のアニメーションにまとめられました。この投稿の焦点は、あなたがすぐに始めるのを助けることでしたので、私たちは基本のみを取り上げました。ただし、ライブラリの詳細については、公式ドキュメントを読んでください!

以上が2Dグラフィックスを描画するための初心者のガイド。2.jsの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
「CSS4」アップデート「CSS4」アップデートApr 11, 2025 pm 12:05 PM

私が最初にCSS4¹のことを鳴らしたので、それについてもっと多くの議論がありました。私はここで他の人から私のお気に入りの考えをまとめようとしています。がある

3種類のコード3種類のコードApr 11, 2025 pm 12:02 PM

新しいプロジェクトを開始するたびに、3つのタイプ、または必要に応じてカテゴリを検討しているコードを整理します。そして、これらのタイプは適用できると思います

HTTPSは簡単です!HTTPSは簡単です!Apr 11, 2025 am 11:51 AM

私は、httpsの複雑さを公に嘆きながら罪を犯しました。過去に、私はサードパーティのベンダーからSSL証明書を購入し、問題がありました

HTMLデータ属性ガイドHTMLデータ属性ガイドApr 11, 2025 am 11:50 AM

HTML、CSS、およびJavaScriptのデータ属性について知りたいと思っていたことはすべて。

JavaScriptの不変性を理解するJavaScriptの不変性を理解するApr 11, 2025 am 11:47 AM

JavaScriptの不変性を以前に作業したことがない場合は、変数を新しい値または再割り当てに割り当てることと混同しやすいことがわかります。

最新のCSS機能を備えたカスタムスタイリングフォーム入力最新のCSS機能を備えたカスタムスタイリングフォーム入力Apr 11, 2025 am 11:45 AM

最近、カスタムチェックボックス、ラジオボタン、トグルスイッチを構築することは完全に可能です。必要でさえありません

脚注文字脚注文字Apr 11, 2025 am 11:34 AM

脚注に最適な特別なスーパーセット番号の文字があります。ここにあります:

HTML、CSS、JavaScriptを使用してアニメーションカウントダウンタイマーを作成する方法HTML、CSS、JavaScriptを使用してアニメーションカウントダウンタイマーを作成する方法Apr 11, 2025 am 11:29 AM

プロジェクトにカウントダウンタイマーが必要だったことはありますか?そのようなことのために、プラグインに手を伸ばすのは自然なことかもしれませんが、実際にはもっとたくさんあります

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール