7. path路徑繪制:使用path繪制曲線

曲線在SVG中通常是通過貝塞爾曲線命令來繪制的,包括二次貝塞爾曲線(Q)和三次貝塞爾曲線(C)。這些命令允許我們創建平滑的曲線路徑。

貝塞爾曲線的原理

貝塞爾曲線的基本原理是通過控制點和錨點來定義一條曲線的形狀。對于二次貝塞爾曲線,有一個起點、一個控制點和一個終點;而三次貝塞爾曲線則有兩個控制點。控制點決定了曲線的彎曲程度和方向。

繪制過程
  1. 二次貝塞爾曲線(Quadratic Bézier Curve):
    • 使用Q命令,后跟一個控制點和一個終點坐標。
    • 控制點決定了從起點到終點的曲線彎曲的程度和方向。

在這里插入圖片描述

  1. 三次貝塞爾曲線(Cubic Bézier Curve):
    • 使用C命令,后跟兩個控制點和一個終點坐標。
    • 第一個控制點影響曲線起始部分的方向和長度,第二個控制點影響曲線結束部分的方向和長度。

在這里插入圖片描述

繪制二次貝塞爾曲線(Q)

二次貝塞爾曲線由一個起點、一個控制點和一個終點定義。其命令格式如下:

<path d="M x1 y1 Q x2 y2 x3 y3" />
  • M x1 y1 表示路徑的起點。
  • Q 是二次貝塞爾曲線的指令。
  • x2 y2 是控制點的坐標,它決定了曲線的彎曲程度和方向。
  • x3 y3 是曲線的終點。
二次貝塞爾曲線示例
<!-- SVG容器 -->
<svg width="200" height="200"><!-- 繪制二次貝塞爾曲線 --><path d="M 10 80Q 95 10 180 80" stroke="black" fill="transparent"/><!-- 起點 --><circle cx="10" cy="80" r="3" fill="red"/><!-- 控制點 --><circle cx="95" cy="10" r="3" fill="green"/><!-- 終點 --><circle cx="180" cy="80" r="3" fill="blue"/>
</svg>
  • M 10 80 表示移動到起點(10,80)。
  • Q 95 10 180 80 表示繪制二次貝塞爾曲線。95 10 是控制點,180 80 是終點。
  • stroke="black" 設置曲線顏色為黑色。
  • fill="transparent" 設置填充顏色為透明。
  • <circle> 元素用來標示起點、控制點和終點。
繪制三次貝塞爾曲線(C)

三次貝塞爾曲線比二次貝塞爾曲線多了一個控制點,因此提供了更高的控制精度。其命令格式如下:

<path d="M x1 y1 C x2 y2 x3 y3 x4 y4" />
  • M x1 y1 表示路徑的起點。
  • C 是三次貝塞爾曲線的指令。
  • x2 y2x3 y3 是控制點的坐標,它們共同決定了曲線的形狀。
  • x4 y4 是曲線的終點。
三次貝塞爾曲線示例
<!-- SVG容器 -->
<svg width="200" height="200"><!-- 繪制三次貝塞爾曲線 --><path d="M 10 150C 40 10, 150 10, 180 150" stroke="black" fill="transparent"/><!-- 起點 --><circle cx="10" cy="150" r="3" fill="red"/><!-- 第一個控制點 --><circle cx="40" cy="10" r="3" fill="green"/><!-- 第二個控制點 --><circle cx="150" cy="10" r="3" fill="green"/><!-- 終點 --><circle cx="180" cy="150" r="3" fill="blue"/>
</svg>
  • M 10 150 表示移動到起點(10,150)。
  • C 40 10, 150 10, 180 150 表示繪制三次貝塞爾曲線。40 10 和 150 10 是控制點,180 150 是終點。
  • stroke="black"fill="transparent" 的設置與二次貝塞爾曲線相同。
  • <circle> 元素同樣用來標示起點、控制點和終點。

以上代碼中,紅色的圓點表示起點,綠色的圓點表示控制點,藍色的圓點表示終點。通過調整控制點的位置,可以改變曲線的形狀

示例:繪制一個心形

下面是一個使用三次貝塞爾曲線繪制心形的示例:

<svg width="100" height="100"><path d="M 10 30C 10 10, 30 10, 30 30C 30 50, 10 50, 10 30Z" fill="red"/>
</svg>

在這個例子中,我們使用了兩個C命令來繪制心形的上半部分,然后用Z命令閉合路徑。

