Coding Challenge

Поділитися
Вставка
  • Опубліковано 8 січ 2025

КОМЕНТАРІ • 444

  • @DerSpielerMabuse
    @DerSpielerMabuse 5 років тому +158

    I love the scene at 43:38 when the code finally works. It's obvious how run down Daniel is after trying for so long and the joy / relieve that it all comes together is just tangible. As a coder myself I can fully get that, his mini celebration is hilarious to watch, brilliant as usual

    • @TheCodingTrain
      @TheCodingTrain  5 років тому +21

      Thank you, I was really wondering if anyone would actually make it this far into the video to see!

    • @scuidthesquid
      @scuidthesquid 3 роки тому +11

      @@TheCodingTrain believe me when i tell you lots of people probably did, your videos are awesome to watch, even more so when coding with you or when you are interested in the topic. at least i watched it all. Thank you for the awesome series!

  • @bitterbob30
    @bitterbob30 3 роки тому +16

    This guy always cracks me up. His enthusiasm is great.

  • @kim15742
    @kim15742 5 років тому +126

    No ... way! This is exactly what I was trying for the past 5 years!

    • @sethatkins3731
      @sethatkins3731 5 років тому +3

      :-( Did you spend most of your time researching fluid dynamics?

    • @kim15742
      @kim15742 5 років тому +21

      @@sethatkins3731 Well no, I saw that it was too much to understand and I moved on :D

    • @osimmac
      @osimmac 5 років тому +13

      @@kim15742 if you understand copy paste you understand everything :D

    • @haaly7245
      @haaly7245 5 років тому

      I spent quite some time trying this for a videogame. I failed miserably.

    • @KeyboardWario
      @KeyboardWario 3 роки тому

      Me too

  • @coolbrotherf127
    @coolbrotherf127 5 років тому +986

    I have a C++ exam in 30min. I should probably watch this later haha.

    • @l0m-dev
      @l0m-dev 5 років тому +18

      theacp127 Good luck!

    • @aidanhind4620
      @aidanhind4620 5 років тому +10

      Good luck

    • @justafighter1346
      @justafighter1346 5 років тому +4

      How did you think you did?

    • @coolbrotherf127
      @coolbrotherf127 5 років тому +27

      @@justafighter1346 Pretty good. The professor makes a really fairly comprehensive review sheet so I as prepared for what was on the exam.

    • @justafighter1346
      @justafighter1346 5 років тому +3

      @@coolbrotherf127 always improve

  • @FractalWoman
    @FractalWoman 4 роки тому +5

    This is the best channel ever. I never thought it would be so much fun watching someone else write code in real time, but you make it fun.

  • @Gamekid321
    @Gamekid321 2 роки тому +8

    I really appreciate your video style! There are a lot of dev content creators out there that I can't really bear to watch. You keep things succinct and interesting, and without fumbling around too much even when you're not entirely sure what's going on as you port this code. Great personality, great editing! Lucky me decided that I wanted to learn fluid sim today and found you in the process. Easy follow. Thank you for what you do. :)
    #TeamLaminar btw

  • @glitchedjson4042
    @glitchedjson4042 5 років тому +190

    #TeamTurbulance !
    And it was very useful! I had no idea how to make a fluid simulator, but after this video, I still have no idea how to make it! But I at least know how it's supposed to work!

  • @TheDetonadoBR
    @TheDetonadoBR 5 років тому +8

    This was really nice to watch while I tried to copy what you did. My simulation is working perfectly, thanks

  • @laurenz5451
    @laurenz5451 5 років тому +9

    Love how you explain the coding! Even though I am a beginner and am only able to code in C++, you are doing a fantastic job. Keep it on!:)

  • @ffggddss
    @ffggddss 5 років тому +9

    Super! Another wonderful train ride through some intricate mathematical territory!
    BTW, this brings back some memories, as my dad was one of the pioneers of doing fluid dynamics on computers, for the purpose of numerical weather prediction.
    He dealt with the Navier-Stokes equation constantly! As well as mass & energy conservation, and others. And with sculpting code to run at maximum possible efficiency, with a multi-layer, lon-lat grid on limited computing capability. Especially on the computers of the early 1950's!
    Of course, for the atmosphere, you've got a compressible fluid, and you also have to model evaporation & condensation of water, varying sunlight, radiated heat from ground & water, city "heat islands," the effects of ice & snow cover, clouds with their own radiation and heat dynamics, etc.
    Not to mention that your whole spherical grid is rotating, so there's the Coriolis effect to deal with . . .
    But the essential setup is the same as what you have here, just with a spherical surface instead of a square, flat box; and a third dimension, which was typically only a handful of altitudes.
    Fred

  • @juvusart
    @juvusart 2 роки тому +2

    This is a gteat example of a man who really love what he is doing.

  • @prafulsrivastava7684
    @prafulsrivastava7684 2 роки тому +1

    I have been going through Navier-Stroke's Equations for an entire day to write a simulation on my own. And I ended up here. I am so glad I ended up here!

  • @dripcode2600
    @dripcode2600 2 роки тому +3

    Mad respect. It's always hard to code infront of other people. Really enjoyed this video!

  • @oBCHANo
    @oBCHANo 5 років тому +75

    It would be cool to see you get into those "tricks" to get better performance, a series of videos on optimizing and using things parallelization or whatever else would be really useful.

    • @thedotisblack
      @thedotisblack 5 років тому +2

      Agree,. I would love to watch that too.

    • @tx6723
      @tx6723 5 років тому

      yea it would be, and it would be cool to see it with processing java rather than processing or p5 since ik js doesn't have threading and processing idk if it has threads like the original java

    • @haaly7245
      @haaly7245 5 років тому

      Nvidia has a very nice demo of this using shaders to compute the different steps using a 3d texture. It even goes the extra mile and accounts for moving obstacles within the fluid.

  • @MarushiaDark316
    @MarushiaDark316 Рік тому

    Having access to vectors, objects, and multidimensional arrays makes this all so much more pleasant to work with.

  • @rozmowastudio
    @rozmowastudio 5 років тому +3

    HAVE BEEN WAITING FOR THIS LIKE FOREVER!!! THANK YOU DAN

  • @danh9676
    @danh9676 5 років тому +1

    I found this video while trying to find out how simulate a river. Whether or not this is what i'm looking for, I made it to the end, and learned a lot.

  • @v0ldelord
    @v0ldelord 4 роки тому +4

    This video helped give me some insight into very opaque code provided by my professor last year. I have a slight correction which in my implementation improved the resulting simulation.
    When changing from 3d to 2d the amount of neighbours each cell has changes from 6 to 4. In lin_solve() a weighted average is taken dependent on the amount of neighbours where c represents the total weight. So calls to lin_solve() should be changed such that c corresponds with the amount of neighbours. I.e. in project() it becomes "4" and in diffuse() "1 + 4 * a". Without the adjustment lin_solve() reduces, whatever you put into it, by 33% after each iteration.

  • @InferiorPotassium93
    @InferiorPotassium93 4 роки тому +4

    I love this channel, thank you so much for these videos. You make topics that are complex feel accessible.

  • @FrozenGale
    @FrozenGale 4 роки тому +3

    For anyone wondering you don't need to constrain the IX function, you simply need to go into the advect function and make it so that you use N-2 to get floatN. That fixed it for me at least and is what someone else suggested on Mike Ash's blog.

    • @dheerajshenoy1285
      @dheerajshenoy1285 3 місяці тому

      Ive been pulling my hair out just because of segmentation fault. You helped me. Thanks

  • @ThatChristopher
    @ThatChristopher 5 років тому +4

    Oh neat I am working on my own hydro code. These particle-in-cell methods of simulating fluids are almost mystically powerful, you can go from simulating plasma physics to predicting traffic flow just by changing a few ( complicated ) terms. Thanks for the video, I hope this gets more people excited about questioning the world around them. There is a whole world moving every time you stir your coffee in the morning.

    • @aravindkarthik5120
      @aravindkarthik5120 3 роки тому

      Hey Chris, being a beginner, may I know as to where I could start to learn about fluid simulation in depth?

    • @ThatChristopher
      @ThatChristopher 3 роки тому

      @@aravindkarthik5120 Hey Aravind, it took me a couple days to remember some of the first resources I used. Ferziger's Computational Methods for Fluid Dynamics does a great job of breaking down some of the numerical methods you can use, and I think some of the older editions had the fortran code (which is what I played with to figure out what was going on). I believe some of the classical papers listed in that book are also good resources for learning. I'm sure there are other modern equivalents of that book, but I found Ferziger referenced in many papers of interest to me and I can see why.
      Writing codes is fun, but if you want to do any actual DNS of fluid simulation it becomes very expensive to do so.. It quickly goes from understanding the discretization of the DE to figuring out how to manage memory when you're implementing higher-order schemes.. which is something that I found isn't talked a lot about... This is something I wish someone told me from the start. You can solve a 100x100 grid pretty simply, and it will make pretty pictures, but trying to resolve turbulence requires a lot of computational power on top of the software development component of figuring out how to implement it. So don't be discouraged if it takes some time to figure out, and trying to build something yourself from nothing will teach you to appreciate a lot of the commercial tools and all the struggles they must have put up with to deliver what they can. Good luck.

  • @egebayraktar6620
    @egebayraktar6620 Рік тому

    This is crazy, I am two days into this tutorial and searching for a typing error which gave me a different result than in 43:35. Finally I have found the error and watching you after 43:35 means so much more to me. (P.S: me the dumbass missed one i in the 99 th line of the source code in Functions so that it was float i0i = int(0) instead of int(i0).) If it is frustrating to get error, it is so much more to get none but get the wrong result. Anyways, you are one of my heroes.

  • @Behiri
    @Behiri 5 років тому

    i found this great Chanel a few days ago by googling 132 to test my Internet connection... i have worked with processing before so i was lucky

  • @Confuseddave
    @Confuseddave 5 років тому +2

    I'm not sure how much I'll use the fluid simulation part, but the stuff about diffusion really clarified my thinking about an old hobby project i had, which I may well try to resurrect...

  • @jordanscarrott3749
    @jordanscarrott3749 4 роки тому

    At 23:11 the function only takes into account the cells above, below, left, and right of the cell we're interested in. Thank you for the great video

  • @salahsoliman5752
    @salahsoliman5752 2 роки тому +1

    This was so much fun, I didn't expect it to work this smoothly 😂😂

  • @01binaryboy
    @01binaryboy 3 роки тому

    Take all my assets . You are rocking man.
    I was searching these kind of videos for long time. Thanks to MikeAsh as well.

  • @josenicolasagustingarciama9185
    @josenicolasagustingarciama9185 2 роки тому

    Gotta admit. You have improved a lot since your firsts vídeos. You rock

  • @erzzam
    @erzzam 5 років тому +4

    Made it through the final and it was awsome! Looking very much forward for the next episode of the series! #teamturbulence

  • @Rumplestiltzchen
    @Rumplestiltzchen 2 роки тому

    This is great because for the past few months I've been taking the code challenge videos and porting them to c++ and now you're porting c++ to java

  • @avi12
    @avi12 5 років тому +139

    32:37 What the heck?

  • @Squidcat777
    @Squidcat777 Рік тому

    currently in my master's for computer graphics, this video was a surprisingly great starting point to fluid sims! thank you so much!

  • @soliderarmatang5664
    @soliderarmatang5664 3 роки тому

    I just discovered this channel and I’m already liking it

  • @theaveragemegaguy
    @theaveragemegaguy Рік тому +1

    I love the scene at 27:04 where he says lets take a deep breath. Sometimes when facing something very tedious or large we tend to shy away. It was very helpful to relax and take a big deep breath. Thank you very much :')

  • @r.d.machinery3749
    @r.d.machinery3749 5 років тому +14

    53:51 "Noone is going to make it to the end of this video"
    Still here, still fascinated :)

  • @cware1817
    @cware1817 3 роки тому

    As someone who is relativly new to C++ this was very helpful and cool to watch your workflow through these concepts with the whiteboard!

  • @alialsaffar6090
    @alialsaffar6090 5 років тому +1

    Thank you for doing both the DVD challenge and this! And, made it till the end!!

  • @ZerofeverOfficial
    @ZerofeverOfficial 5 років тому +120

    i made it to the end of this video

    • @TheCodingTrain
      @TheCodingTrain  5 років тому +7

      I am gobsmacked.

    • @ffggddss
      @ffggddss 5 років тому

      Make that last "a" an "e" and you're there!
      Fred

  • @dominick253
    @dominick253 9 місяців тому

    Learned the basics, built a few apps, then got bored of programming. Just going through your videos again and man it sparks that passion again. Thank you.
    Just thinking about adding something a little extra into my portfolio website. I'm thinking about something recursive. Maybe mandelbrot? That would be pretty cool me thinks.

  • @HZLTV
    @HZLTV 4 роки тому +1

    I quite literally started processing like last week (never been very good with Java) to use as part of a design project. Came across this channel, absolutely loving it even though I have almost 0 idea what’s going on!

  • @bigrafati1221
    @bigrafati1221 5 років тому +5

    When I watched this video I realized how much I still have to learn.

  • @OzieCargile
    @OzieCargile 3 роки тому

    You've always been a great source of accessible and practical information. Thanks for being a great teacher.

  • @term477
    @term477 5 років тому +16

    37:16 sounds like poetry

  • @justgame5508
    @justgame5508 5 років тому +8

    It’s so satisfying for me to actually see and understand the mathematical topics that were forced to study as part of my engineering degree, reminds me that they don’t make us take maths modules because they enjoy watching us suffer🙃

    • @tx6723
      @tx6723 5 років тому +1

      yea maths/phys can be interesting, esp when paired with visual programming

  • @matheussilvacarvalhodeoliv7339
    @matheussilvacarvalhodeoliv7339 2 роки тому

    Wow, that was incredible! I loved this video, mostly because fluid mechanics is my area ❤️

  • @TheAwakeningMission
    @TheAwakeningMission 5 років тому

    Thank you so much! I was expecting this for so long and it's finally here!!!! :D

  • @Ghaz002
    @Ghaz002 5 років тому

    oh man, the references here are an absolute goldmine. I've been trying to figure out how to do a simple version of this for a few weeks, but I couldn't make sense of multivariable calculus if I had a trillion years. So a paper for dummies is exactly what i need.

  • @Maex2k
    @Maex2k 5 років тому +27

    "Just let me take a quick look at the video..." 55 minutes later: #teamturbulence

  • @greenpixel556
    @greenpixel556 4 роки тому

    Allot of great examples, i like that they all in KISS format, just pure algorithms , no nonsense.

  • @jordy15322
    @jordy15322 5 років тому +1

    Got to give it to you this was a great way of procrastinating from doing coursework, I'm supposed to be writing test plans and stuff for a program i've written. But design documentation is boring this was way more time. Don't think i've ever left a comment or made it live but long time sub as i find your videos a good way to learn some stuff when i'm supposed to be doing other things.

  • @mackycheese3582
    @mackycheese3582 5 років тому

    Finally!!! I have been waiting for this vid for a looong time THANKS

  • @kacperozieblowski3809
    @kacperozieblowski3809 5 років тому +2

    32:38 love the edit, and the transition music, so funny

  • @uhwlrz
    @uhwlrz 5 років тому +1

    It is about 7 hours between our times but you are amazing and make everything more easy and beautiful ,thanks Dan for every tutorial, I search for your videos everyday and wait for them and download them ,even my kids loves your tutorials😍😍😍😍😍

  • @toastom
    @toastom 5 років тому

    I know I've looked for something like this on your channel before but couldn't find it. Glad you uploaded one haha

  • @tlace0392
    @tlace0392 5 місяців тому +5

    old video, but I thought I might comment lol. Its crazy to think about how far AI and GPT-4o has brought us. I am using GPT to follow along with this in python. The ability to say 'create a diffusion method, based on the pre-existing conditions' and it output it, perfectly, is absolutely mind blowing. I am a CS undergrad, who plans on going into Quantum Engineering, things like this make my goals seem a lot more achievable LOL.

    • @sebastiangudino9377
      @sebastiangudino9377 4 місяці тому +1

      As long as you COULD implement it without the help of AI if you ever needed to, they yeah, it is an amazing tool to make small snippets of reusable modular code

    • @neillunavat
      @neillunavat 4 місяці тому

      he liked!!!

  • @Hyuts
    @Hyuts 5 років тому +2

    Busy learning MongoDB atm but a mandatory thumbs up was given.

  • @jaredarm
    @jaredarm 2 роки тому +2

    Is there a part 2? Would love to see you go through the code in detail and refactor it!

  • @Dennis4Videos
    @Dennis4Videos 5 років тому +1

    flute intro cracked me up, thanks for your awesomeness

  • @nostravis2770
    @nostravis2770 2 роки тому +2

    "I'm sure youtube compression is totally ruining this."
    Spot on unfortunately

  • @germandavidmurillasmondrag4004
    @germandavidmurillasmondrag4004 3 роки тому

    OMG every time I see this video is the same as stunning as the first time I saw it.

  • @kyle5210
    @kyle5210 5 років тому +3

    Watched this live and I came specifically for 54:04 :) :) :)

  • @_abdul
    @_abdul 2 роки тому

    I was already Overwhelmed by the details of it...and then I got the Turbulent Song.

  • @Grynjolf
    @Grynjolf 10 місяців тому +5

    Where are parts 2 and 3? I can't find them! 😭

  • @Toknus
    @Toknus 3 роки тому +1

    I don’t know if you still look at this thread, but at 25:32 I was SCREAMING when at line 97 the singular k value just went unrecognized! 😂😂

  • @maserb5
    @maserb5 5 років тому

    I really liked this video! I studied aero dynamics for a while and it’s cool to see it in play.

  • @bernatrosello4375
    @bernatrosello4375 5 років тому +38

    This Video: *exists*
    UA-cam compression: *dies*

    • @zh9664
      @zh9664 4 роки тому

      no? this isnt the type of thing video compression struggles with, its actually the opposite. you should know this, your literally watching a video on coding.

  • @animated.stories.reddit
    @animated.stories.reddit 3 роки тому

    This is the first programming video I like xD

  • @artistpw
    @artistpw 3 роки тому

    If you really want to see some incredible fluid dynamics, drop some vitamin c powder into brown iodine. The color almost magically seems to disappear. Absolutely love this channel!

  • @jacksparrow440
    @jacksparrow440 5 років тому

    Very nice !!
    I actually had to optimize such a simulator last year. It was mostly about messing around with the linear solver, because it takes the longest to compute

  • @israeltettehakrong9082
    @israeltettehakrong9082 Рік тому

    You are very talented in using processing. ❤❤❤❤❤❤U Shiffman.

  • @michaelsalais7393
    @michaelsalais7393 3 роки тому

    Made it to the end. I think I learned something: that i'm not intelligent. But I loved this and will play with the code either way.
    TeamTurbulance!!!!

  • @paull007
    @paull007 5 років тому +5

    It was very fun on stream

  • @austineadah2843
    @austineadah2843 3 роки тому

    i love this tutorials even if my basic programming skills are rusty.well explained.I wish you could do 3d fluid solid interaction in real time.had to subscribe immediately

  • @Mortagus
    @Mortagus 5 років тому +1

    Damn ! That result is awesome 😁

  • @rashmiranjannayak3251
    @rashmiranjannayak3251 3 роки тому

    Perfect coding spirit

  • @the_kid777
    @the_kid777 Рік тому

    I liked the dance of turbulence you did at the end of your video so much; I suddenly found myself dancing it in front of a mirror. I would be very happy if you'd try the Lagrangian particle approach as well, as I believe what you've created was an Eulerian grid-based simulation?

  • @Retr0sp3ct
    @Retr0sp3ct 3 роки тому

    It's a shame programming is so nicce atm, content like this deserves so much more recognition and appreciation.

  • @Chilli5m
    @Chilli5m 5 років тому +1

    This is great. I've been trying to write my own fluid simulators in P3 but they aren't exactly intuitive or easy to get started with. I would love to see a video on the Lily Pad project.

  • @mworld
    @mworld 7 місяців тому

    FYI: `struct FluidCube` is C not C++. The typedef gives it away, which is not required in C++. Also the calloc etc used below that for memory initialization is C.

  • @guzman-do
    @guzman-do 5 років тому +1

    YES!!! Excellent!!! I needed to understand this fluid simulation thing for my game 👍#teamturbulence *all the way* WOOHOO!!! 😄🤣😅

  • @awaisahmed1871
    @awaisahmed1871 3 роки тому

    I have data structures exam tomorrow. But this looks fun can't stop myself from watching it

  • @coltonhenry3636
    @coltonhenry3636 Рік тому

    The “Lattsman Boltzmann” at 1:02 😂😂😂

  • @SimonTiger
    @SimonTiger 4 роки тому

    12:35: It's not quite that simple. That pointer points not to _all of the data,_ but just the _first element._ Then that first element intern has a pointer which points to the next one, which intern points to the third one, and so on. Until the last element, which just points to NULL. So it's a linked-list type structure.

    • @TheLordoftheDarkness
      @TheLordoftheDarkness 3 роки тому

      I am not sure what the original C code uses but I am pretty sure it's an array. What you are describing is a linked list. For an array the pointer just points to the first element of the array. The second element is located right after it in memory so you don't need a pointer to tell you about the location of the second element.

  • @swayamsingh4650
    @swayamsingh4650 3 роки тому

    Love your content brother ❤️

  • @m1nh2uan
    @m1nh2uan 3 роки тому

    I saw a video on slime simulation and think of you and your digital art. Not sure if you still do these videos, but it would be cool to see it on your channel some day.

  • @jaspermachines9350
    @jaspermachines9350 4 роки тому

    best education you can find on internet

  • @iMagicIAm
    @iMagicIAm 5 років тому +1

    Anyone else doesnt know how to code at all but still loves these videos?

  • @tejonBiker
    @tejonBiker 5 років тому

    Good job, a lot of info can be found in this video :D

  • @haaly7245
    @haaly7245 5 років тому

    For rainbow colors you could do something like R = velocityX, G = velocityY, B = density

  • @prashanthkumar5987
    @prashanthkumar5987 5 років тому

    you're dope🔥 All hail mr.shiffman🙌🏼

  • @antoine257
    @antoine257 5 років тому +4

    #TeamTurbulence Some ideas for a potential part 2 of the video: (1) how to change the bound function to fit a more complex shape (vector) with obstacles (islands?); (2) how two fluid sources can mix and accumulate when they meet; (3) how to add "current" to the whole simulation.

  • @Andrea-Giachetto
    @Andrea-Giachetto 4 роки тому +1

    That final dance is basically me everytime I fix a bug.

  • @DuniC0
    @DuniC0 3 роки тому

    I like the result! ❤️
    The problem with the noise function is that it doesn't fill all the range [0,1).
    Maybe doing TWO_PI*2 will help covering the majority of the angles...

  • @sahiltrivedi69
    @sahiltrivedi69 3 роки тому

    You did it! You crazy man! You did it!

  • @badunius_code
    @badunius_code 2 роки тому

    42:05 Sets diffusion to zero
    @
    Didn't I say it'd diffuse anyway?

  • @a_random_voice_in_the_void
    @a_random_voice_in_the_void 5 років тому +2

    The #TeamTurbulance dance was epic! 😂

  • @Crosstime.i
    @Crosstime.i 8 місяців тому +2

    Moral: You can achieve anything if you just don't sit until its done....

  • @kingtarekdz
    @kingtarekdz 5 років тому

    hi thank you very much it's difficult but you made it easy that's the genius work go ahead for the best have a nice day

  • @guys_animations
    @guys_animations 3 роки тому +1

    2:45 the compression died because of all the tiny arrows