Saya ingin membuat animasi mewah di mana titik bergerak di sekitar persegi panjang. Saya ingin menemukan posisi titik pada suatu waktu t
.
Persegi panjang yang diberikan oleh X
, Y
, Width
dan Height
.
Apakah ada algoritma untuk ini?
Saya telah menggunakan sin
/ cos
untuk lingkaran. Apa pendekatan yang setara untuk persegi panjang?
animation
geometry
interpolation
Raildex
sumber
sumber
Jawaban:
Saya akan menganggap t Anda berubah dari 0 menjadi 1 . (Jika tidak, cukup gandakan untuk mengukurnya dengan tepat.)
Cari tahu berapa proporsi ( 0 - 1 ) setiap sisi dari perimeter. ( panjang sisi / perimeter total )
Untuk menemukan berapa banyak dari setiap sisi "diisi" pada waktu t , beralih melalui sisi, kurangi proporsinya sampai t habis untuk nilai negatif. Tepi terakhir (yang menyebabkan t menjadi negatif) diisi oleh proporsi (panjang sisi + tersisa) / panjang sisi . Selebihnya tidak terisi.
Untuk mendapatkan posisi vektor yang tepat di t , kalikan vektor setiap sisi dengan proporsi sisi yang diisi, dan tambahkan.
Ini bekerja untuk poligon apa pun sebenarnya!
sumber
Sinus dan cosinus t masing-masing adalah koordinat y dan x dari suatu titik pada lingkaran yang membentuk sudut t dengan sumbu x. Tidak perlu untuk itu dalam persegi panjang! Sebuah persegi panjang terbuat dari empat garis. Jika
t
pergi dari0
ke1
, itu mencapai titik(px,py)
dit==0
dan(qx,qy)
dit==1
dengan garis yang diberikan oleh:jika alih-alih
0
dan1
, waktu Anda beralih darit0
ket1
, Anda dapat menormalkan waktu terlebih dahulu dan kemudian menerapkan rumus di atas.Sekarang, untuk Anda empat persegi panjang, bagi dalam empat kasus dengan satu
if
untuk setiap tepi yang mencakup salah satu rentang waktu dan menerapkan gerakan garis.Perhatikan bahwa jika persegi panjang Anda selaras sumbu, Anda akan selalu memiliki nilai x atau nilai y yang konstan. Misalnya, untuk t antara
0
dana/4
(dan seandainya (X, Y) adalah kiri bawah),Yang juga sama dengan:
sumber
Saya tidak tahu apakah ada algoritma yang sebenarnya untuk ini, tapi saya membuat sendiri (Java):
Anda harus mengubah variabel
x
dany
untuk mendapatkan animasi Anda besar atau kecil seperti yang Anda inginkan (dengan mengalikan) dan di mana Anda inginkan (menambah / mengurangi dari x dan y).Saya belum menguji kode ini, tetapi saya pikir itu harus bekerja. Ini juga harus bekerja untuk poligon apa pun dengan sejumlah titik (Anda juga bisa menggunakan sedikit kode untuk menghasilkan poligon).
sumber
Diberikan:
Diberi waktu
T1
bagaimana cara mendapatkanP
perimeter (dengan asumsi posisi rect pada 0,0)?sekarang beberapa geometri scool primer mudah dan matematika (yang harap Anda luang saya) untuk mendapatkan
P.x
danP.y
daridistT1
sumber