คำถามติดแท็ก rotation

การหมุนเป็นการเคลื่อนที่แบบวงกลมของวัตถุรอบแกนที่ระบุ

2
การหมุนโดยพลการเกี่ยวกับทรงกลม
ฉันกำลังเขียนรหัสกลไกซึ่งช่วยให้ผู้ใช้สามารถเคลื่อนที่ไปรอบ ๆ พื้นผิวของทรงกลมได้ ตำแหน่งบนทรงกลมปัจจุบันถูกเก็บเป็นthetaและphiโดยที่thetaมุมระหว่างแกน z และการฉาย xz ของตำแหน่งปัจจุบัน (เช่นการหมุนรอบแกน y) และphiเป็นมุมจากแกน y ไปยังตำแหน่ง ฉันอธิบายว่าไม่ดี แต่มันเป็นหลักtheta = yaw,phi = pitch Vector3 position = new Vector3(0,0,1); position.X = (float)Math.Sin(phi) * (float)Math.Sin(theta); position.Y = (float)Math.Sin(phi) * (float)Math.Cos(theta); position.Z = (float)Math.Cos(phi); position *= r; ฉันเชื่อว่านี่ถูกต้อง แต่ฉันอาจผิด rฉันจะต้องสามารถที่จะย้ายในทิศทางหลอกพลสองมิติรอบพื้นผิวของทรงกลมที่จุดกำเนิดของพื้นที่โลกที่มีรัศมี ตัวอย่างเช่นการจับWควรจะย้ายไปรอบ ๆ ทรงกลมในทิศทางขึ้นไปเมื่อเทียบกับทิศทางของผู้เล่น ฉันเชื่อว่าฉันควรใช้ Quaternion เพื่อแสดงตำแหน่ง / …

4
GLM: มุมออยเลอร์ถึงควอเทอร์เนียน
ฉันหวังว่าคุณจะรู้คณิตศาสตร์ GL ( GLM ) เพราะฉันมีปัญหาฉันไม่สามารถทำลาย: ฉันมีชุดของออยเลอร์แองเกิ้ลและฉันจำเป็นต้องทำการแก้ไขอย่างราบรื่นระหว่างพวกเขา วิธีที่ดีที่สุดคือแปลงพวกมันเป็นQuaternionsและใช้SLERP alrogirthm ปัญหาที่ฉันมีคือวิธีการเริ่มต้น glm :: quaternion กับ Euler Angles ได้ไหม? ฉันอ่านเอกสาร GLM ครั้งแล้วครั้งเล่าแต่ฉันไม่สามารถหาที่เหมาะสมQuaternion constructor signatureได้ซึ่งต้องใช้เวลาสามมุมของออยเลอร์ ที่ใกล้เคียงที่สุดที่ฉันพบคือ ฟังก์ชั่นangleAxis ()รับค่ามุมและแกนสำหรับมุมนั้น หมายเหตุโปรดสิ่งที่ฉันกำลังมองหา si RotX, RotY, RotZทางวิธีการแยก สำหรับข้อมูลของคุณนี่คือลายเซ็นของฟังก์ชันangleAxis () ที่ เป็น metnioned ด้านบน: detail::tquat< valType > angleAxis (valType const &angle, valType const &x, valType const &y, valType …

3
ฉันจะหมุนสไปรต์ภาพพิกเซลโดยไม่ทำลายความสวยงามได้อย่างไร
ตอนนี้ฉันอยู่หน้าคำถาม "การออกแบบเกม" ที่ยิ่งใหญ่ ฉันกำลังสร้างเกมพิกเซล - อาร์ต - อิชและการใช้การแก้ไขแบบบิลิแนร์สามารถแก้ปัญหาภาพเคลื่อนไหวได้มากมาย ในทางกลับกันมันไม่ใช่ "เกมพิกเซล" อีกต่อไป ถ้าฉันใช้ Bilinear Interpolation อนิเมชั่นก็ใช้งานได้ แต่มันก็ดูเหมือน "ไฮบริด - อิช" และรูปแบบศิลปะก็หายไป ฉันอาจทำให้ภาพเคลื่อนไหวของฉันยุ่งเหยิงหรือทำให้ภาพศิลปะแย่ลง ฉันมองไม่เห็นทั้งคู่ มีวิธีอื่นในการแก้ปัญหานี้หรือไม่?
12 2d  rotation  pixel-art 

2
ฉันจะย้ายสไปรต์ไปในทิศทางที่หันหน้าไปได้อย่างไร
ฉันใช้ Java / Slick 2D ฉันพยายามใช้เมาส์เพื่อหมุนสไปรต์และปุ่มลูกศรเพื่อย้ายสไปรต์ ฉันสามารถทำให้เทพดาหมุนได้โดยไม่มีปัญหา แต่ฉันไม่สามารถขยับไปในทิศทางที่ควรจะเป็นได้ เมื่อฉันกด "ส่งต่อ" สไปรท์ไม่จำเป็นต้องเลื่อนไปทางเมาส์ จริงๆแล้วมันจะเคลื่อนไปทางซ้ายของหน้าจอจริงๆเท่านั้น ฉันแน่ใจว่าต้องมีรหัสมาตรฐานสำหรับเกมนี้เนื่องจากเกมหลายเกมใช้รูปแบบการเคลื่อนไหวนี้ ทุกคนสามารถช่วยฉันด้วยสิ่งที่ตรีโกณมิติควรจะเป็น ขอบคุณ แก้ไข: นี่คือรหัสการหมุน (ซึ่งทำอย่างอื่นแปลก ๆ : /programming/12610320/why-is-my-im-image-rotating-off-center ) int mX = Mouse.getX(); int mY = HEIGHT - Mouse.getY(); int pX = sprite.x; int pY = sprite.y; int tempY, tempX; double mAng, pAng = sprite.angle; double angRotate=0; …

3
ฉันจะทำให้เอนทิตีย้ายไปในทิศทางได้อย่างไร?
ฉันมีEntityอินสแตนซ์ที่อัพเดททุกช่วงเวลาของเกม สมมติว่าเอนทิตีเคลื่อนไปข้างหน้าอย่างต่อเนื่อง ฉันต้องการให้มุมของเอนทิตีกับฟังก์ชันที่ทำให้มันไปในทิศทางนั้น: moveForward(90);ควรทำให้พวกเขาไปทางขวา ถ้าผมประกาศการหมุนของฉันเป็นโลกintแล้วทำ moveForward(rotation); rotation++; จะทำให้มันติดตามวงกลมขนาดเล็กที่มีการเคลื่อนไหว ฉันจะทำสิ่งนี้ได้อย่างไร ฉันถือว่านี่เกี่ยวข้องกับคณิตศาสตร์เวกเตอร์ ฉันไม่รู้อะไรเลยคำอธิบายสั้น ๆ น่าจะดี

2
ฉันจะหมุนโครงสร้างของแผ่นกระเบื้องหกเหลี่ยมบนตารางหกเหลี่ยมได้อย่างไร
เกมสามมิติแบบสามมิติของฉันใช้แผนที่กริดหกเหลี่ยม จากภาพด้านล่างฉันจะหมุนโครงสร้างหกเหลี่ยมสีฟ้าอ่อนได้ 60 องศารอบ ๆ รูปหกเหลี่ยมสีชมพูได้อย่างไร แก้ไข: เลขฐานสิบหกหลักคือ (0,0) Hexes อื่น ๆ คือ children การนับจะคงที่ ฉันจะกำหนดตำแหน่งเดียวเท่านั้น (ในกรณีนี้คือด้านขวา) และคำนวณทิศทางอื่น ๆ หากจำเป็น (ซ้ายล่าง, ขวา - botom, ขวาบน, ซ้ายบนและซ้าย) เลขฐานสิบหกอื่น ๆ ที่มีการกำหนดเช่น: Package.Add (-1,0), Package.Add (-2,0) และอื่น ๆ switch(Direction) { case DirRightDown: if(Number.Y % 2 && Point.X % 2) Number.X += 1; Number.Y …

5
ทำไมฉันไม่สามารถใช้โอเปอเรเตอร์ '> =' กับ Vector3s ได้
ฉันพยายามที่จะได้รับรูปสี่เหลี่ยมผืนผ้าย้ายไปมาระหว่างสองตำแหน่งที่ผมพูดถึงและ_positionA ทั้งสองประเภท_positionB Vector3สี่เหลี่ยมผืนผ้าเคลื่อนไหวได้ดี อย่างไรก็ตามเมื่อมันมาถึง_positionBมันจะไม่เคลื่อนที่ในทิศทางตรงกันข้ามเหมือนอย่างที่ควร ฉันกลับไปที่โค้ดเพื่อดู ฉันมาถึงข้อสรุปว่าเป็นวัตถุย้ายที่ifงบในรหัสพลาดเฟรมซึ่งในตำแหน่ง rects _positionBเท่ากับ ฉันตัดสินใจที่จะปรับเปลี่ยนรหัสไปในทิศทางที่ตรงกันข้ามถ้าตำแหน่ง rects คือมากกว่าหรือเท่ากับ _positionBรหัสของฉันไม่ยาวเกินไปดังนั้นฉันจะแสดงด้านล่าง: using UnityEngine; using System.Collections; public class Rectangle : MonoBehaviour { private Vector3 _positionA = new Vector3(-0.97f, -4.28f); //Start position private Vector3 _positionB = new Vector3(11.87f, -4.28f); //End position private Transform _rect_tfm; private bool _atPosA = false, _atPosB = …
9 unity  c#  vector  mathematics  vector  matrix  unity  c#  transformation  java  3d  terrain-rendering  shading  ios  opengl-es  opengl  rendering  optimization  python  scripting  minecraft-modding  modding  pc  3d-meshes  mesh  culling  point-cloud  networking  interpolation  mathematics  game-design  ai  game-mechanics  animation  unreal-4  skeletal-animation  3dsmax  unity  c#  3d  opengl  c++  textures  unity  ide  cocos2d  cocos2d-x-js  unity  c#  mono  il2cpp  c++  game-loop  timer  linux  flash  actionscript-3  java  glsl  c++  vector  entity-component  c++  directx11  windows  visual-studio  libgdx  mouse  unity  c#  architecture  storage  unity  c#  rotation  coordinates  quaternion  vrpn  movement  vector  unreal-4  unity  shaders  unity  gui  text  bug  shooter  3d  animation  rendering  voxels  c++  mmo  multithreading  linux  textures  procedural-generation  terrain-rendering  multiplayer  mmo  game-state  java  android  libgdx  opengl  procedural-generation  unity  gui  3d  animation  tools  geometry-shader  mobile  advertisements  unity  c#  animation  scripting  unity  animation  unityscript  coroutines  unity  shaders  lighting  camera 

3
Slerping กระจกหมุน
ฉันหมุนตัวละครเกมของฉันเพื่อดูที่เป้าหมายโดยใช้รหัสต่อไปนี้: transform.rotation = Quaternion.Slerp(startQuaternion, lookQuaternion, turningNormalizer*turningSpeed/10f) startQuaternion เป็นการหมุนปัจจุบันของตัวละครเมื่อกำหนดเป้าหมายใหม่ lookQuaternion เป็นทิศทางที่ตัวละครควรมองและมันก็เป็นแบบนี้: destinationVector = currentWaypoint.transform.position - transform.position; lookQuaternion = Quaternion.LookRotation(destinationVector, Vector3.up); TurningNormalizer เพิ่งTime.deltaTimeเพิ่มขึ้นและturningSpeedเป็นค่าคงที่ที่กำหนดในตัวแก้ไข ปัญหาคือในขณะที่ตัวละครเปลี่ยนตามที่ควรจะเป็นส่วนใหญ่มันมีปัญหาเมื่อมันต้องเข้าใกล้ 180 องศา จากนั้นในบางครั้งก็กระวนกระวายใจและสะท้อนการหมุน: ในภาพที่วาดไม่ดีตัวละคร (ด้านขวา) จะเริ่มหันไปทางวงกลมทางด้านซ้าย แทนที่จะแค่หมุนไปทางซ้ายหรือขวามันเริ่มต้น "mirror dance" นี้: มันเริ่มหมุนไปทางด้านหน้าใหม่ จากนั้นมันก็หันไปที่มุมเดียวกันทันที แต่อยู่อีกด้านหนึ่งและหมุนไปเรื่อย ๆ มันเป็นการ“ ทำมิเรอร์” นาน ๆ จนกว่ามันจะมองไปที่เป้าหมาย นี่คือสิ่งที่มี quaternions, slerping / lerping หรืออย่างอื่น? แก้ไข 1: เห็นได้ชัดว่าปัญหาไม่ได้เกิดจากการหมุนของตัวเอง …

2
ฉันจะจำลองลูกตุ้มแกว่งได้อย่างไร
ฉันต้องการจำลองเชือกที่มีน้ำหนักติดอยู่แกว่งไปมาเหมือนลูกตุ้ม ฟิสิกส์จริง ๆ ก็คือ overkill; มันเป็นการเคลื่อนไหวแบบเดียวกันซ้ำ ๆ ไม่รู้จบ JQuery มี"การแกว่ง" ที่ง่ายเหมือนกับสิ่งที่ฉันกำลังมองหา มันทำงานยังไง? ฉันคิดของการหมุนจากมุมหนึ่งไปยังอีกที่มีMath.easeOutExpoแต่ลูกตุ้มจริงความสะดวกแตกต่างกัน ...

4
รักษาการหมุนระหว่างวัตถุสองอย่าง
ในเกม XNA ของฉันฉันมีวัตถุสองอย่างที่ชนกัน เมื่อวัตถุแรกชนกับวัตถุอื่นมันจะสามารถยึดกับวัตถุนั้นและเคลื่อนไปรอบ ๆ โลกได้ ฉันมีปัญหากับคณิตศาสตร์ที่นี่ (คณิตศาสตร์ไม่ใช่จุดแข็งของฉัน) ขณะนี้ฉันมีวัตถุที่สองที่ยึดเข้ากับวัตถุแรกแล้วเคลื่อนที่ไปด้วย แต่ฉันไม่สามารถทำให้มันเป็นทิศทางดั้งเดิมได้ ดังนั้นหากวัตถุหันหน้าไปทางมันควรรักษาทิศทางนี้ให้สัมพันธ์กับการหมุนของวัตถุต้นฉบับ มีเคล็ดลับใดบ้างที่ฉันจะทำได้เพื่อให้บรรลุเป้าหมาย
9 xna  rotation 

1
Xbox thumbstick ที่ใช้ในการหมุนสไปรต์สูตรพื้นฐานทำให้มัน“ ติด” หรือรู้สึก“ เหนียว” ที่ระยะ 90 องศา! คุณจะหมุนอย่างราบรื่นได้อย่างไร?
ฉันใช้สูตรพื้นฐานมากในการคำนวณมุมของเทพดา (ยานอวกาศ) ที่ควรจะหันหน้าไปทางบนพื้นฐานของ thumbstick Xbox คอนโทรลเลอร์เช่นคุณใช้ thumbstick เพื่อหมุนเรือ ในวิธีการอัพเดทหลักของฉัน: shuttleAngle = (float) Math.Atan2(newGamePadState.ThumbSticks.Right.X, newGamePadState.ThumbSticks.Right.Y); ในวิธีการวาดหลักของฉัน: spriteBatch.Draw(shuttle, shuttleCoords, sourceRectangle, Color.White, shuttleAngle, origin, 1.0f, SpriteEffects.None, 1); อย่างที่คุณเห็นมันค่อนข้างเรียบง่ายฉันเอาเรเดียนปัจจุบันจากนิ้วหัวแม่มือและเก็บมันไว้ในทุ่นshuttleAngleแล้วใช้นี่เป็นอาร์กิวเมนต์มุมการหมุน (เป็นเรเดียน) สำหรับวาดรูปกระสวย ด้วยเหตุผลบางอย่างเมื่อฉันหมุน sprint มันให้ความรู้สึกเหนียวที่มุม 0, 90, 180 และ 270 องศา มันต้องการที่จะตั้งถิ่นฐานที่มุมเหล่านั้น มันไม่ให้การหมุนที่ราบรื่นและเป็นธรรมชาติเหมือนกับที่ฉันรู้สึกในเกมที่ใช้กลไกที่คล้ายคลึงกัน PS: ตัวควบคุม Xbox ของฉันไม่เป็นไร!
9 xna  c#  sprites  rotation  gamepad 

3
ฉันสามารถใช้ quaternions เพื่อควบคุมเฮลิคอปเตอร์ได้หรือไม่?
ฉันพยายามที่จะสร้างเฮลิคอปเตอร์แบบง่าย ๆ (สำหรับตอนนี้มันเป็นลูกบาศก์) จำลองในแบบ 3 มิติและฉันมีปัญหากับการหมุน เฮลิคอปเตอร์สามารถหมุนไปตามแกนสามแกน: หมุนตัวเองโดยใช้ใบพัดด้านหลัง: การหมุนแกน y เอียงไปทางซ้ายและขวาเพื่อไปทางซ้ายหรือขวา: การหมุนแกน z เอียงขึ้นและลงเพื่อย้อนกลับหรือไปข้างหน้า: การหมุนแกน x ฉันต้องการที่จะสามารถควบคุมแต่ละแกนเป็นรายบุคคล จนถึงตอนนี้ฉันได้ลองใช้มุมออยเลอร์แล้ว แต่ไม่ว่าฉันจะใช้คำสั่งหมุนแบบใดฉันก็จะใช้ gimbal lock หรือ axes "switch places" ฉันดูเหมือนว่าฉันต้องใช้ quaternions แต่ฉันไม่รู้วิธีควบคุมแกนแต่ละอันเนื่องจาก quaternions ใช้ทิศทางและมุม ฉันควรสร้างสามควอเทอร์เนียนและคูณพวกมันเข้าด้วยกันไหม? ฉันจะไม่จบลงด้วยปัญหาเดียวกันหรือไม่? สิ่งที่แปลกคือถ้าฉันใช้นิ้วของฉันเพื่อเป็นตัวแทนของสามแกนของเฮลิคอปเตอร์ของฉัน (thumb up = y, index = z, middle = x) ดูเหมือนว่าฉันจะไม่พบปัญหาเหล่านั้น ทำไม?
9 3d  rotation 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.