Saya mencoba untuk merencanakan posisi x dan y dari spiral Archimedean di C ++.
Sejauh ini saya sudah mencoba sesuatu seperti ini, tetapi tidak berhasil:
int dx = 0;
int dy = 0;
int x = 0;
int y = 0;
for (int i = 0; i < maxPoints; i++)
{
dx = sin(i * PI / 2);
dy = cos(-i * PI / 2);
x += dx;
y += dy;
plot(x, y);
}
Sunting: Info lebih lanjut
Saya sedang mengembangkan aplikasi game 3D yang menunjukkan penggunaan mesin fisika Bullet dengan mensimulasikan kartu domino. Alih-alih menempatkan domino dalam adegan secara manual, saya ingin menggunakan beberapa matematika untuk melakukannya untuk saya :)
Bagi siapa saja yang tertarik di sini ada di GitHub .
int
. Secara khusus,dx
dandy
mungkin akan mendapatkan 0.Jawaban:
Mencari tahu :) Domino sekarang ditempatkan di sepanjang koordinat X dan Y yang dihasilkan oleh fungsi.
Kode asli dalam pertanyaan adalah merencanakan gelombang titik keluar dari posisi tengah atau asal dan bukan yang saya inginkan. Yang saya butuhkan adalah setiap titik untuk mengikuti
Archimedean spiral
dengan ruang tertentu di antara spiral.Awalnya saya menggunakan
integer
nilai untuk menyimpanx
dany
koordinat tetapi ini menyebabkan kesalahan presisi dengan memotongfloating point
nilai untuk menyimpannya diinteger
tipe data.Contoh di bawah ini menghasilkan titik di sepanjang spiral terus menerus, relatif terhadap
maxPoints
nilai.Kode untuk proyek ini ada di GitHub , Anda perlu Bullet dan freeglut
sumber
Ini bukan jawaban langsung untuk pertanyaan ini (yang sudah memiliki jawaban), tetapi mungkin menarik minat orang yang ingin mengimplementasikan algoritma ini dalam 3D.
Saya harus mencoba mengimplementasikan algoritma ini untuk menghasilkan spiral 3D dalam blender menggunakan Python (dapat dengan mudah dikonversi menjadi menggambar dengan PIL atau Matplotlib dalam 2D). Jadi inilah algoritma dan hasilnya:
sumber
size
param seragam ).