เมื่อฉันต้องการย้ายวัตถุไปรอบ ๆ จุดฉันทำ:
point.x *= cosf(timer.timeElapsed);
point.y *= sinf(timer.timeElapsed);
วิธีทำให้จุดเคลื่อนที่บนวิถีวิถีแปดหรืออนันต์
เมื่อฉันต้องการย้ายวัตถุไปรอบ ๆ จุดฉันทำ:
point.x *= cosf(timer.timeElapsed);
point.y *= sinf(timer.timeElapsed);
วิธีทำให้จุดเคลื่อนที่บนวิถีวิถีแปดหรืออนันต์
คำตอบ:
ความเป็นไปได้บางอย่าง:
ในฐานะที่เป็น Marton บันทึกว่ามี "รูปแปด" หลายโค้งที่อาจตอบสนองความต้องการของคุณ บางทีที่ง่ายที่สุดคือlemniscate ของ Geronoซึ่งมี parametrization:
x = cos(t);
y = sin(2*t) / 2;
และมีลักษณะเช่นนี้:
อย่างไรก็ตามlemniscate ของ Bernoulliอาจจะดูดีกว่า มันมี parametrization คล้ายกับ lemniscate ของ Gerono ยกเว้นว่าทั้งสองแกนจะถูกปรับอัตราส่วนโดยปัจจัย1/(sin(t)^2 + 1) = 2/(3 - cos(2*t))
:
scale = 2 / (3 - cos(2*t));
x = scale * cos(t);
y = scale * sin(2*t) / 2;
ดูเหมือนว่านี้:
(ภาพเคลื่อนไหวที่ทำจาก Maple 13 บีบอัดด้วย GIFsicle)
t
อันนี้ยังไม่ได้นำเสนอในรูปแบบตัวแปรที่ช่วยให้เราได้อย่างง่ายดายก้าวตำแหน่งไปข้างหน้าเมื่อเวลาผ่านไป ฉันขอแนะนำให้รวมคำอธิบายว่าคุณจะใช้สูตรนี้อย่างไรในการวางตำแหน่งวัตถุที่เคลื่อนไหวตลอดเวลา