Collisions Without a Physics Library! (Coding Challenge 184)

Sdílet
Vložit
  • čas přidán 23. 08. 2024

Komentáře • 216

  • @sagresnaw
    @sagresnaw Před měsícem +159

    A solid reason for doing your own physics and reinventing the wheel is to build a nice understanding before you throw it all away and use a more functional physics library where we take for granted some of the things that are possible with it.

    • @Kid420
      @Kid420 Před měsícem +5

      Very well said

    • @Lakitu1446
      @Lakitu1446 Před měsícem +2

      Fax

    • @mariovelez578
      @mariovelez578 Před měsícem +5

      Furthermore, in order to understand how to make a physics engine, I recommend looking at and using pre-existing engines (like Box2D for example) to see how they solve certain problems.

    • @p5play_js
      @p5play_js Před měsícem

      Agreed! It requires a lot of math to even do something simple like a ball rolling down a slope. In most cases it's better to use a physics library and the most popular 2D physics sim, used in games like Limbo and Angry Birds, is called Box2D. p5play uses a JS implementation of it which is superior to matter.js and also easier to use.

    • @pavloburyanov5842
      @pavloburyanov5842 Před měsícem +3

      1000%

  • @jabak1450
    @jabak1450 Před měsícem +24

    This guy is more animated than any of the characters I’ve ever made. It makes a video extremely entertaining.

  • @killermonkey1392
    @killermonkey1392 Před měsícem +29

    Nice one! For your "overlap correction", I think the proper way to go is to get the particles' relative velocities along the impact vector. Based on this relative velocity and the magnitude of the overlap, you can then compute the time dt by which your simulation overshot the actual collision due to finite framerates, backpropagate the particles by this time step, then update the velocities, and move them forward in time by dt again.

    • @deadrat2003
      @deadrat2003 Před měsícem

      yeah this would be more accurate

  • @kevnar
    @kevnar Před měsícem +47

    Now shut off the wall bouncing, make the particles wrap around, and add a spaceship that lets you shoot the particles. Pew Pew Pew! Asteroids, with collision physics!

  • @MahBor
    @MahBor Před měsícem +31

    I hope you start doing Coding Challenges regularly again

  • @revenevan11
    @revenevan11 Před měsícem +17

    Very cool and encouraging to see your trial and error steps along the way!

  • @kevinchopra9111
    @kevinchopra9111 Před měsícem +42

    Definitely a book worth reading...

  • @minijimi
    @minijimi Před měsícem +23

    Awesome job Dan as usual.

  • @oldadajbych8123
    @oldadajbych8123 Před měsícem +14

    The next step: Adding the elastic bodies! Let's add some deformation upon bouncing! ;-))) As a mechanical engineer and amateur programmer, I have really enjoyed this video.

    • @AmeeliaK
      @AmeeliaK Před měsícem +2

      Actually, I thought that's what elastic collision meant before watching the video.

    • @oldadajbych8123
      @oldadajbych8123 Před měsícem +3

      @@AmeeliaK Yeah, that's the silliness of the terminology. Rigid bodies make elastic collisions, while elastic bodies make inelastic collisions. Not to mention the plasticity.

    • @chitlitlah
      @chitlitlah Před měsícem +1

      That's what I thought he was going to do at first. You could get a pretty good approximation by simply having them accelerate away from each other when they overlap, and the amount of acceleration would be a function of the distance between them relative to the sum of their radii. Drawing it would be a bit harder, but you could just remove the curves where they overlap and draw a straight chord to show that they're mashed together.

    • @mariovelez578
      @mariovelez578 Před měsícem +2

      @@oldadajbych8123 not quite. Rigid bodies can do elastic and inelastic collisions (and everything in between), and soft bodies can do the same. The elasticity of a collision is the ability for the objects to return to their original shape. For rigid bodies, this happens on the microscopic level and at a very small time interval.

    • @oldadajbych8123
      @oldadajbych8123 Před měsícem +1

      @@chitlitlah But it woild be nice if also modulus of elasticity (aside from a mass) was involved in the accleration and overlapping process.

  • @nyashachiroro2531
    @nyashachiroro2531 Před měsícem +9

    As always I love your enthusiasm when teaching ❤

  • @davehock7239
    @davehock7239 Před měsícem +2

    This was fantastic. Really enjoyed you going through the code and correcting issues as you went along.

  • @Almethese84
    @Almethese84 Před měsícem +1

    Just more, please! Whatever you've got the time and energy for.
    I love your videos; particularly the live stream VODs, because I enjoy watching the entire process (no pun intended) warts and all.
    Finally, thank you so much for all your hard work and energy fostering such a wonderfully inclusive instructive community!! ❤

  • @realcygnus
    @realcygnus Před měsícem +2

    Nifty ! These plain old school challenges are hard to beat IMO. & Of course we're interested, you're a legend to MANY bud.

  • @DipamSen
    @DipamSen Před měsícem +7

    Amazing video! Congrats on the new book!

  • @pesterenan
    @pesterenan Před měsícem +2

    Hey Daniel! I finally watched all the coding challenges! Feels so good to finally catch up! Hahaha Keep up the AWESOME work that you do!

    • @TheCodingTrain
      @TheCodingTrain  Před měsícem +2

      Wow…. all of them?!?!?!

    • @pesterenan
      @pesterenan Před měsícem +1

      @TheCodingTrain Yes it took a long time, and it was so fun to see how JavaScript was before ES6, you struggling with if/else statements and arrow functions hahaha
      I didn't know that it was you that made the first Nature of Code book! I read that while I was learning about JS a few years ago, and today I'm a web developer!

  • @kingnathi9451
    @kingnathi9451 Před měsícem +3

    Awesome video, reason we love coding and programming. Can't wait to get the book.

  • @5dots297
    @5dots297 Před měsícem +1

    Loved this, for cs undergrad that have studied physics thoroughly in his/her high school is quite nice to do

  • @michaelbare911
    @michaelbare911 Před měsícem +3

    Thanks for this ! The optimized version is fully functionnal and will help me in my class.

    • @p5play_js
      @p5play_js Před měsícem

      It requires a lot of math to even do something simple like a ball rolling down a slope. In most cases it's better to use a physics library and the most popular 2D physics sim, used in games like Limbo and Angry Birds, is called Box2D. p5play uses a JS implementation of it which is superior to matter.js and also easier to use.

  • @GuildOfCalamity
    @GuildOfCalamity Před měsícem +2

    I wish Daniel would have been around when I started to learn coding.
    Would love to see you do a follow up with inelastic collisions (including some coefficient of friction/heat).

  • @nopetuber
    @nopetuber Před měsícem +10

    4:30 Daniel?? We will *always* stick with you

    • @Yazan_Majdalawi
      @Yazan_Majdalawi Před měsícem

      Something about this comment makes me uncomfortable

  • @abdulkareemalhamdani3060
    @abdulkareemalhamdani3060 Před měsícem +2

    one of the best videos actually, I tried to do the math like 8 years ago without using linear algebra (I did not know why linear algebra exists back then). I did the simulation using C# GDX library I believe, and that definitely impacted my choice to be an engineer.

  • @PatrickHoodDaniel
    @PatrickHoodDaniel Před měsícem

    Completely not related to the content of this video, but what techniques do you use to remove all of the silent portions of your video. Is it a manual process, or have you found an automatic process? I face this daunting aspect for every video I make. Another question, why did I enjoy this video so much?!? Haha

  • @FreeCourseGuru
    @FreeCourseGuru Před měsícem

    This is simply amazing. I'm definitely impressed by how you developed the entire collision detection from scratch. The explanations were clear, and the walk around the code was pretty detailed. Good job!

  • @iminvisibl2u
    @iminvisibl2u Před měsícem

    As I tried to make a breakout game, I could never figure out how the ball should bounce after it hits something. You have solved my several decade old question. Thank you. Love the show!

  • @tzisorey
    @tzisorey Před měsícem +3

    I remember doing this for 'fun' in the late 90's, with *_NO_* idea of the math beforehand.
    I did rather well, in my own opinion, but could only really handle velocities where objects couldnt pass 'through' each other between frames.

    • @nagualdesign
      @nagualdesign Před měsícem

      Objects passing through each other sounds like a fascinating problem to solve.
      Assuming that there was a good solution, it makes me wonder how far you could raise ∆t before it breaks. I mean, you might have had more than one collision between frames. It's a real head scratcher.

    • @tzisorey
      @tzisorey Před měsícem +2

      @@nagualdesign Never ended up solving it, but I considered checking whether they were moving towards each other both before and after adding their velocity vectors - if they were getting closer before, and further away after, then the closest point wouldve been somewhere 'during' the frame, but trying to figure out exactly where and when..... and then I got a new job, and significantly less free time.

  • @ramlongcat
    @ramlongcat Před měsícem

    bought the book immediately -- you manage to explain complex problems with fun and humility like nobody else, truly refreshing! you make it look easy/approachable and this requires a deep understanding of the problem and a lot of talent & work. TL;DR = thank you!

  • @lukasaudir8
    @lukasaudir8 Před měsícem

    One of the things I love the most about the code train is exactly solving problems with pure vanilla js,
    It's most important to learn the strategies, calculations and ideas behind the simulations so to make good and confident usage of ready solutions, you'll have a much deeper and better understanding allowing you to use the libraries more effectively, and when you face a problem that the library doesn't solve, you're equipped with the base knowledge to explore the solution yourself...
    Video with no special library are the best ones

  • @thehappycoder3760
    @thehappycoder3760 Před měsícem

    Brilliant as per usual. More coding challenges. Unpacking the optimisation would be really interesting.

  • @plastikbeau3695
    @plastikbeau3695 Před měsícem +1

    Can't wait for part 2 with quadtree for collision check optimization 😁

  • @roccov3614
    @roccov3614 Před měsícem

    I am now interested in the Nature of Code book. Especially since you love to tackle so diverse challenges, the book must be very interesting.

  • @SYNAPSEdwl
    @SYNAPSEdwl Před měsícem +2

    You have created a beautiful book. Thanks. Take care

  • @panadefluture1988
    @panadefluture1988 Před měsícem

    I was working on EXACTLY this, and I got stuck about 1 week ago. Decided to take a break, cause I didn't really want to go over elastic and plastic (non-elastic) high school theory. LOL. now this is here, so I guess it's time go get back to the project... Thank you, Daniel!

  • @mariovelez578
    @mariovelez578 Před měsícem

    Watching this after I made a 3D rigid body physics engine. I remember the days when I first made this, glad to see you're making it easy and fun for beginners!

  • @luizieu
    @luizieu Před měsícem

    Great video as always, i love to see the way you are always optimizing your code.

  • @tsarprince
    @tsarprince Před měsícem

    28:42 Demn the animator really took an extra mile to cutely draw that out! So impresive!!!!!

  • @munzeralseed
    @munzeralseed Před měsícem +1

    Congrats on your new book Dan!

  • @luisdss
    @luisdss Před měsícem

    Awesome! Do cover more of this (whether its the optimization or the other sort of collision)

  • @Danielle-ew1el
    @Danielle-ew1el Před 28 dny

    your depth of knowledge is impressive, well done!

  • @frumbert
    @frumbert Před měsícem

    Game of life with particle collision ;)
    Thanks for the great explainer book!

  • @tugamer89
    @tugamer89 Před měsícem

    Now I NEED the inelastic collision simulation!

  • @robotbobby9
    @robotbobby9 Před měsícem

    (4:27) "This is a very important moment in your life" 😂😂😂 So good!

  • @bonesai-dev
    @bonesai-dev Před měsícem +1

    Can't wait for the new book to come out :)

  • @marcasrealaccount
    @marcasrealaccount Před měsícem +1

    The better solution to collision detection of moving circles is to extend the circle into a 3D sheared cylinder and then you solve for the time when the two cylinders touch. A hint is find the distance function between the two circles in motion, then find a solution for when the distance equals the two radii added together, another hint is you can use the squared distance and the sum of the radii squared (r1+r2)², an equation for the diatance could be d(t) = ||(p1 + v1t) - (p2 + v2t)||

  • @Endelin
    @Endelin Před měsícem +2

    Erin Catto, the guy behind the Box2d physics library, posted a cool video "Solver2d Results" where he puts 8 different solvers through a variety of physics simulation tests.

    • @quintonashley5745
      @quintonashley5745 Před měsícem

      Trying using p5play, it makes it easy to use Box2D physics simulation with p5.js!

  • @DenisovichDev
    @DenisovichDev Před měsícem

    Haven't been keeping up with the community for a bit because of studies. It's good to see a coding challenge after a bit! I'm excited about the Nature of Code launch. Hopefully it becomes available in India soon. Cheers Dan!

    • @TheCodingTrain
      @TheCodingTrain  Před měsícem +1

      Nice to hear from you!! The book should be available in India if not please message me on Discord!

  • @boemioofworld
    @boemioofworld Před měsícem

    Hey Dan, nice vídeo as always. I am glad you are back, I love your videos and they make me happy! I am looking forward for the new The Nature of Code. I did all chapters of the old one, it was a great experience! I also have the "Learning Processing" book, another great book!

  • @francoisgantier4207
    @francoisgantier4207 Před měsícem +1

    your videos are always amazing !
    I remember doing an event driven 2D collision in perl back in college. that was... something XD

  • @andradegilmar
    @andradegilmar Před měsícem

    Very cool! I like implement things from the ground to understand better how it works. Even if later I decide to use a library

  • @MrBadSmash
    @MrBadSmash Před měsícem

    Very cool that you did this video! A few months ago, inspired by some of your other videos, I tried to solve exactly this problem. Without the math education, I never quite got it right. I ended up with some very odd results. I'm five minutes into the video, I've got my old attempt that I wrote in Lua opened up, and I'm excited to see where I went wrong!
    Also I pre-ordered your book months ago! I'm a big fan!

  • @JoaoVictorCavalcanteMiranda

    Dude, I've never seen you my entire life.
    How?
    I'was quite worried about start working and go numb, but you showed me a better way.
    Thank you!!

  • @christerpherhunter930
    @christerpherhunter930 Před měsícem

    Your videos are fascinating to me. Your on-video energy is spectacular! Personally, all my personal and work projects are in Rust as opposed to the JS you use. No matter, your videos are ultra interesting. Thank you!

    • @TheCodingTrain
      @TheCodingTrain  Před měsícem

      If you make Rust versions please share them in the passenger showcase!

  • @egonde5895
    @egonde5895 Před měsícem

    Mr. Shiffman we want to see you more. You are an amazing person!!!

  • @reik2006
    @reik2006 Před měsícem

    27:00 I agree the correction has to be done. The system can enter physically invalid states because of finite time steps and the overlap correction resets the system to the last valid state which was traversed during the last state transition

  • @chrisjames278
    @chrisjames278 Před měsícem

    awesome video, thanks! Just pre-ordered the nature of code book!

  • @RichardCyburt
    @RichardCyburt Před měsícem

    There is a different way to work out the equations of the collision that you might find helpful. Transform v1 and v2 into center of mass and relative velocities. COM is same before/after. Vrel(after)=-a×Vrel(before). a=1 for elastic, a=0 for perfect inelastic. 0

  • @dimBulb5
    @dimBulb5 Před 28 dny

    Fun and brilliant as always! Thanks!

  • @erichlof
    @erichlof Před měsícem

    Awesome video! As you mentioned, I would like to see how you got the simulation of many particles to run at 60 FPS using a quadtree. A supplemental video like that would allow us to take this to the next level. Thank you!

    • @TheCodingTrain
      @TheCodingTrain  Před měsícem +1

      You can find the source code on the webpage linked in the description!

  • @Haagimus
    @Haagimus Před měsícem

    Your end result immediately made me think of Brownian Motion. I know it's not the same thing but, adding a little random walking to the particles might be cool. 🤙🏻

  • @TheIndolence
    @TheIndolence Před měsícem

    I'd love to see the histogram of speeds and do some thermodynamics! Add other interactions (with radial potentials) and even spin for magnetism models... Physics are your oyster!

  • @funkyb6598
    @funkyb6598 Před měsícem

    Great video! Looking forward to the book.

  • @stephan19912710
    @stephan19912710 Před měsícem

    Love the video and really curious about the book, congrats :)!!

  • @brain-freeze7995
    @brain-freeze7995 Před měsícem

    اخيرا ، تحدي البرمجة هو قلب هذه القناة 😍

  • @zrodger2296
    @zrodger2296 Před měsícem

    I can *always* use a refresher on vector math. Thank you!😊

  • @neoncyber2001
    @neoncyber2001 Před měsícem

    Oh if only I I had this video a few years ago when I was trying to figure out elastic collisions for my own physics library!

  • @LithiumDeuteride-6
    @LithiumDeuteride-6 Před 6 dny

    Mathematics and physics are important for a programmer. I had to come up with an algorithm for a grenade with a shock fuse, I came up with it. But usually programmers just use a collision callback and detonate a grenade in this callback. Although this is the wrong decision, it is necessary to track the impact, the grenade can be hit not only by a collision with solid geometry, but also by some external force.
    In general, I use changes in the velocity vector, subtract the current velocity vector from the past and look at its length, this is the impact velocity, if above the threshold, then the ball inside the UDZ presses on the spring-loaded plate on which the striker is fixed with sufficient force so that this striker initiates a capsule, which causes a grenade explosion. The code turned out to be very simple and reliable, the main thing is that it simulates the real UDZ of the RGO and RGN grenades quite well.

  • @bersi3306
    @bersi3306 Před 24 dny

    Super interesting video! Please do the quadtree version. For gamedev/software design the optimization part is the most important/fun! Thank you very much for the free culture you are providing.

  • @hexcrown2416
    @hexcrown2416 Před měsícem

    Might be cool to go over fixes for tunneling (when one object is moving fast enough towards a ting/small object, it can move completely through that object instead of detecting the collision and resolving it correctly)

  • @pietrocestola7856
    @pietrocestola7856 Před měsícem

    (v2 - v1)•(x2 - x1) and (v1 - v2)•(x1 - x2) are the same, they therefore trivially have the same sign. The difference in sign is only due to the last term, after the fraction.

  • @henrik3657
    @henrik3657 Před měsícem

    I would allways, check for screen bounderies , top, bottom, left , right , if sphere is coliding with these bounderies, then increment or decrement x, y acordingly.
    Like , if x> 800 {
    x=x-1
    }
    This is the simple way of doing it.

  • @bluetheredpanda
    @bluetheredpanda Před 26 dny

    Hey Dan, thanks for all the amazing videos over the years! I just pre-ordered a copy of the new book, but I wanted to ask a question: will there be a PDF version included so that I can always have it with me? I love physical books and believe they're the best medium for focused reading, but they're not always super handy to move around with and reference quickly. Thanks!

  • @Sqwince23
    @Sqwince23 Před měsícem

    Let's see that inelastic collision example. I wanna hear a nice crisp *Crack* of a billiard ball, or maybe somehow deform the shape in the axis of collision slightly for animation?

  • @jayjasespud
    @jayjasespud Před měsícem

    Always here for a ride on the Coding Train.

  • @riccardoluise8630
    @riccardoluise8630 Před měsícem

    Your videos are so motivating man. Thank you immensely 🥰🥰

  • @julianjackson8756
    @julianjackson8756 Před měsícem

    Pre-ordered. Can’t wait!

    • @QW3RTYUU
      @QW3RTYUU Před měsícem +1

      dude! you gave me the nudge necessary to also preorder. I remember the first edition and reading it online was fun. now it'll be in my library forever, aside my unopen vinyls (I have vinyls but no turntables, what a weird thing to do)

  • @redpug5042
    @redpug5042 Před měsícem

    now try continuous collision detection.
    for a start, you can find the time t at which two particles will collide using the quadratic formula with the terms:
    a = ||v1-v2||
    b = 2*dot(v1-v2, p1-p2)
    c = ||p1-p2|| - (r1+r2)^2

  • @user-vz2ti7pd1p
    @user-vz2ti7pd1p Před měsícem

    I remember doing this as a project for my intro game dev class. I only wished this was made earlier 😂

  • @tobias633
    @tobias633 Před měsícem

    Can't wait for Sept. 3rd, greetings from Austria 😄

  • @TrollingAround
    @TrollingAround Před měsícem

    I'd love to see the quad tree optimisation.

  • @brettbreet
    @brettbreet Před měsícem

    Yes! Yes! Yes! I'll have more of this please!

  • @jinitom
    @jinitom Před měsícem

    I enjoy experimenting with problems like this, and watching your process. I especially like the idea of using a quad tree to reduce calculations.
    How do you handle the case where two objects have passed thru each other during the time between each step of the draw loop, and the collision is not detected?

  • @neozeo4245
    @neozeo4245 Před 6 dny

    Yoo please add gravity to see if the big circles get sorted up like in a unsorted Lego box, that would be a nice animation

  • @pingyboy3400
    @pingyboy3400 Před 22 dny

    Amazing explanations

  • @martinmckee5333
    @martinmckee5333 Před měsícem

    Looking into the math is never a bad thing.

  • @pierrebaillargeon9531
    @pierrebaillargeon9531 Před měsícem

    When redistributing the overlap, the distribution should be proportional to their velocity, not just divided equally between the two. Also, it might be possible that pushing them back would move them off-limit, behind a wall.

  • @likwidmocean
    @likwidmocean Před měsícem

    I really enjoy your videos.
    Do you think tunneling might be worth mentioning?
    Projectiles going through obstacles rather than bouncing.

  • @dgo4490
    @dgo4490 Před měsícem

    The circles should also squish when they collide based on the collision vectors. Then have small rigid metal balls vs big and squishy balls.

  • @ncot_tech
    @ncot_tech Před měsícem

    At 29:55 my Roku streaming box lost its mind trying to decode the video with all the moving stuff in the corner. Everything turned into MPEG artifacts. It was quite fascinating. Also while I don't enjoy Javascript, the book is interesting to me because I know all the cryptic maths will be explained in code that I can read and make sense of.

  • @NowInAus
    @NowInAus Před měsícem

    Very nice. Can you colour and simulate diffusion by mass of the particles? And yes please do inelastic and make an annoying sound for each collision! Great work

  • @user-uu5xf5xc2b
    @user-uu5xf5xc2b Před měsícem

    > "without a physics library"
    > makes a physics library

  • @Marksman560
    @Marksman560 Před měsícem +1

    Did you know, you don't need a timestep really, you can calculate a variable timestep to the moment of impact. Never used in any "modern" game-engine tho.

  • @cret859
    @cret859 Před měsícem

    As alway, a truly nice video. A good recollection of all the 'nature of code' spirit and how to code it ! So nice...
    What next to do ? Optimize your algorithm and implementation in BASIC to make it run on your vintage Apple ][. May it be able to handle just a dozen of particules ?

  • @sulaimanadewale320
    @sulaimanadewale320 Před měsícem

    might be my first book purchase

  • @2wheels2
    @2wheels2 Před měsícem +1

    2:25 hey, if you do make your own game with something like C or C++ from scratch, u cant just make this simplification. every frame has a different dT relative the the previous frame. always check the dt of the current frame and use that for your physics.

  • @akashvanionwards912
    @akashvanionwards912 Před měsícem

    My favourite teacher 😍

  • @ragedprogrammer3952
    @ragedprogrammer3952 Před měsícem

    are you going to teach us to do the rigid body collisions engine in your book without libraries, just from scratch?

  • @davidgeorge4944
    @davidgeorge4944 Před 27 dny

    This video is really tremendous

  • @zylascope
    @zylascope Před měsícem

    Cool! Thanks :) ❤

  • @beautifulsmall
    @beautifulsmall Před měsícem

    ok, 40s in im buying that book, building your own physics engine. is multiplying by -1 quicker than v=-v . first principles is actuall alot less scary than most people think, even thermodynamics.

  • @Adam00754
    @Adam00754 Před měsícem

    Hey! it is interesting Great work it is indeed challenging i will get there soon , i like when two circles stuck together! i want more it is motivating

  • @SirPhysics
    @SirPhysics Před měsícem

    Physics professor here with a small gripe. While there are plenty of people who use the word 'conserved' the way you did ("momentum and kinetic energy are conserved in elastic collisions") that is not how I would describe it when communicating this idea. Quantities are either conserved quantities or they are not. What it means to be a conserved quantity is that the total amount in the entire universe remains constant; it cannot be created or destroyed. Momentum is a conserved quantity, so it is always conserved. Kinetic energy (by itself) is not a conserved quantity, and so it is never conserved. There are no collisions in which both momentum and energy aren't conserved.
    What you're talking about is whether the total amount of a quantity within a specific system will remain constant or not. This is different from conservation because it depends entirely on our choice of systems. If you consider both of the objects in an elastic collision then both total momentum and total kinetic energy remain constant, but if you consider only one of the objects in that same collision neither remains constant. To put this into more coding terms, whether a quantity is conserved or not is a global property while whether it is constant in a particular interaction is local.
    So I would say that momentum and kinetic energy remain constant in an elastic collision. To use the word "conserved" in this context implies that sometimes momentum isn't conserved (and that kinetic energy is sometimes a conserved quantity, which it is not).

    • @TheCodingTrain
      @TheCodingTrain  Před měsícem

      Thank you for this helpful feedback and clarification. Makes a lot of sense to me! I’ll try to be more accurate and clear next time!