通過調整控制點的位置,你可以改變曲線的形狀。實踐中,你可能需要多次嘗試來找到合適的控制點位置,以便繪制出理想的曲線形狀。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/10984.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10984.shtml
英文地址,請注明出處:http://en.pswp.cn/web/10984.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

命名規范總結Java

小駝峰命名 主要用于變量和方法的命名&#xff0c;當標識符是一個單詞時首字母小寫&#xff0c;當標識符為多個單詞時第一個單詞首字母小寫&#xff0c;其他單詞首字母大寫 大駝峰命名 主要用于類(Class)名等。標識符各個單詞首字母大寫。 全部大寫命名 常量名 全部小寫命…

持續總結中!2024年面試必問 100 道 Java基礎面試題(四十一)

上一篇地址&#xff1a;持續總結中&#xff01;2024年面試必問 100 道 Java基礎面試題&#xff08;四十&#xff09;-CSDN博客 八十一、Java內存模型是什么&#xff1f; Java內存模型&#xff08;Java Memory Model, JMM&#xff09;是Java虛擬機&#xff08;JVM&#xff09;…

海豚知道知識付費平臺,大V都在用,新手也能做,網絡營銷是什么?如何向銷售轉化?

我國的市場營銷已經全面步入互聯網時代&#xff0c;教育行業也逐漸網絡化&#xff0c;通過互聯網發家壯大的機構比比皆是&#xff0c;然而仍舊有很多中小型教育培訓機構&#xff0c;沒有從事網絡營銷推廣&#xff0c;或者從事了效果非常不理想。網絡營銷是什么&#xff0c;如何…

流暢的python-學習筆記_對象引用、可變性、垃圾回收

變量不是盒子 即變量是引用&#xff0c;而不是實際內存&#xff0c;多個標識賦值相同變量時&#xff0c;多余標識是引用 標識、相等性、別名 比較對象的值&#xff0c;is比較對象的id。實際調用對象的__eq__方法。is速度比快&#xff0c;因為is不能重載&#xff0c;省去了尋…

UNIT6,NFS網絡文件系統的應用

實驗要求&#xff1a; 1.配置2臺服務器要求如下&#xff1a; a&#xff09;服務器1&#xff1a; 主機名&#xff1a;user-server.timinglee.org ip地址&#xff1a; 172.25.254.100 配置好軟件倉庫 b&#xff09;服務器2&#xff1a; 主機名&#xff1a;storage-server.timing…

力扣 300. 最長遞增子序列 python AC

動態規劃 dp[i]表示到當前位置為止最多個數的遞增子序列 簡單的對每個位置從頭遍歷 class Solution:def lengthOfLIS(self, nums):size len(nums)dp [1] * sizefor i in range(1, size):for j in range(i):if nums[i] > nums[j]:dp[i] max(dp[i], dp[j] 1)return max…

數據結構與算法學習筆記之線性表二---順序表的靜態存儲表示和實現(C++)

目錄 前言 1.什么是順序表 2.順序表的靜態存儲表示 1.初始化 2.長度 3.數據元素 4.長度 5.獲取元素下標 6.前驅節點 7.后繼節點 8.插入 9.刪除 10.遍歷 11.測試代碼 前言 這篇文章講的是順序表的兩種實現方式。 1.什么是順序表 線性表的順序表示指的是用一組地址…

Double 4 VR情景智能互動教學系統在商務旅行課堂中的應用

一、提高學生的學習興趣 傳統的商務旅行課堂教學方式往往是教師講授理論知識&#xff0c;學生被動接受。這種方式很難激發學生的學習興趣&#xff0c;而Double 4 VR情景智能互動教學系統則可以通過虛擬現實技術&#xff0c;將商務旅行的場景生動地展示給學生&#xff0c;讓學生…

醫院如何做好漏費管理?什么是控費系統?控費系統現在成熟嗎?

在中國深厚的人情土壤之中&#xff0c;某些醫院里的醫技科室&#xff0c;宛如隱秘的灰色地帶&#xff0c;悄然滋生著利用職務之便謀取私利的暗流。這些科室的醫務人員&#xff0c;以低于醫院明文規定的收費標準&#xff0c;私下里為熟識的患者提供檢查服務&#xff0c;仿佛形成…

【碎碎念4】向上社交

