Identity Of Code

هیچی و همه چی

Identity Of Code

هیچی و همه چی

کار-انرژی-توان | WORK-POWER-ENERGY


مفهوم انرژی

غیر از مفهوم نیرو مفهوم دیگه ای که برای حل و پیاده سازی حرکت پرکاربرد هست،مفهوم انرژی و قانون پایستگی انرژی هست،در واقع انرژی ونیروی حرکتی با هم تعامل برقرار میکنن تا ما بتونیم بعضی از مسائل  رو    باید از این متد استفاده 

کرد.collisionآسون تر حل کنیم،برای مثال برای پیاده سازی برخورد 


مفهوم کار فیزیکی

ما معمولا میگیم که نیرو عامل حرکته ، و همچنین میبینیم که یک نیرو میتونه وجود داشته باشه که با نیروی دیگری در تعادل باشه،که در این صورت حرکت رخ نمیده،در فیزیک ما وقتی میگیم کار توسط نیرویی انجام شده که باعث ایجاد حرکت در جهت نیرو شده باشه.
اگه 
Wرو کار،Fرو بزرگی نیرو،و s رو جابجایی و angleرو زاویه بین جهت نیرو و جابجایی در نظر بگیریم داریم:

W=F*s*Cos(angle)
 

 

فکر کنید جسمی از ارتفاع رها میکنیم،اگر از اصطکاک صرف نظر کنیم داریم:

W=m*g*h

چون f=mg و cos0=1
*توجه داشته باشیم که همیشه شتاب در جهت نیرو هست، اما جابجای لزوما اینطور نیست.

ظرفیت انجام کار : انرژی

انرژی ظرفیت یک جسم برای انجام کار هست،جسمی که از ارتفاعی رها میشه در حالتی که ارتفاع داره دارای انرژی پتانسیل p.e و هنگامی که در حال حرکت هم هست داره کار انجام میده و انرژی جنبشی k.e داره،درواقع کار عامل انتقال یا تبدیل انرژی هست ،طبق نظریه کار .انرژی داریم:انرژی جابجا .شده = کار انجام شده


deltaE=deltaW

بنابرین  برای انرژی پتانسیل داریم:

Ep=m*g*h

انرژی از شکلی به شکل دیگر تغییر میکنه یا از جسمی به جسمی دیگر انتقال میابه،اما کل انرژی در یک سیستم بسته ثابت هست،سیستم بسته یعنی سیستمی که با خارج از خودش تعامل نداره ،اگر مثال افتادن جسم از ارتفاع رو در نظر بگیریم ،صرف نظر از اصطکاک هوا،انرژی پتانسیل شی کم کم تبدیل به انرژی جنبشی میشه تا اینکه در آخر کل انرژی پتانسیل تبدیل به جنبشی میشه،ما برای انرژی جنبشی نیاز به یه فرمول داریم که سرعت رو در خودش داشته باشه،طبق فرمول مستقل از زمان حرکت شتابدار داریم:

v^2=v0^2+2*a*s

a=g,v0=0,s=h داریم : v^2=2*g*h

اگه در فرمول mgh جای ghرو تغییر بدیم برای انرژی جنبشی خواهیم داشت:


Ek=1/2*m*v^2

 

توان

آخرین مفهومی که در موردش بحث میکنیم مفهوم توان هست،توان برابر کار انجام شده بر واحد زمان هست:

P=dW/dt

واحد آن ژول برثانیه یا واتwatt|| یا horsepower  هست،همونطور که میدونیم dW=F*ds هست، بنابر ایت داریم:

P=F*ds/dt=F*v

پس تعریف دیگر توان حاصل ضرب نیرو در سرعته.

میخوایم سرعت یک شی رو با افزایش و کاهش انرژی کنترل  کنیم،

package exapmles {

       import physx.math.Vec2;

       import flash.display.Sprite;

       /**

 

        * @author ZoQol

        */

        [SWF(backgroundColor="#FFFFFF", frameRate="60", width="640", height="680")]

       public class EnergyPowerExample extends Sprite {

              private var ball : Ball;

              public function EnergyPowerExample() {

                     ball=new Ball(20)

                     ball.loc=new Vec2(200,200)

                     ball.vel=new Vec2(10)

                     ball.update();

                     addChild(ball)

                     var power:MoveByPowerAndEnergy=                     new MoveByPowerAndEnergy(ball);

                     power.startTime(200)

              }

       }

}

