從小數學就不及格的我,竟然用極坐標系表白了我的女神!(附代碼)

来源:https://www.cnblogs.com/qcloud1001/archive/2018/09/20/9682246.html
-Advertisement-
Play Games

歡迎大家前往 "騰訊雲+社區" ,獲取更多騰訊海量技術實踐乾貨哦~ 本文由 "郭詩雅" 發表於 "雲+社區專欄" 在數學中,極坐標系(英語:Polar coordinate system)是一個二維坐標系統。該坐標系統中任意位置可由一個夾角和一段相對原點—極點的距離來表示。在兩點間的關係用夾角和距離 ...


歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐乾貨哦~

本文由郭詩雅發表於雲+社區專欄

在數學中,極坐標系(英語:Polar coordinate system)是一個二維坐標系統。該坐標系統中任意位置可由一個夾角和一段相對原點—極點的距離來表示。在兩點間的關係用夾角和距離很容易表示時,極坐標系便顯得尤為有用;而在平面直角坐標系中,這樣的關係就只能使用三角函數來表示。對於很多類型的曲線,極坐標方程是最簡單的表達形式,甚至對於某些曲線來說,只有極坐標方程能夠表示。(來自維基百科)

​ 通過轉換,極坐標的(φ, r)可以變換為直角坐標系中的(x,y)坐標,轉化公式如下

img

img

這樣,許多用極坐標函數表示的曲線,都可以在js裡面轉成直角坐標系並畫出來了。下麵介紹一下以下幾種曲線並用canvas繪製了曲線動畫:

1. 心形線

函數:

img

參數意義:a表示從x軸上從原點到最遠點的一半。

img

js動畫:在js中實現時,只需將極坐標角度從0到360代入方程,求出(x,y)坐標

img

2. 伯努利雙紐線

函數:

img

參數意義:a表示從中心點到兩端最遠處的距離。

img

js動畫:繪製時,代入角度的區間是[-45,45],需要繪製(-x,-y)和(x,y)兩部分的坐標。

img

3. 星形線

函數:

img

參數意義:a表示從中心點到最遠處的距離。

img

js動畫:在js中實現時,只需將角度從0到360代入方程,求解過程中不需要轉換極坐標,直接代入x,y,求出(x,y)坐標

img

4. 玫瑰線

函數:

img

參數意義:k代表有“幾朵花瓣”,如果k是奇數,則得到的花瓣數就是k,如果k為偶數,則得到的花瓣數為2k。a同上表示從中心點到最遠處的距離。

js動畫:當k為奇數時,角度區間在[0,180]即可閉合;當k為偶數時,區間在[0,360].

img

5. 阿基米德螺線

函數:

img

參數意義:相鄰“臂”之間的距離為2180a

js動畫:角度一般要設置大於360,才有螺線效果,例子中角度為弧度,所以相鄰“臂”之間的距離為2PIa。

img

除此之外,還有這樣以幾何級數增大的螺線和從外往內描繪的螺線:

6. 對數螺線

函數:

img

js動畫:

img

7. 雙曲螺線

函數:

img

js動畫:

img

以上七種曲線的demo:展示地址

總結

​ 在簡單的圖形和動畫軌跡上,我們可以換一種實現思維,例如通過函數來實現。最後,使用k=6的玫瑰線定義了(x,y)坐標,並設置z坐標為 (x,y)到z軸距離的3次方根,通過threejs,設置圖片的頂點數,用曲線連接畫了一個小demo。

demo地址:代碼地址展示地址

img

問答
游戲體繫結構
相關閱讀
玩轉flex佈局
動感光波發射!Unity AR開發之 3d 物體識別小記
Three.js 粒子系統學習小記:禮花效果實現
【每日課程推薦】機器學習實戰!快速入門線上廣告業務及CTR相應知識

此文已由作者授權騰訊雲+社區發佈,更多原文請點擊

搜索關註公眾號「雲加社區」,第一時間獲取技術乾貨,關註後回覆1024 送你一份技術課程大禮包!

海量技術實踐經驗,盡在雲加社區


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 基於名稱: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 基於最近修改時間: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...
  • 除了Cocoapods,你還可以使用Carthage來進行三方庫管理 ...
  • 歡迎大家前往 "騰訊雲+社區" ,獲取更多騰訊海量技術實踐乾貨哦~ 本文由 "QQ空間開發團隊" 發表於 "雲+社區專欄" 最近我負責開發了一個跟Android相機有關的需求,新功能允許用戶使用手機攝像頭,快速拍攝特定尺寸(1:1或3:4)的照片,並支持在拍攝出的照片上做貼紙相關的操作。由於之前沒有 ...
  • 在Hbuilder中新建一個htm自動會生成一個標準的html代碼,那在vscode得一行一行寫嗎?太煩了吧,各種關鍵詞搜,哎媽 終於找到了辦法,現在這裡記錄下: 第一步:在空文檔中輸入 ! 第二步:按下 tab 鍵。 OK了,看看效果吧 ...
  • 網上幾乎沒有看到這類的代碼,留個檔 滑鼠懸停部分在這裡 效果:刮刮樂!還刮?別颳了,沒有獎品了啦~ ...
  • 之前塊級元素佈局在同一行,可以通過display或position或float來實現,而本篇介紹一個新的方法——flex(彈性佈局)。 flex 為和模型佈局提供了極大地靈活性,所謂彈性佈局即可根據大小判定自動伸縮。 flex相關的各個屬性如下: 1、display:flex;在父盒子定義flex, ...
  • 面向對象中原型以及原型鏈非常重要,複習面向對象,學習一下原型和原型鏈,創建對象部分可以看前一個文章,傳送門,繼承部分可以看後一個文章,傳送門 什麼是原型: 原型有兩種形式:prototype和__proto__;對應的呈現方式不同。 prototype:是函數的一個屬性,這個屬性的值是一個對象。所以 ...
  • 一直覺得 的中間件系統這種流式處理非常形象,就好像加工流水線一樣,每個環節都在針對同一個產品的不同部分完成自己的工作,最後得到一個成品。今天就來實現一個簡易的【中間件隊列】。 一. API層 初始化方法 添加中間件函數的方法 啟動中間件隊列 二. 核心類的定義 js class MiddleWare ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...