好久沒寫碎碎念系列了&#xff0c;最近關注到身邊一些社交關系&#xff0c;想要和大家聊聊向上社交這件事情。首先小田認為向上社交或者僅僅是社交本身是無論什么年紀都需要關注的&#xff0c;因為處理好關系不僅僅會幫助我們把握好機會&#xff0c;同時也能讓我們更好的建立自…

undolog

undolog回滾段 undolog執行的時間&#xff1a;在執行器操作bufferpool之前。 undolog頁

我覺得這個域名證書監控平臺又吊打Uptimekuma了

前面我們講過uptimekuma 如何監控域名證書&#xff0c;很多人都喜歡 uptimekuma 那高端暗黑的色系上&#xff0c;然而最實用就是它的域名證書監控和歷史可用性圖表的展示上了&#xff0c;如下如&#xff1a; 但是這個東西吧&#xff0c;好看嗎&#xff1f;好看&#xff0c;有用…

llama3 發布!大語言模型新選擇 | 開源日報 No.251

meta-llama/llama Stars: 53.0k License: NOASSERTION llama 是用于 Llama 模型推理的代碼。 提供了預訓練和微調的 Llama 語言模型&#xff0c;參數范圍從 7B 到 70B。可以通過下載腳本獲取模型權重和 tokenizer。支持在本地快速運行推理&#xff0c;并提供不同規格的模型并…

機器學習作業4——樸素貝葉斯分類器

目錄 一、理論 一個例子&#xff1a; 二、代碼 對于代碼的解釋&#xff1a; 1.fit函數&#xff1a; 2.predict函數: 三、實驗結果 原因分析&#xff1a; 一、理論 樸素貝葉斯分類器基于貝葉斯定理進行分類&#xff0c;通過后驗概率來判斷將新數據歸為哪一類。通過利用貝…

MFC的CPen與CBush畫圖對象使用步驟

在MFC中&#xff0c;CPen和CBrush是兩個常用的繪圖對象&#xff0c;分別用于定義畫筆和畫刷&#xff0c;可以用于繪制圖形、填充區域等。下面我會詳細介紹如何在MFC中使用CPen和CBrush來繪制和填充圖形。 使用 CPen 繪制圖形&#xff1a; 創建 CPen 對象&#xff1a; 首先&am…

橋梁監控可視化大屏:現代橋梁管理的必備呀。

橋梁監控上可視化有幾個重要的原因&#xff1a; 01.實時監控&#xff1a; 可視化的監控系統可以實時顯示橋梁的各項監測數據&#xff0c;包括結構變形、振動、溫度等&#xff0c;使監控人員能夠實時了解橋梁的狀態&#xff0c;及時發現異常情況并采取相應的措施。 02.數據分析…

MySQL前綴索引、臟頁和干凈頁、COUNT(*)討論、表刪除內存問題

文章目錄 如何加索引如何給身份證號添加索引 SQL語句變慢臟頁 (Dirty Pages)干凈頁 (Clean Pages)為何區分臟頁和干凈頁處理臟頁管理策略 flush如何控制 為什么刪除表數據后表文件大小不變問題背景核心原因數據存儲方式參數影響 解決方案1. 調整innodb_file_per_table設置2. 使…

C#之三目運算、三元運算

三目運算也叫三元運算是一種簡單的條件語句&#xff0c;也稱為條件運算符。它可以根據一個表達式的結果確定另一個表達式的值。三目運算符使用“?”和“:”來表示。 注意使用bool值進行運算 三目運算符: 套路 三個空位 兩個符號 固定寫法 : 空位1 ? 空位2 : 空位3; 關鍵…

2024.5.8 —— LeetCode 高頻題復盤

目錄 檢測循環依賴7. 整數反轉LCR 170. 交易逆序對的總數55. 跳躍游戲45. 二叉樹的后序遍歷50. Pow(x, n)40. 組合總和 II74. 搜索二維矩陣26. 刪除有序數組中的重復項61. 旋轉鏈表 檢測循環依賴 題目鏈接 def haveCircularDependency(self, n: int, prerequisites):g [[]for…

MATLAB實現遺傳算法優化選址-路徑LRP問題(Location-Routing Problem)

MATLAB實現遺傳算法優化選址-路徑LRP問題(Location-Routing Problem) 一、模型 選址車輛路徑問題&#xff08;Location-Routing Problem, LRP&#xff09;是一個組合優化問題&#xff0c;旨在同時優化設施位置的選擇和車輛的配送路徑。在這個問題中&#xff0c;我們考慮一個由…