شی  ball ساخته شده و با سرعت اولیه 10پیکسل بر ثانیه مقدار دهی،و به کلاس MoveByPowerAndEnergy  پاس داده شده، کل کد کلاس فوق:

package exapmles {

       import flash.events.KeyboardEvent;

       import physx.math.Graph;

       import physx.motion.Mover;

       import physx.math.objctx.Particle;

       /**

        * @author ZoQol

        */

       public class MoveByPowerAndEnergy extends Mover{

              private var vlen : Number;

              private var mass : Number;

              private var particle : Particle;

              public var ke : Number;

              private var powervalue : int;

              private var powerLossFactorNumber;

              private var graph : Graph;

              private var beApply : Boolean;

              public function MoveByPowerAndEnergy(p:Particle) {

                     powervalue=50

                     powerLossFactor=3

                     particle=p

                     mass=p.mass;

                     vlen=p.vel.length

                     ke=.5*mass*vlen*vlen

                     p.stage.addEventListener
                     (
KeyboardEvent.KEY_DOWN, kd);

                     p.stage.addEventListener
                     (
KeyboardEvent.KEY_UP, ku);

                     setGraph();

                     super(p);

              }

              private function ku(event : KeyboardEvent) : void {

                     keyPressed =false

              }

              override protected function moveObject():void{

              super.moveObject()

              calcPower()

              calcVelo()

              plot()

              }

              private function plot() : void {

               trace(particle.vel.x);

               graph.plot([time],[ particle.vel.x],
               0
xff0000,false,true);

              }

              private function calcVelo() : void {

                     vlen=Math.sqrt(2*ke/mass)

                     particle.vel.x=vlen

              }

 

              private function calcPower() : void {

                     vlen=particle.vel.length

                     if(keyPressed){

                     ke+=powervalue*dt

                     }

                     ke-= powerLossFactor *vlen*vlen*dt;

                     //trace(ke)

              }

              private function kd(event : KeyboardEvent) : void {

                     keyPressed=true

              }

              private function setGraph() : void {

                     graph=new Graph(0,60,0,50,50,550,600,400)

                     graph.drawgrid(5,1,5,1)

                     graph.drawaxes("t","v")

                     particle.stage.addChild(graph)

              }

       }

}

کلاس رو extend  کلاس mover کردیم و با override کردن تابع moveObject کلاس رو شخصی سازی کردیم و محاسبات بیشتری رو انجام دادیم،mass جرم شی مون هست،vlen بزرگی بردار سرعت(که اینجا فقط در محور  در نظر گرفته شده) ke هم انرژی سینیتیک یا جنبشی،powerValue توانی که با فشردن کلید میخوایم افزایش بیابه سرعتمون، powerLossFactorهم مقدار بزرگی نیروهای مانعکه از سرعت شی میکاهند،مثل اصطکاک و غیره ....

تو تابع calcPower شرط گذاشتیم که هر وقت کلیدی فشرده شد ، متغیر  ke  با طبق این فرمول افزایش پیدا کنه:

Ek=W=P*dt

و همچنین با یعه عامل درجه دو powerLossFactor *vlen*vlen*dt; کاهش پیدا کنه، این عامل چیه و چرا به اینصورت اعمال شده؟

این عامل توان نیروی اصکاک یا هر فاکتور مانع دیگره، همونطور که بالا گفتیم برای توان داریم p=F*v و اینجا نیروی اعمالی خلاف جهت سرعت هست ،پس داریم F=-k*v  اگر این فرمول رو در رابطه بالا جایگذاری کنیم داریم:

p=-k*v^2

k در واقع همون lossPowerFactor هست ،تو تابع calcVelo طبق رابطه Ek=1/2*m*v^2 برای سرعت داریم :

V=2*Ek/m

اگه مشخصه سرعت تو محور x شی رو trace کنیم داریم :

 9.725224933131367

8.759733564679047

7.89584385384155

6.052941799286489

5.928793923377018

(keyPressed)

7.340702202709648

8.469384421297194

9.426624718141863

10.26191032087183

11.004296038196681

11.67264965825756

12.280094463913684

13.348331116334366

14.262145449186189

15.087399284084745

16.716479399057956

17.265149887804345

و همچنین برای نمودار سرعت-زمان داریم :



نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد