سؤال

أواجه مشكلة في التفكير والبحث هنا ولا يمكنك العثور على الاتجاه الجيد للنظر في ... أبحث عن تطوير خوارزمية للتحرك في صورة 360 (كرة مثل) باستخدام حركة الجهاز.

حتى إذا أشر المستخدم الجهاز أمامه، فاحصل على نقطة الأصل الحازمة للصورة.لأنه يتحرك الجهاز من حوله يتحرك الصورة البانورامية وفقا لذلك.

أي فكرة أو مصدر يمكنني أن أنظر إليه؟

شكرا حظا سعيدا للجميع مع سويفت :)

هل كانت مفيدة؟

المحلول

أرى طريقتين سهلين لتنفيذ هذا دون الكثير من المتاعب الرياضيات:

  1. استخدم زوايا Euler IE لفة خاصية CMattitude . حدد تعيين بين عرض الصورة والزاوية المقاسة والعناية بالفرد التفرد عند 180 درجة / -180 درجة. عيب هذا النهج:
    • خطر محتمل من قفل gimbal عندما يبدأ المستخدمون في نقل أجهزتهم بطريقة فوضوية.
    • نفس الشيء ينطبق على القابلية للتوسعة فيما يتعلق بمنظر ثلاثي الأبعاد كامل.
  2. استخدام المجال المغناطيسي من cmdevicemotion وهو قوي ضد قفل gimbal. مقياس المغنطيسي أبطأ قليلا من التسارع / الدوران، لكنني أعتقد أن خوارزمية CoreMotion's Fusion ستوفر تقدما معقولا بحيث لن يكون هذا هو النقطة. العيوب هنا:
    • المجال المغناطيسي غير متاح دائما أو يميل إلى أن يكون غير دقيقين slighlty.
    • تمديده إلى عرض ثلاثي الأبعاد قد يكون متاعب.
  3. يجب أن تكون كلا النهج سهلة التنفيذ وبالتالي سأبدأ مع أحدهم. إذا كنت تريد بعد ذلك الحصول على حل أكثر تطورا، فستحتاج إلى الغوص أعمق قليلا في الرياضيات. في هذه الحالة، يمكن أن يكون الحل المعالج استخدام الجهاز الحالي العادي (S. على سبيل المثال العثور على ناقل عادي لجهاز iOS )، والشروع على الطائرة الأرضية الأرض واتخاذ دلتا الزوايا للحصول على بانوراما أسطوانية.

    يسهل الإسقاط المجال في هذه الحالة كما يمكنك استخدام المتجه الرشي مباشرة.

نصائح أخرى

شكرا لكي، يمكن أن أكون على المسار الصحيح لتحقيق هذا التأثير.

أنا جعل هذه الإجابة فقط لتوفير مزيد من التفاصيل لأولئك الذين يبحثون عن نفس الشيء.

أولا تحتاج إلى إنشاء كائن CMMTONAGER.

ثم استخدم startdevicemotionupdatoque للتعامل مع أحداث الحركة.

giveacodicetagpre.

in processmotion تحتاج فقط إلى الحصول على الموقف بناء على واحد السابق:

giveacodicetagpre.

بفضل هذا تعرف الزاوية الجديدة التي قدمها المستخدم منذ آخر تحديث. ثم حيث يمكنك التعامل مع رأيك تقوم بتحويل زاوية Euler الجديدة إلى كمية البكسل تحتاج إلى نقل صورتك. فقط كن حذرا زاوية Euler تختلف بين -180 و 180 وترد في Rad by Apple.هذا يمكن أن يكون مفيدا:

giveacodicetagpre.

لذلك في حالتي، أنا فقط احسب إزاحة X الجديدة لأنني أتحرك فقط على المحور x.

نأمل أن يساعد هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top