我透過 drawPlam() 來探索 棕櫚葉的形態構成與生長模式。這不只是單純的葉片,而是一種 受結構規則與隨機變數共同塑造的形式——主幹的彎曲、葉序的排列、小葉片的角度變化,這些元素共同決定了葉片的展開方式,使它在固定的邏輯框架下仍具有多樣性。
棕櫚葉的整體形態由 主幹與小葉組成,其中 主幹長度 受到 meta.leafLength 及 finalNode 影響,在一定範圍內隨機變化,使葉片長度在 200 以上波動,而 主幹的彎曲 則透過 變形函數 定義,透過簡單的位移調整,使葉片帶有自然的起伏感。
小葉片的排列方式 依據 相對位置 relativePosition 在主幹上均勻分布,從 0.15 開始,到 0.92 結束,形成由基部到末端逐步展開的模式。葉片的數量在 12 到 18 之間隨機,確保每片棕櫚葉都略有不同。
葉片的生長角度 透過 基礎展開角 baseAngle 來確定,數值範圍介於 PI / 8 到 PI / 2.2,再加上小幅隨機偏移,使小葉片呈現扇形展開的效果。左右葉片的對稱性 來自於 leftAngle 與 rightAngle,它們在 baseAngle 的基礎上微調,使葉片能夠均勻展開。
在 寬度函數 中,葉片的橫截面形態被進一步塑造:前 60% 保持固定寬度,後 40% 緩慢收束至 0,確保葉片前端保有較完整的形態,而尾端則自然收斂,模擬棕櫚葉的尖細輪廓。
這個系統並非單一靜態形態,而是 透過結構邏輯、隨機數值與函數調控的參數組合,讓每片棕櫚葉都在相似的框架內擁有自己的變體。葉片的彎曲方式、排列順序、寬度變化,使 drawPlam() 成為一個 基於參數驅動的葉片生成結構,能夠在不同的輸入條件下生成略有差異的葉片形態。

Through drawPlam(), I explore the structural composition and growth patterns of palm leaves. These are not just simple leaves but forms shaped by a combination of structural rules and random variables—the curvature of the main stem, the arrangement of leaflets, and variations in leaflet angles. Together, these elements determine how the leaf unfolds, allowing for diversity within a fixed logical framework.
The overall form of a palm leaf consists of a main stem and multiple leaflets. The length of the main stem is influenced by meta.leafLength and finalNode, introducing a range of variation that keeps the leaf length above 200. Its curvature is defined by a deformation function, applying subtle positional adjustments to create a natural undulating effect.
Leaflet arrangement is based on relativePosition, evenly distributed along the main stem from 0.15 to 0.92, forming a gradual unfolding pattern from the base to the tip. The number of leaflets varies randomly between 12 and 18, ensuring that each palm leaf exhibits slight variations.
The growth angle of each leaflet is determined by the base expansion angle baseAngle, ranging from PI / 8 to PI / 2.2, with minor random offsets to create a fan-like distribution. Symmetry between the left and right leaflets is controlled by leftAngle and rightAngle, which are fine-tuned from the base angle to achieve a balanced spread.
The width function further refines the cross-sectional shape of the leaflets: the first 60% retains a fixed width, while the last 40% gradually tapers to zero. This ensures that the front part of each leaflet maintains a well-defined shape, while the tip narrows naturally, mimicking the pointed structure of real palm leaves.
This system is not a static form but rather a parameter-driven structure governed by logic, randomness, and function-based controls. The combination of curvature, arrangement, and width variations enables drawPlam() to generate palm leaves that adhere to a consistent framework while still exhibiting unique characteristics under different input conditions.
