」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 用ps畫笑臉

用ps畫笑臉

發佈於2024-11-05
瀏覽:752

Dibujando una Cara Sonriente con ps

使用 p5.js 繪製笑臉

在本文中,我們將探索如何使用 p5.js 庫創建一個簡單但迷人的圖畫:笑臉。 p5.j​​s 是一個 JavaScript 函式庫,可以輕鬆建立互動式圖形和動畫。它是想要創建基於程式碼的視覺專案的藝術家、設計師和開發人員的理想選擇。

什麼是 p5.js?

p5.js 是一個旨在讓視覺化程式設計世界變得易於存取的函式庫。它提供了一組功能,可讓您以簡單的方式繪製形狀、創建動畫以及與使用者互動。儘管它是用 JavaScript 編寫的,但用戶無需成為該語言的專家即可開始創建引人注目的視覺效果。

p5.j​​s 中草圖的基本結構

p5.js中的草圖有兩個主要功能:

  1. setup():開始時執行一次。這是我們初始化畫布、設定顏色並準備任何必要元素的地方。
  2. draw():逐幀循環運行。在這裡,我們放置要連續重複的指令(如動畫)。在我們的例子中,我們不需要動畫,所以我們將其留空。

項目:一張笑臉

目標是用簡單的形狀畫一張笑臉:一個大圓圈代表臉部,兩個小圓圈代表眼睛,一個弧線代表嘴巴。

第 1 步:建立畫布

我們要做的第一件事是定義畫布的大小。在本例中,我們將使用 400x400 像素的大小並設定黑色背景。

function setup() {
  createCanvas(400, 400);
  background(0); // Fondo negro
}

第二步:畫臉

臉簡直就是一個大圓。要在 p5.js 中繪製圓形,我們使用 ellipse() 函數,該函數需要其中心座標以及寬度和高度。在我們的例子中,我們將在畫布中心繪製一個直徑 200 像素的圓。

stroke(255); // Color de línea blanco
strokeWeight(5); // Grosor de la línea
noFill(); // Sin relleno para el círculo
ellipse(200, 200, 200, 200); // Dibuja la cara

第三步:畫出眼睛

眼睛是兩個白色的小圓圈。我們可以使用相同的 ellipse() 函數,但這次我們給它們填充白色並將它們稍微向上放置到臉部中心的兩側。

fill(255); // Relleno blanco para los ojos
noStroke(); // Sin borde para los ojos
ellipse(160, 170, 20, 20); // Ojo izquierdo
ellipse(240, 170, 20, 20); // Ojo derecho

第四步:畫出微笑

最後,對於微笑,我們使用 arc() 函數。此功能可讓您繪製橢圓弧,在本例中,它看起來像一個微笑。我們調整座標,讓曲線居中,看起來像一張嘴。

noFill(); // Sin relleno para la boca
stroke(255); // Líneas blancas de nuevo
arc(200, 220, 100, 80, 0, PI); // Dibuja la sonrisa

完整程式碼:

function setup() {
  createCanvas(400, 400);
  background(0); // Fondo negro

  stroke(255); // Color de línea blanco
  strokeWeight(5); // Grosor de la línea
  noFill(); // Sin relleno para el círculo

  // Dibuja la cara (un círculo grande)
  ellipse(200, 200, 200, 200);

  // Ojos (dos círculos pequeños)
  fill(255); // Relleno blanco para los ojos
  noStroke(); // Sin borde para los ojos
  ellipse(160, 170, 20, 20);
  ellipse(240, 170, 20, 20);

  // Boca sonriente
  noFill(); // Sin relleno para la boca
  stroke(255); // Líneas blancas de nuevo
  arc(200, 220, 100, 80, 0, PI); // Dibuja la sonrisa
}

function draw() {
  // No se requiere animación, por lo que dejamos el draw vacío
}

結論

這個簡單的範例展示如何透過幾行程式碼,使用 p5.js 創建有吸引力的圖形。儘管這個專案很基礎,但這裡使用的原理可以擴展以創建更複雜和詳細的視覺效果。如果你想嘗試更多,你可以嘗試調整元素大小,添加顏色,甚至在draw()中製作動畫。

