ठीक है, मैं परिणामों के साथ वापस आ गया हूँ!
मैंने दो दृष्टिकोण आजमाए:
पहियों के केंद्रों की गति को नियंत्रित करने वाले एक अंतर समीकरण को प्राप्त करने के लिए ठोस यांत्रिकी का उपयोग करना: सिस्टम "बाइक" के इनपुट रियर व्हील और फ्रंट व्हील के कोण पर टोक़ हैं, और आउटपुट केंद्रों के कीनेमेटीक्स हैं पहियों का। लेकिन मैंने हार मान ली, यह कठिन था!
यह अनुमान लगाने की कोशिश की जा रही है कि ज्यामितीय बिंदु से क्या होता है जब पीछे का पहिया सामने के पहिये को "धक्का" देता है और सामने का पहिया सीधा नहीं होता है। इस विधि से सीधे इन्फिनिटिमल इन्क्रीमेंट (नीचे देखें) का समीकरण मिलता है, जिससे आप वास्तविक अंतर समीकरण प्राप्त कर सकते हैं। मैंने ODE प्राप्त करने के लिए इस पहले समीकरण में हेरफेर करने की कोशिश नहीं की है, लेकिन मेरा अनुमान है कि मैंने ठोस मैकेनिक्स का उपयोग करते हुए उसी ODE को प्राप्त किया होगा। यह सिर्फ सही लगता है।
अंकन और परिकल्पना:
हम विमान में पूर्व वैक्टर एक्स और आंख के साथ हैं ।
A , रियर व्हील का केंद्र है। B सामने वाले पहिये का केंद्र है। बाइक L की लंबाई A और B के बीच की दूरी है । के बीच के कोण ey और वेक्टर एबी है φ । के बीच के कोण एबी और सामने पहिया है θ ।
सहज ज्ञान युक्त तर्क:
हम मानते हैं कि, एक निश्चित तात्कालिक टी पर , ए (टी) में एबी के साथ एक वेग वी (टी) कॉलिनियर है । इसलिए, एक अनंत टाइमस्टेप डीटी के लिए ,
एक (टी + डीटी) = एक (टी) + V (टी) .dt ।
हम यह भी है कि लगता है कि समय में, टी ,, सामने का पहिया बहाव नहीं करता है यानी की गति बी सामने पहिया की दिशा से colinear है, यानी एक कोण रूपों θ साथ एबी । हम फोन Uθ इकाई वेक्टर एक कोण बनाने θ साथ एबी , सामने पहिया के रूप में एक ही दिशा के साथ यानी इकाई वेक्टर।
इसलिए, t + dt पर ,
बी (टी + डीटी) = बी (टी) + λ.Ut
एक निश्चित वास्तविक, सकारात्मक λ जैसे कि बाइक L की लंबाई संरक्षित है:
दूरी (ए (टी + डीटी), बी (टी + डीटी)) = एल
गणना:
यह अंतिम समीकरण इसका अनुवाद करता है
norm (B (t) + λ.U A - A (t) - V (t) .dt) = L
लेकिन B (t) , परिभाषा के अनुसार, A (t) + L.U so है , ताकि λ समीकरण को संतुष्ट करना चाहिए
norm (L.Uφ + λ.U V - V (t) .dt) = L² ।
समाधान, ज़ाहिर है, से स्वतंत्र है φ के बाद से समस्या एक ही है जब सकारात्मक दिशा में बाइक अंक y । इसलिए, यदि हम आर -रोटेशन मैट्रिक्स को कोण- if के साथ कहते हैं , तो λ का सकारात्मक समाधान होना चाहिए
norm (L.ey; + λ.U RV - RV (t) .dt) = L² ।
कुछ गणना के बाद, अगर हम कहते हैं वी के आदर्श वी , आपको मिल
λ = L. (sqrt (1 - (sin (()। (1-v.dt / L)) () - cos (θ)) + v.dt.cos (θ) ।
यहाँ pseudocode मैं ऊपर दिए गए एनीमेशन का उपयोग करता था (U I का उपयोग करने के बजाय , मैं u = U ( because + was ) का उपयोग करता हूं क्योंकि यह सरल था):
// I start at i=1 because i=0 contains the initial values
for (int i=1; i<=N; i++)
{
// the array in which I stored the successive A points
Aarray[i] = Aarray[i-1] + dt*V;
float lambda = L*( sqrt(1 - (sin(theta)*(1-v*dt/L))**2) - cos(theta) )
+ cos(theta)*v*dt;
// the array in which I stored the successive B points
Barray[i] = Barray[i-1] + lambda*u;
// the AB vector normalized
AiBiUnit = (Barray[i] - Aarray[i])/L;
// Refreshing the velocity of A
V = v*AiBiUnit;
// Refreshing u.
// u is indeed a unit vector separated from AiBiUnit by an angle theta,
// so you get it by rotating the newly computed AiBiUnit by an angle
// of +theta:
u = AiBiUnit.rotate(theta);
}
यदि आप बहुत दोहराते हैं और / या स्टीयरिंग कोण बढ़ाते हैं, तो प्रक्षेपवक्र एक चक्र है, जो सुसंगत है, मेरा मानना है।