سؤال

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

float distance = (float) ((Math.sqrt((p1.x - p2.x) + (p1.y - p2.y))));
float camx = (float)((p1.x + p2.x) * 0.5);
float camy = (float)((p1.y + p2.y) * 0.5);
float camz = (float) (distance * 5);

ما هي الرياضيات ولست بحاجة لذلك الأزيز وZ الدخول والخروج بشكل صحيح؟

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

المحلول 4

float distance = (float) ((Math.sqrt(Math.pow((p1.x - p2.x),2.0) + Math.pow((p1.y - p2.y), 2.0))));
float camx = (float)((p1.x + p2.x) * 0.5);
float camy = (float)((p1.y + p2.y) * 0.5);
float camz = (float) Math.abs(distance);

نصائح أخرى

إذا كل الكائنات لها ض = 0، وزاوية شاشة العرض (من <م> مركز من الشاشة إلى الحافة) هو الفأس وعبد المنعم يوسف لالزوايا الأفقية والرأسية، ثم:

zx = abs((p1.x-p2.x)*0.5)/tan(ax)
zy = abs((p1.y-p2.y)*0.5)/tan(ay)

و

camz = max(zx, zy)

وهنا ZX وزينب يوسف هي مسافات للحصول على الكائنات إلى الأبعاد الأفقية والعمودية للشاشة، وcamz هي المسافة التي ترضي كلا المعايير. لاحظ أيضا أن الفأس وعبد المنعم يوسف هي بالراديان (على سبيل المثال، إذا كنت تحمل الشاشة هي 40 درجة واسعة، ثم الفأس هو 20 درجة، أو الفأس = 20 * (بي / 180) = 0.3419 راديان).

وكانت القيم الخاصة بك لcamx وcamy الصحيحة.

وربما أنا سوء فهم الوضع الخاص بك، ولكن لا يمكن أن تفعل فقط

float camx = (p1.x + p2.x) * 0.5;
float camy = (p1.y + p2.y) * 0.5;
float camz = (p1.z + p2.z) * 0.5;

وهذا من شأنه وضع الكاميرا مباشرة بين الكائنين.

وإذا ما فإنه يجب أن يتم تصحيحه كما،

<اقتباس فقرة>   

وبعد تعويم = (تعويم) ((Math.sqrt ((p1.x - p2.x) ^ 2 + (p1.y - p2.y) ^ 2)))؛

وأنا لا prettey متأكدة من بناء الجملة. وأنا أقول لكم حاجة إلى الحصول على الطاقة من 2 قبل إضافة ناقلات.

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