سؤال

يا مهووس الرياضيات، لدي مشكلة تم توعيتني لفترة من الوقت الآن. انها لمشروع شخصي.

لدي ثلاث نقاط: الأحمر والأخضر والأزرق. إنهم يوضعون على زلة من الورق المقوى، بحيث يكون النقطة الحمراء في اليسار السفلي (0،0)، فإن النقطة الزرقاء في اليمين السفلي (1،0)، والطريقة الخضراء في الجزء العلوي الأيسر. تخيل التراجع والتقاط صورة للبطاقة من زاوية. إذا كنت تجد مركز كل نقطة في الصورة (دعنا نقول الوحدات هي بكسل)، فكيف تجد ناقل وجه البطاقة المعتاد في الصورة (بالنسبة للكاميرا)؟

الآن بعض الأشياء التي التقطتها حول هذه المشكلة:

  1. النقاط (في "الحياة الحقيقية") دائما في الزاوية اليمنى. في الصورة، فهي فقط في الزاوية اليمنى إذا تم تدوير الكاميرا حول النقطة الحمراء على طول "محور" (محور "كون الخط الذي تم إنشاؤه بواسطة النقاط الحمراء والأزرق أو الأحمر والأخضر).
  2. هناك نقاط على جانب واحد فقط من البطاقة. وبالتالي، أنت تعلم أنك لن تنظر أبدا إلى الجزء الخلفي منه.
  3. المسافة من البطاقة إلى الكاميرا غير ذي صلة. إذا كنت أعرف عمق كل نقطة، فسيكون هذا أسهل بكثير (مجرد منتج متقاطع بسيط، لا؟).
  4. دوران البطاقة غير ذي صلة بما أبحث عنه. في العبث الذي كنت أفعله لمحاولة معرفة هذا واحد، يمكن العثور على الدوران بمساعدة ناقلات العادي في النهاية. سواء كان الدوران جزءا من (أو منتج) العثور على ناقل عادي غير معروف لي.

نأمل أن هناك شخص ما هناك إما القيام بذلك أو عبقرية رياضية. لقد حصلت على اثنين من أصدقائي هنا مساعدتي في ذلك ونحن - حتى الآن - غير ناجحة.

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

المحلول

لقد عملت بها في الإصدار القديم من MathCad:

alt text

تحرير: الصياغة خطأ في لقطة شاشة Mathcad: "المعروف: جيم و ب نكون عمودي لبعضها البعض "

في MathCad لقد نسيت الخطوة الأخيرة من القيام بالمنتج عبر المنتج، والتي سأنسخها هنا من إجابتي السابقة:

الآن تم حلها ل XYZ للنقاط G و B مترجمة، وسألك الأصلي يريد طبيعي الطائرة.

إذا كان الصليب جيم عاشر ب, ، سنحصل على ناقل طبيعي لكليهما:

        | u1  u2  u3 |
g x b = | g1  g2  g3 |
        | b1  b2  b3 |  

      = (g2b3 - b2g3)u1 + (b1g3 - b3g1)u2 + (g1b2 - b1g2)u3

جميع القيم معروفة، قم بتوصيلها (لن أكتب الإصدار باستخدام G3 و B3 بديلا، لأنها طويلة جدا وقبيح أن تكون مفيدة.

ولكن في شروط عملية، أعتقد أنك سوف تضطر إلى حلها عديا، والضبط جيمz. و بz. حتى تناسب الحالات الأفضل:

جيم · ب = 0

و

|جيم| = |ب|

منذ البيكسلات ليست مثالية جبريا.

مثال

باستخدام صورة لرائد فضاء Apollo 13 تزوير إحدى شرك Lithium Hydroxide Square Lithium Square Lithium في Lem، أنا موجود الزوايا:

alt text

استخدامها كأساس لطائرة XY:

alt text

قمت بتسجيل مواقع البكسل باستخدام Photoshop، مع الإيجابية X إلى اليمين، والإيجابية Y Down (للحفاظ على الحكم الأيمن من Z يحدث "إلى" الصورة):

جيم = (79.5، -48.5، زz.)

ب = (-110.8، -62.8، بz.)

تثقيب اثنين من الصيغ البدنية في Excel، واستخدام ToolPack التحليل إلى "تصغير"الخطأ عن طريق ضبط جيمz. و بz., ، تولى مع قيمين Z:

جيم = (79.5, -48.5, 102.5)

ب = (-110.8, -62.8, 56.2)

التي تتيح لي بعد ذلك قص القيم الأخرى المثيرة للاهتمام.

طول جيم و ب في بكسل:

|جيم| = 138.5

|ب| = 139.2

المتجه الطبيعي:

جيم عاشر ب = (3710, -15827, -10366)

الوحدة العادية (الطول 1):

U.ن = (0.1925, -0.8209, -0.5377)

تحجيم طبيعي بنفس الطول (بالبكسل) جيم و ب (138.9):

طبيعي = (26.7، -114.0، -74.7)

الآن بعد أن يكون لدي طبيعي هو نفس الطول جيم و ب, ، لقد قطعتهم على نفس الصورة:

alt text

أعتقد أنك ستكون لديك مشكلة جديدة: التشويه التي أدخلتها عدسة الكاميرا. لا يتم توقعها النقاط الثلاثة تماما على الطائرة الفوتوغرافية الثانية الأبعاد. هناك تشويه كروي يجعل الخطوط المستقيمة لم تعد مستقيمة، مما يجعل أطوال متساوية لم تعد متساوية، وتجعل الشريعة قليلا من المعتاد.

يحتوي Microsoft Reseach على خوارزمية لمعرفة كيفية تصحيح تشويه الكاميرا:

تقنية جديدة مرنة للمعايرة الكاميرا

لكنها خارجي:

نقترح تقنية جديدة مرنة لمعايرة الكاميرا بسهولة. إنه مناسب بشكل جيد للاستخدام دون معرفة متخصصة في الهندسة ثلاثية الأبعاد أو رؤية الكمبيوتر. تتطلب هذه التقنية فقط أن تلتزم الكاميرا بنمط مستو في عدد قليل من الاتجاهات المختلفة (ما لا يقل عن اثنين). يمكن أن يتم نقل الكاميرا أو نمط المستوي بحرية. يجب عدم معرفة الحركة. تم تصميم تشويه عدسة شعاعي. يتكون الإجراء المقترح من حل مشكل مغلقة، يليه عملية تحويل غير خطية بناء على أقصى معيار احتمالية. تم استخدام كل من محاكاة الكمبيوتر والبيانات الحقيقية لاختبار التقنية المقترحة، وقد تم الحصول على نتائج جيدة للغاية. مقارنة بالتقنيات الكلاسيكية التي تستخدم معدات باهظة الثمن مثل طائرتين أو ثلاث طائرات متعامدة، فإن التقنية المقترحة سهلة الاستخدام ومرنة. إنها تقدم رؤية الكمبيوتر ثلاثية الأبعاد خطوة واحدة من بيئات المختبر إلى استخدام العالم الحقيقي.

لديهم صورة عينة، حيث يمكنك رؤية التشويه:

alt text
(مصدر: microsoft.com.)

ملحوظة

  • أنت لا تعرف ما إذا كنت ترغب في رؤية "أعلى" من الورق المقوى، أو "الأسفل"، لذلك يمكن أن تعكس العادي رأسيا (أي Z = -Z)

تحديث

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

إليك لقطة شاشة من Excel حيث أبدأ مع القواعد الوظيفتين:

جيم · ب = 0

و

|جيم| = |ب|

كتابة 2nd واحد كفرق ("خطأ" (خطأ ")، يمكنك بعد ذلك إضافة واستخدام هذه القيمة كرقم للحصول على Solver في Excel تصغير:

alt text

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

نصائح أخرى

من أصوات ذلك، لديك ثلاث نقاط ب1, ب2, ، و ب3 تحديد طائرة، وتريد العثور على المتجه الطبيعي للطائرة.

يمثل النقاط كمنتجات من الأصل، معادلة لنطق عادي سيكون
ن = (ب2 - ب1) x (ب3 - ب1)
(حيث x هو المنتج المتبادل للمخلفات)

إذا كنت تريد أن يشير المتجه إلى الخارج من أمامي من البطاقة، ثم Ala الحكم الأيمن، مجموعة
ب1 = أحمر (أسفل اليسار) نقطة
ب2 = الأزرق (أسفل اليمين) نقطة
ب3 = الأخضر (الجزء العلوي الأيسر) نقطة

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

بz. يجب أن يكون +/- جذر مربع جيمعاشر2 + g.Y.2 + g.z.2 - بعاشر2 - بY.2

بعد أن فعلت هذا نفسي، وجدت أنه من الصعب للغاية البدائل بz. في المعادلة الأولى عند حلها ل Gz., ، لأنه عند استبدال بz., ، سوف تحصل الآن على:

جيمz. = - (زعاشربعاشر + g.Y.بY.) / SQRT (Gعاشر2 + g.Y.2 + g.z.2 - بعاشر2 - بY.2 )

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

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

مجرد التفكير على قدمي هنا.

مدخلاتك الفعالة هي النسبة الواضحة RB / RG [+]، BRG الزاوية الظاهرة، والزاوية التي (say) RB يجعل مع شاشةك تنسيق Y-AXIS (هل افتقد أي شيء). تحتاج إلى مكونات ناقلات العادي الطبيعي (الهاء!)، والتي أعتقد أنها قيمتين مستقلةتين فقط (على الرغم من أنك تركت مع غموض من الأمامي إذا كانت البطاقة ترى). [++

لذلك أنا أظن أن هذا ممكن ...

من هنا، أعمل على افتراض أن الزاوية الظاهرة من RB هي دائما 0، ويمكننا تدوير الحل النهائي حول محور Z في وقت لاحق.

ابدأ في وضع البطاقة الموازية للطائرة المشاهدة والتوجه في الطريقة "الطبيعية" (أي فإنك العلوي مقابل انخفاض التخصيصات المنخفضة واليسرى مقابل المهام الصحيحة). يمكننا الوصول إلى جميع المواقف المثيرة للاهتمام من البطاقة عن طريق التدوير من قبل \theta حول المحور X الأولي (ل -\pi/2 < \theta < \pi/2)، ثم الدورية من قبل \phi حول محور y الأولي (ل -\pi/2 < \phi < \pi/2). لاحظ أننا حافظنا على الاتجاه الواضح لنطق RB.

الخطوة التالية تحسب النسبة الظاهرة والزاوية الظاهرة بعد من حيث \theta و \phi وانقلب النتيجة. [+++

العادي سيكون R_y(\phi)R_x(\theta)(0, 0, 1) بالنسبة R_i مصفوفة الدوران البدائية حول المحور i.

+] الأطوال المطلقة لا تعول، لأن هذا يخبرك فقط المسافة إلى البطاقة.

++] افتراض آخر: أن المسافة من البطاقة لعرض الطائرة كبيرة بكثير من حجم البطاقة.

+++] هنا الإسقاط الذي تستخدمه من مساحة ثلاثة أيام إلى مسائل عرض الطائرة. هذا هو الجزء الصعب، ولكن ليس شيئا يمكننا القيام به بالنسبة لك إلا إذا قلت ما الإسقاط الذي تستخدمه. إذا كنت تستخدم كاميرا حقيقية، فهذا هو إسقاط منظور ومغطى بأي كتاب في الرسومات ثلاثية الأبعاد.

الحق، ولا يتغير المتجه الطبيعي عن بعد، ولكن الإسقاط من الورق المقوى على صورة هل تغيير عن بعد (بسيطة: إذا كان لديك لوحة من الورق المقوى الصغيرة، لا شيء يتغير. إذا كان لديك الورق المقوى 1 ميل واسعة وعلى بعد 1.6 ميلا وتدويرها بحيث جانب واحد أقرب والجانب الآخر بعيدا، والجانب القريب هو مكبرة والجهة البعيدة تقصير على الصورة. يمكنك أن ترى ذلك على الفور أن المستطيل لا يبقى مستطيلا، ولكن أرجوحة)

الطريقة الأكثر دقة للزوايا الصغيرة والكاميرا التي تركزت على الوسط هي قياس نسبة العرض / الارتفاع بين الصورة "العادية" وصورة زاوية الزاوية على الخطوط الوسطى (لأنها غير مشوهة).

نحن نحدد X كما يتبقى إلى اليمين، ص على ما يصل إلى أعلى، ض ما من بعيد إلى القريب.

ثم
X = Arcsin (مقاييس / Normwidth) أحمر أزرق
Y = Arcsin (القياس / Normheight) أحمر أخضر
z = sqrt (1.0-x ^ 2-y ^ 2)

سأحسب غدا محللا أكثر دقة، لكنني متعبا جدا الآن ...

يمكنك استخدام u، v، n oridnates المشارك. قم بتعيين وجهة نظرك إلى موضع "العين" أو "الكاميرا"، ثم ترجمة X، Y، Z المشارك إلى U، V، N. من هناك، يمكنك تحديد الحالة الطبيعية، وكذلك منظور الأسطح والأسطح المرئية إذا كنت تريد (U '، V'، N '). أيضا، ضع في اعتبارك أن 2D = 3D مع z = 0. أخيرا، تأكد من استخدام المرسوم المتشاكة.

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