做了一個六點成圓動畫

不久前,我在一個影片中見過這種運動,它是實體的,拿真的球在六條路徑上滾,正好圍成一個圓,相互不會發生碰撞。

於是我就想用svg做個動畫。

今日開始動工。起初我以為它是線性運動,也就是匀速運動。但是經過試驗不對。

於是我想到了,它是一個運動中的圓和直線交點的變化,它肯定不是匀速的,但是我又不知道它是什麼運動。

我就叫gemini給我做了一個html+js程式,來得出每個間隔的距離。最終得以完成。

我向AI提要求

做一個html+js程式:

一,圓A半徑為0.5,它的圓心坐標為(x1,y1)。初始x1=0,y1=0.5。圓B半徑為0.5,它的圓心坐標為(0,0)。

二,圓A的圓心在圓B上順時針移動。

三,html首先輸入一個角度差值,比如3。

四,html再需要輸入一個保留小數點後幾位,比如3。

五,當按下確認按鈕,開始計算keyPoints和keyTimes。

keyTimes範圍是0到1,每一項就是角度差值除以360的結果的倍數,比如角度差值為90,則keyTimes="0;0.25;0.5;0.75;1"。

keyPoints的範圍也是0到1。圓A圓心與坐標圓點連接的線段與y軸的夾角從0到360度遞增。

當角度在0到90度,keyPoints=(1-(圓A跟y軸的交點的y坐標))/4。
當角度在90到180度,keyPoints=(0-(圓A跟y軸的交點的y坐標))/4+0.25。
當角度在180到270度,keyPoints=(1+(圓A跟y軸的交點的y坐標))/4+0.5。
當角度在270到360度,keyPoints=(圓A跟y軸的交點的y坐標)/4+0.75。

keyTimes和keyPoints項數是相同的。keyPoints的每一個結果保留小數點後幾位按前面填的來確定。例如計算結果為keyPoints="0;0.25;0.5;0.75;1"。

將結果輸出到一個textarea中。

六,所有代碼都使用英文。

則現在剩下的問題是,它的運動是什麼曲線?我懷疑是拋物線。


之後我用更簡單的辦法又做了一個:

Leave a Comment