एक गोल्फ बॉल प्रक्षेपवक्र समीकरण में एयर ड्रैग जोड़ना


10

मैं VB.NET 2005 में एक 2D गोल्फ खेल विकसित कर रहा हूं, लेकिन मैं इस बात पर अटका हुआ हूं कि गेंद को प्रभावित करने वाले वायु या पवन खींचें को कैसे लागू किया जाए।

पहले से ही प्रोजेक्टाइल के लिए मेरे पास ये समीकरण हैं:

  • हिट या निकाल दिए जाने पर गोल्फ के शुरुआती वेग के लिए v 0v0
  • ऊर्ध्वाधर और क्षैतिज घटक गोल्फबॉल का वेग:

    vएक्स=v0सीरों(θ)vy=v0रोंमैंn(θ)-जीटी*
  • गोल्फबॉल की ऊर्ध्वाधर और क्षैतिज दूरी:

    एक्स=v0सीरों(θ)टीy=v0रोंमैंn(θ)टी-(0.5)जीटी2

गोल्फ बॉल के वेग को ठीक से प्रभावित करने के लिए मैं इस समीकरण में एयर ड्रैग को कैसे जोड़ूं? मुझे नहीं पता कि यह कैसे करना है, क्या किसी ने समान समीकरणों के साथ काम किया है?

जवाबों:


10

मुझे यकीन नहीं है कि अगर यहां तक ​​कि ड्रैग या विंड के लिए एक बंद फॉर्म मौजूद है, लेकिन चरण-वार फैशन में अनुकरण करना काफी आसान है (जैसे सभी भौतिकी पुस्तकालय करते हैं):

  1. अपनी प्रारंभिक स्थिति निर्धारित करें:

    एक्स,y,vएक्स,vy(के लिये टी=0)
  2. अद्यतन स्थिति:

    एक्स=एक्स+(vएक्स×टी)y=एक्स+(vy×टी)

    (जहां dt अंतिम अपडेट के बाद समाप्त हुआ समय है, उर्फ ​​डेल्टा समय)

  3. इन वेग सहायकों की गणना करें:

    v2=(vएक्स)2+(vy)2|v|=v2

    |v|v

  4. ड्रैग फोर्स की गणना करें:

    आरजी=सी×v2

    (जहाँ c घर्षण का गुणांक छोटा है! )

  5. बलों को जमा करें:

    एक्स=(-आरजी×vएक्स|v|)y=(-आरजी×vy|v|)+(-जी×रोंरों)

    रोंरों

  6. अद्यतन वेग:

    vएक्स=vएक्स+एक्स×टीरोंरोंvy=vy+y×टीरोंरों

यह मूल रूप से उन भौतिक विज्ञान का अनुमान लगाने के लिए यूलर की विधि है


टिप्पणियों में अनुरोध के अनुसार अनुकरण पर थोड़ा और अधिक:

  • प्रारंभिक स्थिति (टी=0) आपके मामले में है

एक्स=0y=0vएक्स=v0×सीरों(θ)vy=v0×रोंमैंn(θ)

यह मूल रूप से आपके मूल प्रक्षेपवक्र सूत्र के समान है जहां t की प्रत्येक घटना को 0 से बदल दिया जाता है।

  • गतिज ऊर्जा =0.5(वी2) हर के लिए मान्य है टी। देखv2 ऊपर (3) के रूप में।

  • संभावित ऊर्जा पी=×जी×y हमेशा मान्य है।

  • यदि आप करंट प्राप्त करना चाहते हैं (एक्स,y) दिए हुए के लिए टी1, आपको क्या करने की आवश्यकता है, इसके लिए सिमुलेशन को इनिशियलाइज़ करें टी=0 और जब तक छोटे dt अपडेट न करें टी=टी1

  • यदि आपने पहले से ही गणना की है (एक्स,y) के लिए टी1 और आप उनके मूल्यों को जानना चाहते हैं टी2 कहाँ पे टी1<टी2, आपको केवल उन छोटे dt अपडेट चरणों की गणना करने की आवश्यकता है टी1 सेवा टी2

छद्म कोड:

simulate(v0, theta, t1)
  dt = 0.1
  x = 0
  y = 0
  vx = v0 * cos(theta)
  vy = v0 * sin(theta)
  for (t = 0; t < t1; t += dt)
    x += vx * dt
    y += vy * dt
    v_squared = vx * vx + vy * vy
    v_length = sqrt(v_squared)
    f_drag = c * v_squared
    f_grav = g * mass
    f_x = (-f_drag * vx / v_length)
    f_y = (-f_drag * vy / v_length) + (-f_grav)
    v_x += f_x * dt / mass
    v_y += f_y * dt / mass
  end for
  return x, y
end simulate

इसके लिए बहुत बहुत धन्यवाद, मैं इसे वापस पाने की कोशिश करूँगा।
स्मिथ

आपके द्वारा प्रदान किए गए इन समीकरणों से, मैं एक समय (t) के लिए वर्तमान X & Y प्राप्त करना चाहूंगा, क्या मुझे अपने V_x के साथ V_x और Vo की जगह लेना चाहिए? इसके अलावा अगर मुझे शुरुआती केई को जोड़ने की जरूरत है जिसके साथ गेंद को निकाल दिया गया था, तो क्या यह KE=0.5*m*(V*V)वैध होगा?
स्मिथ

@ आपके सवालों का जवाब देने के लिए मैं अपना जवाब संपादित करूंगा
जोनास बोटेल

यह वही है जो मैंने किया था, और x हमेशा नकारात्मक है, क्यों?
स्मिथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.