目錄
>有一種稱為RADIUS
進行練習,您應該嘗試修改代碼並將矩形分為兩個平等組。在每個中每個顏色值中應用一組不同的筆觸
定義梯度並寫作文本
首頁 web前端 css教學 初學者的指南繪製2D圖形的指南

初學者的指南繪製2D圖形的指南

Mar 02, 2025 am 09:18 AM

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

tw.js是一種API,可以輕鬆使用代碼創建2D形狀。跟進,您將學習如何從JavaScript中創建和動畫形狀。

twe.js是渲染器的敏捷,因此您可以依靠同一API使用Canvas,SVG或WebGL繪製2D。該庫具有許多方法,可用於控制屏幕上的不同形狀或它們的動畫。圖書館的未壓縮版本的大小約為128 kb,而壓縮版本為50 kb。如果您使用的是最新版本,則可以使用自定義構建進一步減少庫的大小。
  • 可以從github下載庫的縮小版本,也可以直接鏈接到cdn hosted版本。將庫添加到網頁中後,您可以開始繪製和動畫不同的形狀或對象。
  • >創建基本形狀
  • 首先,您需要告訴Twiel.js。您可以將一些參數傳遞到兩個參數。在這裡,tw.makerectangle(x,y,width,height)
  • 和兩個。 makecircle(x,y,radius)和tw.makearrow(x1,y1,y1,x2,y2,size size)值確定箭頭尾部的位置。 Y2值確定箭頭的位置。第五參數確定箭頭的大小。

>有一種稱為RADIUS

的方法確定多邊形頂點與中心的距離,而兩個。 MakeGroup(對象)

。您可以傳遞不同對象的列表,也可以將一組對象,路徑或組作為參數傳遞給此方法。它還將一次返回填充

,lineWidth

值。我們實際上將設置小組的位置。由於矩形是組的一部分,因此它們將自動移動。

進行練習,您應該嘗試修改代碼並將矩形分為兩個平等組。在每個中每個顏色值中應用一組不同的筆觸

顏色值,以創建自己獨特的幾何藝術作品。

定義梯度並寫作文本

您可以在兩個js中定義線性和徑向梯度。定義梯度並不意味著它將在屏幕上自動渲染,但是在設置兩個時,您可以使用它。 makelineargradient(x1,y1,y1,x2,y2,stop)。值新的兩個stop(偏移,顏色,不透明度),其中兩個。 MakerAdialGradient(x,y,radius,stop,stop,fx,fy>>)。在這種情況下,值二。 makeText(消息,x,y,樣式)。從參數的名稱中可以明顯看出,消息是您要編寫的實際文本。參數 x y<code>message是該點的坐標,它將充當編寫文本的中心。 樣式<code>x參數是一個可以用於設置大型屬性值的對象。 y>styles>您可以使用樣式設置諸如font family

的屬性值, size size <p>,<code> code> Acod> Aligimment <ancimegnment>。您還可以指定諸如<code> fill<code>family stroke<code>size opacity <code>alignment rotage> rotation <code>fill scor> scor<code>stroke translation<code>opacityrotationscaletranslation

var rects = [];<br><br>var elemWidth = document.querySelector("#draw-shapes").offsetWidth;<br><br>for (i = 0; i < 100; i++) {<br>  rects[i] = two.makeRectangle(<br>    Math.floor(Math.random() * elemWidth * 2),<br>    Math.floor(Math.random() * 420 * 2),<br>    10 + Math.floor(Math.random() * 100),<br>    10 + Math.floor(Math.random() * 100)<br>  );<br>}<br><br>var group = two.makeGroup(...rects);<br><br>group.noFill();<br>group.stroke = "black";<br>group.linewidth = 6;<br><br>two.update();<br>
登入後複製
登入後複製

centerXcenterY在本教程中,我將向您展示如何使用Two.js呈現元素週期表的前十個要素,電子圍繞核旋轉的電子。核還將有一些輕微的動作來提高我們表示的視覺吸引力。 elementNames>styles我們首先定義一些變量和函數,這些變量和函數將在以後使用。

>

intRange()>上面的代碼存儲了我們窗口中心的坐標,以變量 cope> cente> cente> centerx <centex> and 和 Centery。這些將稍後將我們的原子放在中心。 <code> elementNames<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">var centerX = window.innerWidth / 2;&lt;br&gt;var centerY = window.innerHeight / 2;&lt;br&gt;&lt;br&gt;var elem = document.getElementById(&quot;atoms&quot;);&lt;br&gt;&lt;br&gt;var elementNames = [&lt;br&gt; &quot;&quot;,&lt;br&gt; &quot;Hydrogen&quot;,&lt;br&gt; &quot;Helium&quot;,&lt;br&gt; &quot;Lithium&quot;,&lt;br&gt; &quot;Beryllium&quot;,&lt;br&gt; &quot;Boron&quot;,&lt;br&gt; &quot;Carbon&quot;,&lt;br&gt; &quot;Nitrogen&quot;,&lt;br&gt; &quot;Oxygen&quot;,&lt;br&gt; &quot;Fluorine&quot;,&lt;br&gt; &quot;Neon&quot;&lt;br&gt;];&lt;br&gt;&lt;br&gt;var styles = {&lt;br&gt; alignment: &quot;center&quot;,&lt;br&gt; size: 36,&lt;br&gt; family: &quot;Lato&quot;&lt;br&gt;};&lt;br&gt;&lt;br&gt;var nucleusCount = 10;&lt;br&gt;var nucleusArray = Array();&lt;br&gt;&lt;br&gt;var electronCount = 10;&lt;br&gt;var electronArray = Array();&lt;br&gt;&lt;br&gt;function intRange(min, max) {&lt;br&gt; return Math.random() * (max - min) + min;&lt;br&gt;}&lt;br&gt;</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div>陣列包含週期表的前十個元素的名稱。每個名稱的索引對應於該元素的電子和質子的數量,它以一個空字符串開始。 <code>樣式<p>對象包含用於造型文本對象的屬性。 </p>><p>我們還定義了一個函數<code> intrange()<code>intRange()在給定的極端內獲取一個隨機的整數值。 makeCircle()nucleusArray