繼續創建您自己的笑臉版本,並探索 p5.js 提供的功能!

版本聲明 本文轉載於:https://dev.to/marisbotero/dibujando-una-cara-sonriente-con-p5js-3hmm?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • WebRTC簡介
    WebRTC簡介
    安裝和代碼指南 WebRTC(網路即時通訊)是一種開源技術,可透過網頁瀏覽器和行動應用程式中的簡單 API 進行即時通訊。它允許在點之間直接共享音訊、視訊和數據,無需中間伺服器,非常適合視訊會議、直播和檔案共享等應用程式。 在本部落格中,我們將深入探討以下主題: 什麼是WebRT...
    程式設計 發佈於2024-11-06
  • 如何在不使用 JavaScript 的情況下使用 CSS 隱藏和顯示內容?
    如何在不使用 JavaScript 的情況下使用 CSS 隱藏和顯示內容?
    使用CSS 隱藏和顯示內容:無需JavaScript 的技巧在進行Web 開發時,控制內容的可見性通常至關重要。傳統上,這是使用 JavaScript 實現的,但 CSS 也可用於創建優雅的隱藏和顯示效果。下面描述了一種此類技術,解決了先前方法遇到的特定挑戰。 隱藏/顯示內容切換:可以使用 CSS ...
    程式設計 發佈於2024-11-06
  • 如何建立重複最少的 5 個字元的隨機字串?
    如何建立重複最少的 5 個字元的隨機字串?
    產生5 個具有最少重複的隨機字元要建立具有最少重複的隨機5 個字元字串,最有效的方法之一是使用PHP 函數和巧妙技術的結合。讓我們深入研究解決方案:使用md5 和rand$rand = substr(md5(microtime()),rand(0,26),5);此方法使用md5雜湊函數根據時間戳記產...
    程式設計 發佈於2024-11-06
  • 如何在 Go 中處理不同套件之間相同的方法簽名?
    如何在 Go 中處理不同套件之間相同的方法簽名?
    處理不同套件中具有相同方法簽名的介面在Go中,當處理具有相同方法簽署但定義在不同套件中的多個介面時,可能會出現以下情況實作兩個介面的類型會導致意外行為。 考慮在不同套件中定義的這兩個介面(Doer)和函數(FuncA 和 FuncB):// Package A type Doer interface...
    程式設計 發佈於2024-11-06
  • 如何使用 jQuery 填充級聯下拉清單以獲得更好的相容性和使用者體驗?
    如何使用 jQuery 填充級聯下拉清單以獲得更好的相容性和使用者體驗?
    使用jQuery 填充級聯下拉清單在表單開發領域,級聯下拉清單經常用於提供更用戶友好和動態體驗。為了增強相容性並解決跨瀏覽器問題,jQuery 提供了一個強大的解決方案來非同步填充這些下拉清單。 問題中所示的用於建立級聯下拉清單的原始 JavaScript 函數缺乏與 IE 的兼容性。為了解決這個問...
    程式設計 發佈於2024-11-06
  • 了解 JavaScript 中的擴充運算子:初學者簡單指南
    了解 JavaScript 中的擴充運算子:初學者簡單指南
    介紹 JavaScript 是一種有趣的程式語言,其最令人興奮的功能之一是擴充運算子。如果您剛開始編碼,或者即使您是一個對學習 JavaScript 感興趣的孩子,也不必擔心!我將以最簡單的方式分解這個概念,並舉例來幫助您理解。 什麼是價差運算子? 擴充運算子看起...
    程式設計 發佈於2024-11-06
  • 在 Python 中使用 OpenSearch 掌握 CRUD 操作:實用指南
    在 Python 中使用 OpenSearch 掌握 CRUD 操作:實用指南
    OpenSearch, an open-source alternative to Elasticsearch, is a powerful search and analytics engine built to handle large datasets with ease. In this b...
    程式設計 發佈於2024-11-06
  • 冰沙框架的重要概念||如何精通冰沙
    冰沙框架的重要概念||如何精通冰沙
    要精通 Frappe,有几个关键概念和领域需要关注。以下是最重要的细分: 1. 文档类型 定义:DocTypes是Frappe中的核心数据模型。每个实体或记录都存储在 DocType 中,并且它们可以具有字段、权限和工作流程。 为什么它很重要:了解如何创建和自定义 DocType 至...
    程式設計 發佈於2024-11-06
  • 如何解決 JLabel 拖放的滑鼠事件衝突?
    如何解決 JLabel 拖放的滑鼠事件衝突?
    用於拖放的JLabel 滑鼠事件:解決滑鼠事件衝突為了在JLabel 上啟用拖放功能,滑鼠事件必須被覆蓋。然而,當嘗試使用 mousePressed 事件實作拖放時,會出現一個常見問題,因為 mouseReleased 事件對該 JLabel 無效。 提供的程式碼在 mousePressed 事件中...
    程式設計 發佈於2024-11-06
  • MySQL 中的資料庫分片:綜合指南
    MySQL 中的資料庫分片:綜合指南
    随着数据库变得越来越大、越来越复杂,有效地控制性能和扩展就出现了。数据库分片是用于克服这些障碍的一种方法。称为“分片”的数据库分区将大型数据库划分为更小、更易于管理的段(称为“分片”)。通过将每个分片分布在多个服务器上(每个服务器保存总数据的一小部分),可以提高可扩展性和吞吐量。 在本文中,我们将探...
    程式設計 發佈於2024-11-06
  • 如何將 Python 日期時間物件轉換為秒?
    如何將 Python 日期時間物件轉換為秒?
    在Python 中將日期時間物件轉換為秒在Python 中使用日期時間物件時,通常需要將它們轉換為秒以適應各種情況分析目的。但是,toordinal() 方法可能無法提供所需的輸出,因為它僅區分具有不同日期的日期。 要準確地將日期時間物件轉換為秒,特別是對於 1970 年 1 月 1 日的特定日期,...
    程式設計 發佈於2024-11-06
  • 如何使用 Laravel Eloquent 的 firstOrNew() 方法有效最佳化 CRUD 操作?
    如何使用 Laravel Eloquent 的 firstOrNew() 方法有效最佳化 CRUD 操作?
    使用 Laravel Eloquent 優化 CRUD 操作在 Laravel 中使用資料庫時,插入或更新記錄是很常見的。為了實現這一點,開發人員經常求助於條件語句,在決定執行插入或更新之前檢查記錄是否存在。 firstOrNew() 方法幸運的是, Eloquent 透過firstOrNew() ...
    程式設計 發佈於2024-11-06
  • 為什麼在 PHP 中重寫方法參數違反了嚴格的標準?
    為什麼在 PHP 中重寫方法參數違反了嚴格的標準?
    在PHP 中重寫方法參數:違反嚴格標準在物件導向程式設計中,里氏替換原則(LSP) 規定:子類型的物件可以替換其父對象,而不改變程式的行為。然而,在 PHP 中,用不同的參數簽名覆蓋方法被認為是違反嚴格標準的。 為什麼這是違規? PHP 是弱型別語言,這表示編譯器無法在編譯時確定變數的確切型別。這表...
    程式設計 發佈於2024-11-06
  • 哪個 PHP 函式庫提供卓越的 SQL 注入防護:PDO 還是 mysql_real_escape_string?
    哪個 PHP 函式庫提供卓越的 SQL 注入防護:PDO 還是 mysql_real_escape_string?
    PDO vs. mysql_real_escape_string:綜合指南查詢轉義對於防止 SQL 注入至關重要。雖然 mysql_real_escape_string 提供了轉義查詢的基本方法,但 PDO 成為了一種具有眾多優點的卓越解決方案。 什麼是 PDO? PHP 資料物件 (PDO) 是一...
    程式設計 發佈於2024-11-06

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3