Coding Challenge

Sdílet
Vložit
  • čas přidán 11. 06. 2024
  • Can I draw and rotate a 3D cube using Processing's 2D renderer with just some math?!?! Yes! Watch to learn more about rotation and projection matrices along with perspective and orthographic projection! Code: thecodingtrain.com/challenges...
    🕹️ p5.js Web Editor Sketch: editor.p5js.org/codingtrain/s...
    🎥 Previous video: • Coding Challenge #111:...
    🎥 Next video: • Coding Challenge #113:...
    🎥 All videos: • Coding Challenges
    References:
    💾 Matrix Multiplication: matrixmultiplication.xyz
    🗄 Rotation Matrix on Wikipedia: en.wikipedia.org/wiki/Rotatio...
    🗄 3D Projection on Wikipedia: en.wikipedia.org/wiki/3D_proj...
    Videos:
    🚂 Matrix Math: • 10.6: Neural Networks:...
    🚂 Matrix Multiplication for 3D Rendering: • Matrix Multiplication ...
    🔴 Coding Train Live 148.1: • Coding Train Live #148...
    Related Coding Challenges:
    🚂 #26 3D Supershapes: • Coding Challenge #26: ...
    🚂 #113 4D Hypercube (aka 'Tesseract'): • Coding Challenge #113:...
    🚂 #142 Rubik's Cube: • Coding Challenge #142:...
    Timestamps:
    0:00 Introducing today's topic: 3D rendering in 2D
    2:08 Let's begin coding!
    7:50 Add a projection matrix
    12:00 Add a rotation matrix
    18:02 Make a cube with 8 points
    20:41 Normalize the cube
    21:45 Connect the edges
    28:09 Add perspective projection
    31:36 Conclusion and next steps
    Editing by Mathieu Blanchette
    Animations by Jason Heglund
    Music from Epidemic Sound
    🚂 Website: thecodingtrain.com/
    👾 Share Your Creation! thecodingtrain.com/guides/pas...
    🚩 Suggest Topics: github.com/CodingTrain/Sugges...
    💡 GitHub: github.com/CodingTrain
    💬 Discord: thecodingtrain.com/discord
    💖 Membership: czcams.com/users/thecodingtrainjoin
    🛒 Store: standard.tv/codingtrain
    🖋️ Twitter: / thecodingtrain
    📸 Instagram: / the.coding.train
    🎥 Coding Challenges: • Coding Challenges
    🎥 Intro to Programming: • Start learning here!
    🔗 p5.js: p5js.org
    🔗 p5.js Web Editor: editor.p5js.org/
    🔗 Processing: processing.org
    📄 Code of Conduct: github.com/CodingTrain/Code-o...
    This description was auto-generated. If you see a problem, please open an issue: github.com/CodingTrain/thecod...
    #3drendering #projectionmatrix #perspectiveprojection #rotationmatrix #processing