這將創建兩個實例並定義了兩個徑向梯度。紅色/黑色徑向梯度將代表質子,而藍色/黑色梯度將代表中子。 我們使用了 intrange()功能將所有這些中子和質子放置在彼此20個像素中。 <code> makeCircle()方法還將這些質子和中子的半徑設置為10像素。之後,我們迭代<code> nucleusArray ,並用不同的梯度交替填充每個圓圈。 在核內放置中子和質子很容易。但是,將電子適當地放置在均勻距離處將需要一些數學。我們使用<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><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 &lt; 100; i++) {&lt;br&gt; 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><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div>>變量來指定不同電子殼與核的距離。整個圓的角度等於2 Pi弧度。我們可以通過平等分配2個PI弧度來統一地放置不同的電子。 <ancy><p>><code>shellRadius>和

函數用於根據其角度的角度分離不同電子的位置向量的垂直和水平成分。它還一次將所有電子的填充顏色設置為特定軌道。它還告訴Two.js以特定的速度旋轉電子和質子。

Math.cos()Math.sin()>代碼的最後一部分使我們通過單擊鼠標或敲擊來迭代元素。為了加載下一個元素,我們將更多電子和一個質子或中子可見,然後更新元素名稱。單擊最後一個元素後,所有粒子都會再次隱藏,因此我們可以重新開始。

>可變跟踪當前可見的原子粒子數量,以便我們可以相應地顯示或隱藏它們。兩個庫庫以及如何用於繪製矩形,圓圈和橢圓等形狀。之後,我們討論瞭如何一次分組不同的對像以一次操縱它們。我們使用此能力將元素分組以同步轉換和旋轉它們。這些工具都在我們所看到的元素週期表中前十個元素的原子的動畫中匯集在一起​​,您可以看到,創建動畫的2D圖形非常容易使用two.js。這篇文章的重點是幫助您快速入門,因此我們只介紹了基礎知識。但是,您應該閱讀官方文檔,以了解有關庫的更多信息!
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>
登入後複製
登入後複製

更多JavaScript Resources

以上是初學者的指南繪製2D圖形的指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1655
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1252
29
C# 教程
1226
24
Google字體可變字體 Google字體可變字體 Apr 09, 2025 am 10:42 AM

我看到Google字體推出了新設計(Tweet)。與上一次大型重新設計相比,這感覺更加迭代。我幾乎無法分辨出區別

如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 Apr 11, 2025 am 11:29 AM

您是否曾經在項目上需要一個倒計時計時器?對於這樣的東西,可以自然訪問插件,但實際上更多

HTML數據屬性指南 HTML數據屬性指南 Apr 11, 2025 am 11:50 AM

您想了解的有關HTML,CSS和JavaScript中數據屬性的所有信息。

如何通過CSS選擇第一個類名為item的子元素? 如何通過CSS選擇第一個類名為item的子元素? Apr 05, 2025 pm 11:24 PM

在元素個數不固定的情況下如何通過CSS選擇第一個指定類名的子元素在處理HTML結構時,常常會遇到元素個數不�...

為什麼Flex佈局中的紫色斜線區域會被誤認為是'溢出空間”? 為什麼Flex佈局中的紫色斜線區域會被誤認為是'溢出空間”? Apr 05, 2025 pm 05:51 PM

關於Flex佈局中紫色斜線區域的疑問在使用Flex佈局時,你可能會遇到一些令人困惑的現象,比如在開發者工具(d...

使Sass更快的概念證明 使Sass更快的概念證明 Apr 16, 2025 am 10:38 AM

在一個新項目開始時,Sass彙編發生在眼睛的眨眼中。感覺很棒,尤其是當它與browsersync配對時,它重新加載

在前端開發中,如何使用CSS和JavaScript實現類似Windows 10設置界面的探照燈效果? 在前端開發中,如何使用CSS和JavaScript實現類似Windows 10設置界面的探照燈效果? Apr 05, 2025 pm 10:21 PM

在前端開發中如何實現類似Windows...

我們如何創建一個在SVG中生成格子呢模式的靜態站點 我們如何創建一個在SVG中生成格子呢模式的靜態站點 Apr 09, 2025 am 11:29 AM

格子呢是一塊圖案布,通常與蘇格蘭有關,尤其是他們時尚的蘇格蘭語。在Tar​​tanify.com上,我們收集了5,000多個格子呢

See all articles