การเคลื่อนย้ายวัตถุในเส้นทางวงกลม


26

ฉันต้องการย้ายวัตถุหนึ่งจุด (จุด) ในเส้นทางวงกลม ฉันจะเปลี่ยนพิกัด X และ Y เป็นอย่างไร

คำตอบ:


54

คุณสามารถทำได้โดยใช้คณิตศาสตร์อย่างง่าย:

X := originX + cos(angle)*radius;
Y := originY + sin(angle)*radius;

(originX, originY)เป็นศูนย์กลางของแวดวงของคุณ รัศมีคือรัศมี แค่นั้นแหละ.

นี้ทำงานได้เพราะไซน์และโคไซน์มีความสัมพันธ์ทางคณิตศาสตร์ในแวดวงหน่วย

ความสัมพันธ์ของไซน์และโคไซน์กับวงกลมหน่วย
เครดิตภาพ: LucasVB (ทำงานเอง) [สาธารณสมบัติ] ผ่านวิกิพีเดีย (ลดขนาดลงเหลือ 70%)


เกิดอะไรขึ้นถ้ามันเป็นรูปวงรี? คือไม่มีการกำหนดรัศมี
ทดสอบ

2
@test: หากวงรีเป็นแบบ X หรือ Y คุณสามารถคูณตำแหน่งแกนที่สอดคล้องกันโดยใช้ปัจจัยเพิ่มเติม หากคุณต้องการรายละเอียดเพิ่มเติมคุณควรถามคำถามแยกต่างหาก
Kromster พูดว่าสนับสนุน Monica

@Anko: ฉันไม่คิดว่าอนิเมชั่นจะอธิบายได้ดีขึ้น แต่ให้สำหรับผู้ที่ต้องการ แปลงเป็น CW
Kromster พูดว่าสนับสนุน Monica

@ Kromster สิ่งที่เกี่ยวกับการบรรลุผลเดียวกันในพื้นที่ 3 มิติ?
โทมัส

14

คุณสามารถใช้สมการพารามิเตอร์ตามที่ระบุไว้โดย Krom เพื่อให้เข้าใจว่าทำไมเราจึงใช้สูตรนี้คุณต้องเข้าใจว่าสมการคืออะไร สมการนี้ได้มาจากสมการตัวแปรของวงกลม

การพิจารณาวงกลมถูกวาดด้วยจุดศูนย์กลางบนจุดกำเนิด (O) ดังที่แสดงในแผนภาพด้านล่าง วงกลม

หากเราหาจุด "p" บนเส้นรอบวงของวงกลมจะมีรัศมี r

ให้มุมที่ทำโดย OP (ต้นกำเนิดถึง p) เป็น be ให้ระยะห่างของ p จากแกน x เป็น y ปล่อยให้ระยะทาง p จากแกน y เป็น x

จากการใช้ข้อสมมติข้างต้นเราจะได้สามเหลี่ยมที่แสดงด้านล่าง: สามเหลี่ยม

ตอนนี้เรารู้แล้วว่าcos θ = ฐาน / ด้านตรงข้ามมุมฉากและบาปθ = ตั้งฉาก / ด้านตรงข้ามมุมฉาก

ซึ่งให้เราcos θ = x / rและsin θ = y / r

:: x = r * cos θและ y = r * sin θ

แต่ถ้าวงกลมไม่ได้อยู่ที่จุดกำเนิดและค่อนข้างที่ (a, b) เราสามารถพูดได้ว่าศูนย์กลางของวงกลมนั้นเปลี่ยนไป

หน่วยในแกน x
ขหน่วยในแกน y
ดังนั้นสำหรับวงดังกล่าวเราสามารถเปลี่ยนสมการพารามิเตอร์ตามด้วยการเพิ่มการเลื่อนบนแกน x และ y ทำให้เรามีสมการต่อไปนี้:

x = a + (r * cos θ)
y = b + (r * sin θ)


โดยที่ & b คือ x, y พิกัดของศูนย์กลางของวงกลม

ดังนั้นเราจึงพบ x และ y พิกัดของจุดบนเส้นรอบวงของวงกลมด้วยรัศมี r


2
ขอบคุณคำตอบที่ดีจริงๆและสั้น ๆ สำหรับปัญหานี้ยกนิ้ว
Ali.Ghodrat

5

มีอีกกลลวงที่คุณใช้สูตร sin (x + a) และ cos (x + a) และนั่นทำให้คุณสามารถคำนวณ sin (a) และ cos (a) - มุมที่คุณต้องการเคลื่อนไหว จากตำแหน่งปัจจุบันของคุณ - เพียงครั้งเดียวและทำการคูณและเพิ่มเติมในแต่ละขั้นตอน

sin (x + a) = sin (x) * cos (a) + cos (x) * sin (a), iirc

แน่นอนว่าจะถือว่าความเร็วเชิงมุมคงที่

ระวังความแม่นยำทางคณิตศาสตร์ที่ จำกัด ฉันได้สังเกตเห็นการเคลื่อนไหวในลักษณะ "วงกลม" ที่ผ่านมานำมาใช้ในลักษณะนั้นซึ่งจะทำให้เกิดการหมุนวนซึ่งเป็นผลมาจากการปัดซ้ำเป็นครั้งคราวเมื่อเวลาผ่านไป อาจจำเป็นต้องรีเซ็ตตำแหน่งเป็น (x0, y0) หลังจากการปฏิวัติแต่ละครั้ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.