Komentáře • 261

  • @cicciobombo7496
    @cicciobombo7496 Před 5 lety +136

    19:00 technically the light source is infinitely far away
    19:43 applying the X matrix to the PVector, then applying the Y and Z matrixes is the same as applying a single XYZ matrix. This XYZ is made matmultipling Z with Y and then the result with X. The order matters.
    Graphically Z×(Y×(X×V)) == (Z×Y×X)×V

    • @TheCodingTrain
      @TheCodingTrain  Před 5 lety +42

      Thank you for these corrections! That's especially important pointing out the "infinite distance" of the light source. I will pin this comment!

    • @ericvega9160
      @ericvega9160 Před 4 lety

      @@TheCodingTrain czcams.com/video/6_sUVhH7VfU/video.html

    • @ericvega9160
      @ericvega9160 Před 4 lety

      @@TheCodingTrain sorry again, can you give me any advice how to draw all faces the math or something, thanks

    • @kun4i_135
      @kun4i_135 Před 2 lety

      I understood everything absolutely.

    • @sethmobit
      @sethmobit Před 2 lety +1

      If we put to spin 90°, it doesn't spin exactly a quarter of the cube. And if we put to add +1 to angle at each second, from 0 to 90, it spins 360° some times instead only a quarter for one time. Why we couldn't simply put to rotate the exactly angle that we want?

  • @ThankYouESM
    @ThankYouESM Před 3 lety +70

    I really felt the need to learn how to create 3D from scratch for the sake of my own sanity, so thank you again.

  • @hemaangs3024
    @hemaangs3024 Před 5 lety +44

    The way this guy speaks and gestures had me on the edge of my seat throughout the video

  • @wheellan
    @wheellan Před 3 lety +49

    I've been a professional developer for like, 3 years now, but this dude is still too much fun and I wish I had found him in college.

    • @kluplau
      @kluplau Před 3 lety +5

      I've been a professional developer for 15 years and still very much enjoy watching him. ☺️

  • @cmanshopdopler9354
    @cmanshopdopler9354 Před 5 lety +96

    Not the hero we deserve, but the hero we need

  • @beastbomber2316
    @beastbomber2316 Před 2 lety +22

    Here is a python version for everyone :P
    Make sure you have gasp and numpy
    from gasp import *
    import numpy as np
    #Settings
    back = color.BLACK
    dot = color.WHITE
    linec = color.GRAY
    scale = 200
    timestep = 0.05
    distance = 2
    #Dont mess with the ones below
    centerx = 0
    centery = 0
    angle = 0
    points = np.array([
    [-0.5, -0.5, -0.5],
    [0.5, -0.5, -0.5],
    [0.5, 0.5, -0.5],
    [-0.5, 0.5, -0.5],
    [-0.5, -0.5, 0.5],
    [0.5, -0.5, 0.5],
    [0.5, 0.5, 0.5],
    [-0.5, 0.5, 0.5]
    ])
    def draw():
    rotationZ = np.array([ #These have to be inside the function because angle will still static when initiailzing.
    [np.cos(angle), -np.sin(angle), 0],
    [np.sin(angle), np.cos(angle), 0],
    [0, 0, 1]
    ])
    rotationX = np.array([
    [1, 0, 0],
    [0, np.cos(angle), -np.sin(angle)],
    [0, np.sin(angle), np.cos(angle)],
    ])
    rotationY = np.array([
    [np.cos(angle), 0, -np.sin(angle)],
    [0, 1, 0],
    [np.sin(angle), 0, np.cos(angle)]
    ])
    projected = []
    for v in points:
    rotatedY = np.matmul(rotationY, v)
    rotatedX = np.matmul(rotationX, rotatedY)
    rotatedZ = np.matmul(rotationZ, rotatedX)
    z = 1 / (distance - rotatedZ[2])
    projection = np.array([
    [z, 0, 0],
    [0, z, 0]
    ])
    projected2d = np.matmul(projection, rotatedZ)
    projected2d = projected2d * scale
    point(projected2d[0], projected2d[1])
    projected.append(projected2d)
    for i in range(4):
    connect(i, (i + 1) % 4, projected)
    connect(i + 4, ((i + 1) % 4) + 4, projected)
    connect(i, i + 4, projected)
    def createWindow():
    begin_graphics(width=800, height=600, title="3D Renderer", background=back)
    return 400, 300
    def point(x, y):
    Circle((x + centerx, y + centery), 2, True, dot, 5)
    def connect(i, j, points):
    a = points[i]
    b = points[j]
    Line((a[0] + centerx, a[1] + centery), (b[0] + centerx, b[1] + centery), linec)
    def clear():
    clear_screen()
    centerX, centerY = createWindow()
    centerx = centerX
    centery = centerY
    while True:
    draw()
    time.sleep(timestep)
    clear()
    angle = angle + 0.1

  • @ArthurCousseau
    @ArthurCousseau Před 5 lety +5

    I've been working in 3d game development for nearly 2 years now, and still I learn a lot from your videos! Your work here is a real goldmine, and really accessible to future generations of coders. That's awesome.

  • @azyfloof
    @azyfloof Před 5 lety +36

    "I'm going to reward myself with a piece of space melon"
    This is the future :P

  • @gathorn
    @gathorn Před 5 lety +7

    the explanation and the analogy with the shadow were just amazing

  • @lidestudios5094
    @lidestudios5094 Před 2 lety

    Exactly the type of information I've been searching for -- thanks for taking the time to make this and explain everything! I'll create something epic in the future with this power

  • @nvadot1633
    @nvadot1633 Před 5 lety +25

    Shoot, now I'm hyped to try implement this myself... Well, here goes my night

  • @Jianju69
    @Jianju69 Před 5 lety +3

    You're so good-natured that you make coding fun.

  • @hexcodeff6624
    @hexcodeff6624 Před 4 lety +59

    18:44
    "This works to fast"
    -no programmer ever

  • @franeklubi
    @franeklubi Před 5 lety +2

    Yes! Thank you Dan, you're making me so happy with these videos! :D

  • @kevnar
    @kevnar Před 5 lety +8

    Coding Challenge for you, Daniel: Create a 2D maze (as in your maze challenge), then render it in first person perspective using points and lines as in this challenge. Let the user walk around in it with keyboard clicks and mouse looking.
    I attempted this years ago in Visual Basic 6.0, without knowing any of this matrix math. It nearly broke my brain.

    • @loafy8532
      @loafy8532 Před 5 lety

      that would be fun, but probably would take a very long time to do

  • @lefantastique59
    @lefantastique59 Před 2 lety +4

    This video inspired me to code my own 3D modelisation software for my final school project. So thank you so much!

  • @gloubiboulgazeblob
    @gloubiboulgazeblob Před 4 lety

    First nice and easy explanation of 3D rendering I see in my life. Thanks !!!

  • @morto360
    @morto360 Před 5 lety +3

    AMAZING!!!! If somebody asked me to do this, I wouldnt even dare to try since I thought is super complex... had no idea it can be so easy!!

  • @Naej7
    @Naej7 Před 5 lety +12

    OMG when you applied the perspective the first time, I couldn’t see the cube in the right way ! I was just seeing a kind of jelly wobbling xD

  • @oeq57
    @oeq57 Před 4 lety +1

    Was doing this at work today, came back to your video for reference. Thanks Dan :D

  • @woobie5649
    @woobie5649 Před 4 lety +1

    This a best explanation i've seen in youtube about this theme. Thank you so much

  • @kartoffellicht863
    @kartoffellicht863 Před rokem

    Love it! love everything! Love coding! Love examples! Love humor! EVERYTHING!!

  • @Jaultaub
    @Jaultaub Před 5 lety +53

    I always wondered how 3D rendering works. Never thought that it was that 'easy'.
    I now really want to build this in C and draw 3D stuff to the console!

    • @Dzatoah
      @Dzatoah Před 5 lety +2

      You cant draw in a Console i think

    • @xxslajerxx8890
      @xxslajerxx8890 Před 5 lety +10

      Well... he can draw box using - and | so he kinda can create 3d stuff in console.

    • @Jaultaub
      @Jaultaub Před 5 lety +2

      @@xxslajerxx8890 that is what i will be doing.

    • @Jaultaub
      @Jaultaub Před 5 lety

      I don't know if it worked but I at least tried to share my code:
      I have added the code and video to the contributions! Feel free to check it out!
      Edit: Please don't mind the commented out garbage in the main function, I forgot that it was there and now I don't know how to change the file.

    • @Jaultaub
      @Jaultaub Před 5 lety +3

      Therefore I will just add a link to the code: down
      +
      +
      +
      edit: gist.github.com/spulilol/4732968c3073faf8a42d2b7477caf929

  • @mikee.
    @mikee. Před 5 lety +5

    Wow processing is amazingly simple!

    • @PandoraMakesGames
      @PandoraMakesGames Před 5 lety +3

      Yeah, I've made some cool things with it. IDE could be a little better, but the framework is great.

  • @rebornreaper194
    @rebornreaper194 Před rokem

    I like your channel. You have such a great attitude, and you're clearly knowledgeable -- but you also show that it's ok not to know everything. You foster a great attitude towards ongoing learning. 😄👏

  • @beaverjoe9171
    @beaverjoe9171 Před 5 lety

    I saw the content on the slack several days ago and I can saw it on CZcams now! AMAZING

  • @seth-blank
    @seth-blank Před 9 měsíci

    Finally someone actually explained projection matrix's :D

  • @MattBee2k2
    @MattBee2k2 Před 5 lety

    Love the videos and your energy man!

  • @benny.6588
    @benny.6588 Před 2 lety +1

    you are really a genious...i was maing something like this for fun in 2000 year, but i did not reach so far, and with this deep understaning, you are my inspirational mentor , thanks dude

  • @chaos6094
    @chaos6094 Před 5 lety +1

    Amazing video, thank you!

  • @Pilosofia
    @Pilosofia Před 2 lety

    in my university they told us to build 3d objects from scratch. you do a crazy things with this library. I can't imagine myself build something similar but I will try

  • @jeeaile5835
    @jeeaile5835 Před 5 lety +4

    I don’t watch the entire video but i’ve already liked

  • @flwi
    @flwi Před rokem

    Awesome video! Just what I needed for my advent of code problem

  • @camerobaird5939
    @camerobaird5939 Před 6 měsíci

    Why did that make sense in the most confusing way possible? Thank you for this

  • @DogwafflDan
    @DogwafflDan Před 5 lety

    Enjoyed this one quite a lot!

  • @allurbase
    @allurbase Před 5 lety +3

    Good that you fixed that extra zero, was making me crazy that it was working even though that typo

  • @gillesvismara5228
    @gillesvismara5228 Před 5 lety

    Thank you, thank you for everything!

  • @giorgosd3624
    @giorgosd3624 Před 5 lety +5

    Nice video, looking forward into higher dimensions!
    Also a guest video would be nice, been a long time since the last

  • @emteiks
    @emteiks Před 2 lety

    A Giant at work. Thanks for making this video!

  • @ayostatue8448
    @ayostatue8448 Před 3 lety

    thanks to your tutorial i created something that does essentially the same thing in pico8. this is a-ma-zing, keep it up

  • @tonysfun
    @tonysfun Před 5 lety

    Very talented young man!!! Love your video!

  • @phos4us
    @phos4us Před 4 lety +1

    my algorithm for drawing lines is just an array of 12 smallers arrays of 2 that store the two indices needed for each line and it cycles through it.

  • @cazino4
    @cazino4 Před 4 lety

    Great videeo as ever. Well done!!

  • @iosgamer158
    @iosgamer158 Před 5 lety

    Really interesting video thank you and keep up the good work 😃

  • @4greenkoalas
    @4greenkoalas Před 5 lety +6

    16:20 i was screaming at my screen for the missing comma and extra 0

  • @kantyDarius
    @kantyDarius Před 5 lety +1

    awesome, i´d made a program in visual basic a couple years ago that use topographic images of mars´s surface transforming the colors and position of each pixel into an array of values then pass this values to the program por render in 3d with zoom in, zoom out, rotation, water flood simulation and a couple of features more (sorry por my english)

  • @sukhWins
    @sukhWins Před 4 lety

    My favorite channel

  • @ricardo.mazeto
    @ricardo.mazeto Před 5 lety +3

    Daniel, you're so close to make a full 3D graphics engine!

  • @rodneykingston6420
    @rodneykingston6420 Před 4 lety

    Any book or tutorial on WebGL or OpenGL should start with exactly the material covered in this video and the previous one, before any GL code is even introduced. Showing how matrix multiplication of vertexes work and how specific matrices can be utilized with point and line drawing primitives of a 2D library to achieve 3D effects - WOW! Brilliant. Just Brilliant. Thanks for clearing up a previously foggy area for me.

  • @hamzaf19
    @hamzaf19 Před 3 lety

    I love your videos and thanks you helped me a lot with that video tho!

  • @juicepops7819
    @juicepops7819 Před 4 lety +9

    13:26 everytime I get an error in my code

  • @ejskshrvhshsbdbdbddhdh3yej11

    You r the best teacher

  • @roshanpawara8717
    @roshanpawara8717 Před 5 lety +2

    I have the same shirt. Same pinch!

  • @kirbofn524
    @kirbofn524 Před 10 měsíci

    Anyone following 4 years later… at the point where you connect the lines, simply in the for v : points loop, save the last screen coordinate in a non loop local variable (as in declared outside) then check, if it has been initiated (had a value) then draw a line between it and the current point

  • @cashel1111
    @cashel1111 Před 5 lety +1

    i know you just uploaded this, but would love to download the code :)
    that perspective explanation is the first that has made sense to me, keep it up

    • @TheCodingTrain
      @TheCodingTrain  Před 5 lety

      You can find it at thecodingtrain.com! (Oh, actually the page is broken for some reason, looking into it.) Code is here: github.com/CodingTrain/website/tree/master/CodingChallenges/CC_112_3D_Rendering

  • @sarveshwarans8037
    @sarveshwarans8037 Před 5 lety

    I love to learn a lot from you..

  • @sana181019811
    @sana181019811 Před 5 lety

    I love this😍😍💻

  • @MrEven9401
    @MrEven9401 Před 5 lety

    Very interesting video, math is just amazing.

  • @vladthe_cat
    @vladthe_cat Před 10 měsíci

    6:34 omg that looks familiar!
    Thank you Linear Algebra & Matrix Theory!

  • @freerunner1508
    @freerunner1508 Před 5 lety

    You insane coder

  • @SaifullahUsmani
    @SaifullahUsmani Před 2 lety

    You are amazing 🤩

  • @alfonsoknows3318
    @alfonsoknows3318 Před 5 lety +1

    i just did this coding challenge myself in processing. But as i just learned quaternions, i did all the rotating thingies with quaternions instead of matrices. It was veeery satisfying, seeing the cube rotate in the end around really any 3d axis.....

    • @TheCodingTrain
      @TheCodingTrain  Před 5 lety +2

      Did you watch the 3Blue1Brown video? I am excited to try some Quaternion examples!

    • @alfonsoknows3318
      @alfonsoknows3318 Před 5 lety +1

      @@TheCodingTrain Yes i did. That's where i got the idea from actually... After watching the 3b1b video i read a few university lecture notes about quaternions and 3d rotations and when i then saw your video right here, i thought i could combine the two...

  • @BaronVonTacocat
    @BaronVonTacocat Před 5 lety

    Cool video, homie!

  • @Looki2000
    @Looki2000 Před 2 lety +1

    you can caclculate the focal length for perspective projection with "focal_length = window_height/2 * cot(fov) / 2)". Dont forget to remove that scaling at 21:09

  • @Guysudai1
    @Guysudai1 Před 5 lety +11

    I did the same thing in assembly as a school project(only for more shapes)

    • @nvadot1633
      @nvadot1633 Před 5 lety +2

      Guysudai1 in assembly?? O_o mind sharing the source code, you got me curious...

    • @Guysudai1
      @Guysudai1 Před 5 lety +2

      uploaded it to github.com/guysudai1/asm-project

    • @nvadot1633
      @nvadot1633 Před 5 lety +2

      Guysudai1 holy.cow, that's impressive!! Thanks for sharing!!

    • @Guysudai1
      @Guysudai1 Před 5 lety

      @@nvadot1633 no problem!

    • @otesunki
      @otesunki Před 5 lety +2

      Woah, In ASSEMBLY!?!??!?! if you can do that, you can do anything!

  • @kevnar
    @kevnar Před 4 lety

    In a past life, Daniel was a mad scientist.

  • @jtromph0719
    @jtromph0719 Před 4 lety

    THANKS

  • @gibbermagash5559
    @gibbermagash5559 Před 5 lety +2

    So I ran into two erros I can't fix. "The function "matmul()" expects parameters like "matmul(float[ ][ ], PVector)" and "Duplicate local variable v". I couldn't find an error in my code so I copied the codes from the links into the P3 editor and got the same errors.

  • @stalkerkk
    @stalkerkk Před 3 lety

    Literally no body able to explain that simple projection matrix that simple, I was to give up 3d programming and my CZcams shows your video.

  • @matejnovosad9152
    @matejnovosad9152 Před 5 lety +1

    Awesome

  • @irmansyah842
    @irmansyah842 Před 5 lety

    its amazing

  • @bennguyen1313
    @bennguyen1313 Před 3 lety

    Do you have any suggestions on how to plot live-data, that comes from the usb/serial-port? P5JS , PixiJS , ZIMJS, TwoJS?
    For example, not sure which package would best keep up drawing a simple line graph, as the data that comes streaming in, but I'd *LOVE* to use P2D, maybe with Python!

  • @gillesvismara5228
    @gillesvismara5228 Před 5 lety

    thank you!!!!

  • @_rgrtht
    @_rgrtht Před 5 lety +2

    i love your channel

  • @Johnedyy
    @Johnedyy Před 5 lety

    You are my Idol ♥

  • @androidworld3239
    @androidworld3239 Před 3 lety

    could i know where do you get (draw and render functions)?
    thank you

  • @anandaperumalb1044
    @anandaperumalb1044 Před 5 lety

    thats cool sir

  • @yotubeaccoutsuperawesome

    Where can I learn more about this? I'm hoping to learn as much as possible. I really need to improve my canvas game.

  • @eagle32349
    @eagle32349 Před 2 měsíci

    26:29 Here is the algorithm:
    int k = 0;
    for (int i = 1; i < 5; ++i) { int l = 1;
    for (int j = 1; j < 5; ++j) drawLine(hdc, p[k], p[l += j]);
    k += i;
    }

  • @franciscotorre7702
    @franciscotorre7702 Před 3 lety

    U RE GREAT

  • @mindaugasdudenas624
    @mindaugasdudenas624 Před 5 lety

    Thank you for this, but I try for a couple of hours to understand how I could do the same with the planes ( begin shape end shape ). So I would have a fill over it, but it just does not work in my head so far. Any guidance would be much appreciated.

  • @silvertakana3932
    @silvertakana3932 Před 3 lety

    Shiffman “Oh boy! this work too fast. I didn’t want it to work that fast”.
    All other programmers drop their mouth

  • @peterlous853
    @peterlous853 Před 5 lety +1

    Nice coding challange! How do you prevent division by zero when doing the perspective projection (i.e. distance - rotated.z = 0)?

  • @ScaredHelmet
    @ScaredHelmet Před rokem

    How can you change it so when you move the cube up, down, left or right, it still spins around its own center instead of the center of the screen?

  • @sarveshwarans8037
    @sarveshwarans8037 Před 5 lety

    Love your vedio

  • @tiktoks4579
    @tiktoks4579 Před 10 měsíci

    it's like a four dimensional hyperspace

  • @puppergump4117
    @puppergump4117 Před 2 lety

    I got everything right (using cpp) but I have a couple problems.
    Firstly, the z values separate the two layers of cube opposite each other. Basically I now have two squares rotating around an empty space.
    It also keeps rotating around the upper left corner (the origin). I tried subtracting the point's position with the cube's position and it kind of centered, but it always rotates around with the upper left point pointing toward the rotation point. I cannot get the rotation point to be inside the cube. When I tried, everything froze.
    The worst part is that I just did exactly what you did. I can only guess that there are more 3d helping tools in processing, even without the 3d functions.

  • @Tomyk9991
    @Tomyk9991 Před 5 lety

    will machine learning and ml5 be available in processing itself sometime?

  • @neontiger2007
    @neontiger2007 Před 4 lety

    Lol, dude. You are crazy but you are brilliant, and so was your video. First video I've seen from you. Plain subscribe, of course.
    I hope I can understand these topics because I would LOVE to be able to make a 2D perspective based tennis game (like Mario Tennis for Gameboy Advance) but with the aesthetics and fun of a Kunio-kun no-Nekketsu game.
    Hugs from Argentina.
    P.S: Excuse my awkward English by the way.

  • @myinamei8884
    @myinamei8884 Před 3 lety

    Cool

  • @truefiasco2637
    @truefiasco2637 Před 5 lety

    I would really like to see how you'd render 4d rotations as they look really cool, I've tried doing it in Processing without any success, I've been able to "rotate" a hyper cube in "4d "

  • @alexfagan6249
    @alexfagan6249 Před 3 lety +4

    ive been following along using python, so far everything works, until i add perspective. Anyone know the original perspective formula i should use?

  • @int16_t
    @int16_t Před 3 lety

    I hope you defined the direction of x y z.
    It's quite confusing whether z is the vertical axis or y.

  • @Illusionaire1
    @Illusionaire1 Před 5 lety

    I've watched both this and the livestream, and I'm always lost on why the matrices have 3 rows. A point X, Y and Z shouldn't be only row on the Matrix? 3 cols, 1 row? How does that become 3 cols, 3 rows?

  • @inferious777
    @inferious777 Před 4 lety

    Im writing this in javascript canvas from scratch. My current rotation axis is the axes themselves (x,y,z), trying to find a way to move it to the midpoint of the object.

    • @inferious777
      @inferious777 Před 4 lety

      nvm, solved it by translating all points back to the center and translate it back after.

  • @GeneralPet
    @GeneralPet Před 4 lety

    I know this is done in processing, but there's got to be some some way to use hardware acceleration for matrix operations.

  • @sugiono2801
    @sugiono2801 Před 4 lety +1

    should i learn linear algebra or some math and physics for my computer graphics class? i really didnt understand how rotation works

  • @sea-cf9fo
    @sea-cf9fo Před 5 lety

    WOW!

  • @stavros222
    @stavros222 Před 4 dny

    I tried this on javascript. On z rotation with only 4 vertices the first dot is not spinning and the entire dots are spinning towards this point. Same with other rotations but with two dots being the center. Why does this happen

  • @kimung203
    @kimung203 Před 5 lety +3

    The coding train: I finished a 3d cube
    Tesseract: hold my beer
    The coding train: hahahaha **breathes** no you
    Penteract: hold my vodka
    The coding train: oh hell no