*Gracias a las aclaraciones y aportes de algunos comentarios debo aclarar algunas cosillas:* - En la ecuación del minuto 23:43 cometí un error de edición, la fracción que indica "1/3" debe ser en realidad "3/2" (por algo la constante "threehalfs" es 1.5). - A diferencia de lo que muchos podrían pensar, el algoritmo no lo creo Jhon Carmack, o el equipo de id software (la empresa detrás de Doom y Quake), este algoritmo tiene historia propia que data al año 1986 incluso, de hecho uno de los creadores William Kaham es uno de los científicos detrás de la creación del estándar IEEE754, asi que tiene sentido de donde salió ese conocimiento tan profundo de las unidades de memoria, el algoritmo paso por muchas manos (Gary Tarolli, una de ellos), siendo refinada en el camino hasta que de alguna forma llego a Quake, si quieren mas detalles de la autoría la wikipedia en ingles esta bien detallada. Es probable que la razon del porque se perdió el origen de quien o como se calculo el número mágico, sea debido al largo camino que siguió, pero bueno esto último nomas es hipótesis mía. - En el minuto 6:28, digo que se se ha reducido a la mitad los números enteros que se pueden representar, pero de hecho se han reducido aún mucho más, piénsenlo, cuando teníamos 32 bits, podíamos representar 2^32 números, con 16, se pueden representar 2^16, si restamos (2^32 - 2^16), se pierden 4,294,901,760 valores, aún mayor razón para utilizar el estándar IEEE754, una arquitectura bastante ingeniosa por cierto. - Como muchos apuntaron, en 11:29, la razón de utilizar logaritmos es muy probablemente que estos permiten simplificar la operación de números muy grandes (o muy pequeños), también probablemente sea por lo fácil que se convierte la inversa de la raiz cuadrada cuando le sacas logaritmo a ambos lados de la ecuación, chequense 13:13, se observa que la relación ahora entre salida y entrada (operadas con logaritmo) es lineal, por lo que se ha eliminado la operación raíz de la ecuación. -8:13 En este minuto me olvide cambiar los bits xd, 126 es 1111110, eso es lo que deberia estar puesto en la unidad de memoria. (Ire actualizando según vea mas aportes jsjs, gracias a todos por sus comentarios 🥸)
Muchas gracias por el dato. Sorprendente lo que puede hacer un fragmento de código. Unos genios los creadores y si en un futuro pudieras hacer o editar el video, sería genial. Excelente investigación 👍💯
me ah encantado tu explicación de como se guarda la información en la memoria de un pc, pensar que incluso hoy usando 64bits, el guardado de información en la ram a la hora de programar funciona de una forma muy parecida a como vos explicas acá. es una explicación bien técnica a nivel programación.
@@Comomevoyapasarlavida Nomas son slides de PowerPoint xd, lo que pasa que en general los programas de offfice tienen como una herramienta donde puedes escribir ecuaciones y la verdad quedan bien chéveres visualmente.
alguna vez en la universidad me mostraron ese código, pero el maestro no lo supo explicar y justo dijo que era magia jaja, mucho tiempo lo quise investigar pero no encontraba el código y ahora lo encuentro con todo y respuesta, muchas gracias, excelente video!
Dato curioso: Este código es el que me llevó a estudiar Ingenieria Informática, y expresa el fundamento del porqué estudias matemáticas en Ingenieria. Me cansé de escuchar sobre "no usamos matematicas y lo poco que usamos lo sacamos de google". Este tipo de soluciones y entendimiento es el que sobresale al resto, y me encanta. Personalmente, para esta solución, tuve que cursar 2 materias por separado para entenderla, y es sencillamente increible.
@@erickandrade154 Personalmente los contenidos de estos temas están en las materias obligatorias del plan de estudio de mi carrera (el analisis binario se ve en Estructura del computador o cualquier materia semejante, la resolución e iteración de gauss se ve en numeracion numerica/analisis numerico), pero adicionalmente, cursé cosas muy intereesantes como optimizacion de modelos y analisis matematico 3
@@jinz4246 Puede ser cierto, como es cierto el nivel de software que se entrega en el dia de hoy y es vidente con el lanzamiento de videojuegos de estos últimos 2 años exceptuando algún caso particular. ¿Puedes ir al wolframalpha y solucionarlo? Por supuesto, pero si tienes que resolver una integral, lo primero que harías seria buscar una libreria que solucione y no sea costosa, cuando con conocimientos de una carrera de grado, puedes utilizar coeficientes de gauss y lograr una solución con un margen de error ínfima. Saber esto te separa del resto, sí, es overkill para alguna gente, innecesario, y es entendible, pero les puedo asegurar que impacta.
Felicidades normalmente este tipo de contenido de alta calidad no hay en espanol, por eso siempre termino viendo contenido en ingles pero que agradable tenerlo en espanol es mucho mas fácil de comprender.
Eu não falo espanhol, mas pude compreender facilmente sua fala. Muito obrigado, foi realmente interessante! Por muitos anos tentei entender o que era este código! Obrigado
Muy buena calidad de video! Como aporte sobre porque se uso logaritmos, es por la propiedad que permite "convertir" multiplicaciones en sumas por la propiedad log(ab) = log(a) + log(b), la ventaja de esto es que al hacer multiplicaciones entre números muy grandes o muy chicos, se puede complicar los cálculos computacionales debido a la matemática de punto flotante de la computadora, con este logaritmo reducimos este efecto indeseado de las multiplicaciones. Por ejemplo tenemos la operación: 0.0005 * 0.0002 = 0.0000001 = 1e-7 Este número resultante ya es problemático, y si lo multiplicamos N veces se va a hacer más y más problemático. Ahora si lo comparamos con el logaritmo: Log2(0.0005 * 0.0002) = Log2(0.0005) + Log2(0.0002) =(Aprox) -10.965 -12.287 =(aprox) -23.253 Se puede ver que las operaciones son más manejables, ya que los números muy chicos o muy grandes se transforman en números con mantisas más manejables. Ultimo ejemplo: Log2(1e20) = 66.438 (aprox) Log2(1e-20) = -66.438 (aprox)
Fua... De verdad no me esperaba este nivel de calidad. Hermano, eres muy bueno explicando y el tema es muy interesante, especialmente la parte matemática. Como estudiante de matemáticas puras, apruebo este video.
Esto es símplemente una genialidad. Ahora estamos tan acostumbrados a tener potencia computacional ilimitada y no nos sentamos a pensar cómo se puede mejorar un proceso que funciona "bien". Las librerías, motores, frameworks que hay por la web facilitan tanto el trabajo que la mayor preocupación de uno es la compatibilidad de versiones. No estoy en contra de los avances realizados, pero no se debería dejar de lado el ingenio humano y lo realmente divertido que puede ser crear algo desde cero.
Para mí no es así. Los que diseñan juegos puede que ya no se ocupen de temas que son responsabilidad del motor, pero la programación de software sigue creando desafíos y soluciones interesantes.
FAA hace un tiempo ví un reel que hablaba justamente de eso y la mayoría de los comentarios era "no trates de reinventar la rueda" la verdad el mundo del desarrollo web es usar lo que funcione para evitar trabajo extra.
mmmm la ley universal de la programacion, es , si funciona no lo toques, cuando se cree algo nuevo se mejora, pero si ya funciona bien y el redimiento no esta afectando a nada ps quedo asi, puede que por andar toqueteando te lo tires y y el control z no funcione y ahi cagaste 🤣, toca pedirle ayuda al dios git que te salve, o si manejas un historial local
Así no es como funciona el mundo real. La prueba es este mismo video, sobre un algoritmo del 1986 que se sigue reutilizando aunque la mayoría no puede explicar exactamente porque está hecho así. Los que te pagan el sueldo no van a estar interesados en tu propuesta de optimizar un microsegundo si eso implica que trabajes meses o años 😐
@@eljabon3164 esa lógica funciona para el 90% de casos trabajo de oficina o desarrollo en consultoría, para trabajo de investigación, creación de modelos matemáticos y desarrollo computacional el ingenio humano y unas bases sólidas en matemáticas son irremplazables, todos las nuevas tecnologías se basan en algoritmos nuevos y complejos el detalle es que muy pocas instituciones brindan enseñanza a ese nivel y con esa orientación por eso el 90% de ingenieros especialmente en Latinoamérica saben usar todo pero crear nada.
El poder de las matemáticas en su máxima expresión. Quede igual de asombrado cuando me enseñaron a resolver en Estatica sistemas de ecuaciones con algebra lineal, toda la prepa pense que eran para cosas diferentes. La de trabajo que me ahorraron en la universidad. Y luego quede mas estupefacto cuando descubri que los algoritmos transformers para las I.As en esencia se manejan con algebra lineal. Realmente el poder del computo viene mas del estudio matemático que de las mejoras del hardware.
Quedo impresionado, viendo este video llego a la conclusión de que los programadores de antes, no solo sabían de programación sino que también eran matemáticos y hasta físicos, osea que eran versados en más de una materia.
En la programación siempre se ha utilizado matemáticas, pues ya que todo se rige a base de 0 y 1. Pero eso sí, sin duda los programadores antiguos con sus códigos y sus ingenios le han facilitado demasiado el trabajo a los actuales, y más mérito por la época y métodos que tenían que emplear.
el limitante de memoria ram y recursos te obligaba a crear tus propios algoritmos que fueran mucho mas optimoa y efectivos en su tarea. hoy en dia al tener muchos mas recursos se programa cada vez de peor forma.
Mucha más optimización que requiere tiempo e ingenio para hacer que se puedan ejecutar en componentes que normalmente no harían la tarea correctamente y/o a tiempo. Muy bueno eso y ojalá hagan más optimización en los juegos actuales que piden y piden cada vez más requisitos. Será que usarán la IA para ayudar con esas optimizaciones?
Antes no existían Unreal engine o Unity. Muchos estudios debían comenzar con su propio motor gráfico desde cero, y los juegos eran hechos por ingenieros, programadores y científicos computacionales. No por "diseñadores de juegos"... Es más, hoy día es MUY sencillo hacer videojuegos y la calidad está cada vez peor. Pesan más y más gigabytes y tienen menos y menos contenido.
Excelente vídeo. Lo explicaste de una manera extremadamente fácil de entender, muchas gracias. Los “vectores normalizados” también son llamados “Vectores Unitarios”.
Y que es precisamente lo que hacen los motores por eso es lindo aprender a programar, porque aprender es saber Programar, Analizar, y saber que hace como por ejemplo el famoso Normalize() detrás, la Programación no es escribir código, es más que eso. Ya entendiendo los conceptos y bases te permite crear el propio código y resolver otros problemas a futuro con esos Conocimientos o mejor aún aprender a crear tu propio Framework o Game Engine para que los Desarrolladores lo utilicen. Por eso siempre digo que los Frameworks y Engines no son de Programación, sino que son de Desarrollo, y confunden Desarrollar con Programar, son 2 lados distintos dentro de la Ing. de Software y Analista de Sistemas. 🤠
Muy bien realizado el video. Una clase muy interesante y bien explicada. Es extraño que tengas tan pocos suscriptores con el nivel de calidad que he visto en este video. Muy bien hecho.
Soy estudiante de electrónica, este fue uno de esos temas que vi y me gusto, sufri un poco porque lo vi en mis primeros semestres pero igual gustó. Veo que lo explicas muy bien, me gusta demasiado los canales que se atreven a explorar la matematica de los problemas, increible aproximacion y muy buen video, gracias 👏
Soy estudiante de ingeniería de sistemas, que conocimiento tan profundo de las matemáticas para un videojuego y pensar que en esta carrera se suele escuchar que las matemáticas son "relleno". Gracias por tomarte el tiempo de explicar tan maravilloso algoritmo.
Eres buenísimo explicando, gente como tú deberían ser profesores de ingeniería. Luego te encuentras doctores y docentes con muchos posgrados y explican como somnífero. 100/10
La verdad no entendí ni un poquito de nada, pero estoy seguro que con dos o tres repasadas más entendería algo sjjsjs, igual excelente video, me encantó el ritmo, la narración, se nota el trabajo respecto a la edición del vídeo, y ya, 10/10, no entendí pero me encanto
Buenísimo el contenido de este video. No he visto más videos de tu canal, pero si de esto se tratará tu canal, te deseo todo el éxito del mundo para que logres pronto contratar editores y guionistas que te permitan mejorar la calidad de tus videos. En ese punto tu canal explotará
El Sr. Tarolli pensando cuando le preguntaron sobre el número: "Y ahora como les explico que lo ví en un sueño" XD Gran video, es interesante ver los trucos que hacen los genios, nunca el algebra había sido tan interesante 👍
Sos una joya, me gusta la progrmacion (soy analista en sistemas) pero tambien mas me gustan las matematicas y ver tu explicación con esta edicion tan cuidada, tanta información hecha digerible. Hay tantas horas detras de estos 25 minutos de video, no solo de ediciom sino de aprender las matematicas que estan detras y los aspectos del lenguaje C. Tanto amor. Me alegra muchísimo poder conocer tu canal!
muy buen video! se que John Carmack hizo muchas artes magicas más con otras entregas por ejemplo el desplazamiento horizontal en tiempo real en Commander Keen es digno de un video pues con esa ingeniería Id Software le propuso a Nintendo en que pudieran crear una entrega de super Mario Bros en PC, pero los nipones terminaron rechazando esa oferta.
Ese "numero magico" es la direccion en memoria de una variable que la quiso almacenar como una constante. Lo mismo hace con la variable x ya que tambien obtiene su direccion en memoria con el keyword '&'.
Esperaba un video ligero, gracioso y ligeramente informativo; terminé repasando software de sistemas, algebra lineal y cálculo, y feliz. Sí se sintió como cátedra, pero fue una buena catedra. Buen video
ALA MRD que op, ame la explicacion. Literal esto era lo que los profesores me enseñaran me debieron enseñar. Odié los cursos de numeros en donde no sabia por qué usaba una cosa o la otra. Pero tu lo explicaste perfecto. Gracias!
el video me apareció por casualidad, lo comencé a ver con un poco de escepticismo, pero al final me fui con algo nuevo aprendido, muchas gracias por la explicación!
Este video me hizo recordar lo magníficos que somos los seres humanos cuando queremos hacer algo bien, eres muy inteligente te felicito excelente video! 🤯
Excelente video hermano, se necesita mucho mas contenido así en español Que se animen a contar cosas un poco mas complicadas de lo normal sin miedo a que sea un vídeo aburrido, todo lo contrario me quede pegado a la pantalla hasta el final Lo que mas me impresiono es que con solo una iteración del metodo de newton ya se lograba conseguir un buen resultado, me gustaria ver la diferencia del renderizado entre tener solo una iteracion o agregar la 2da que estaba comentada En fin, sigue asi hermano! ❤
también me recordaste los temás de métodos númericos como el de newton, bisección y regali falsi modificado, la cual todo estas herramientas tienen sentido en esta implementación! valla genialidad que buenos tiempos cuando era joven
Un rato de cine 🚬. Como esquema mental se puede resumir en los siguiente: sacar log a la eq. original -> aproximar con Tylor -> Substituir la ecuación lineal por la ecuación lineal universal (de la IEEE) -> La ecuación lineal resultante se usa como punto inicial para el método de Newton. Brutal.
No conocía este algoritmo y cada vez quedo más impactado de los trucos matemáticos que definen la verdadera ingeniería detrás de un videojuego con un buen rendimiento. Este tipo de algoritmos no sólo son mágicos, son una verdadera genialidad de la humanidad, así como muchos otros que nos han dado las benditas matemágicas En verdad, qué locura
los logaritmos son una transformación, convierte un producto en suma y una división en resta. Destaco tu didactica para este tema, deberías considerar ello como tu aporte a través de artículos o libros especializados.
Yo soy programador empirico, por que estudie otra ingenieria. Pero este video me motiva mas a estudiar el CS en la universidad por lo interesante que es la algoritmia y la "magia" detras de la programacion. muy bonito video
Excelente video!!! Me hiciste recordar que tengo darle una repasada todo esto en matemáticas y todo eso, mi cerebro está todo podrido por falta de práctica.
amigo que pedazo de video, muy interesante, muy didáctico y divulgativo, me has generado mucha curiosidad en investigar más sobre como se guardan los punto flotante en memoria y el método de newton, más contenido como el tuyo!!!
En un resumen ridículamente simple lo que se hace es: 1. Obtener una aproximación inicial 2. Re aproximarla con el método de newton. Pero el conocimiento técnico implementado y su implementación es lo difícil para comprender, sobre todo si se está familiarizado con la programación y el funcionamiento de la arquitectura de los procesadores y el almacenamiento en memoria, Genial video, este algoritmo y la explicación que conlleva es una clase magistral de como implementar soluciones para problemas generados por los retos tecnológicos de tu época. Da' porciento la aplicación del logaritmo es debido a que transforma los números de una base decimal a una binaria compatible con la forma en la que se realizan las operaciones en un ordenador, de hecho, los logaritmos una de sus aplicaciones es la de transformar un numero de una base a otra siendo estos dos números pertenecientes a |R.
El algorirmo me recuerda a los trucos que hacían con las calculadoras mecánicas. Alguien que la supiera usar muy bien podía sacar la raíz-n de un número con un aparato que apenas sumaba, restaba y multiplicaba.
Lito con todo lo que aprendí y lo que ni idea se hacer, me voy a aventar mi juego, con permiso que voy a robarme el código XD Edit: Nuevo sub btw, excelente video
hermano ! que vídeo tan majestuoso y sublime. es un deleite, sigue sacando vídeos así por favor ( amo la programación ). si puedes haz llegar este vídeo al canal Derivando, tal vez de con el origen de el número hex ( "mágico" )
Recien descubro tu canal, creo q lo tuyo es la explicación de codigo, tal como este tema, deben existir muchas historias de programación por descubrir, saludos
Soy ingeniero Civil en Automatización (industrial), excelente explicación y me recuerda un código que hice para la aproximación de un sistema de corte de sierras múltiples (5) consiguiendo un error de +-0.05mm una joyita, programado en PLC.
Excelente explicación! No soy programador, pero últimamente me han interesado temas de computación y hace unos meses que he estado buscando entender este algoritmo. Me has resuelto muchas dudas. Saludos.
Soy estudiante de ingenieria electronica, el semestre pasado justamente cursé sistemas digitales II, POO en C/C++ y algebra lineal. Aún me quedan traumas del formato IEEE754 ya que en los parciales nos colocaban a pasar numeros gigantes a este formato a mano y sin calculadora, y eso solo era para iniciar el ejercicio... Te luciste con la explicación
no entendi nada pero gracias, por favor sigue subiendo y explicando este tipo de problematicas y planteos, usare tu canal como base para estudiar cuando tenga la oportunidad de hacer la ingeniería
11:29 Supongo que es para aprovechar las propiedades del logarítmo para simplificar la ecuación. Ese truquito lo solía usar en la licenciatura para simplificar la obtención de derivadas de funciones que contenían multiplicaciones, divisiones y potencias algo chocantes.
Supongo que el uso de logaritmos que no encontrastes explicación es para darle mayor velocidad de operación a números muy grandes, ya que, por ejemplo no es lo mismo operar n1=3.44*10^50 - 1.76*10^50, para la máquina serian muchos 0 y 1, pero al llevarlo al nivel logaritmico, seria log(n1) = 50.536 - 50.245, y esto es más fácil de operar miles de veces, ya que, estan en bucle todo el tiempo.
Son esos "trucos" de programación en C que lo vuelven un lenguaje ideal para programar microcontroladores. Sería fantástico un video sobre esos trucos y también un poco de lenguaje ensamblador.
Vaya tenia mucho tiempo sin ver un video que pusiera mi mente a funcionar a tope :D Excelente video, y buenas explicaciones, aunque hubo una pequeña pifiada en el camino. Pero excelente explicacion.
*Gracias a las aclaraciones y aportes de algunos comentarios debo aclarar algunas cosillas:*
- En la ecuación del minuto 23:43 cometí un error de edición, la fracción que indica "1/3" debe ser en realidad "3/2" (por algo la constante "threehalfs" es 1.5).
- A diferencia de lo que muchos podrían pensar, el algoritmo no lo creo Jhon Carmack, o el equipo de id software (la empresa detrás de Doom y Quake), este algoritmo tiene historia propia que data al año 1986 incluso, de hecho uno de los creadores William Kaham es uno de los científicos detrás de la creación del estándar IEEE754, asi que tiene sentido de donde salió ese conocimiento tan profundo de las unidades de memoria, el algoritmo paso por muchas manos (Gary Tarolli, una de ellos), siendo refinada en el camino hasta que de alguna forma llego a Quake, si quieren mas detalles de la autoría la wikipedia en ingles esta bien detallada. Es probable que la razon del porque se perdió el origen de quien o como se calculo el número mágico, sea debido al largo camino que siguió, pero bueno esto último nomas es hipótesis mía.
- En el minuto 6:28, digo que se se ha reducido a la mitad los números enteros que se pueden representar, pero de hecho se han reducido aún mucho más, piénsenlo, cuando teníamos 32 bits, podíamos representar 2^32 números, con 16, se pueden representar 2^16, si restamos (2^32 - 2^16), se pierden 4,294,901,760 valores, aún mayor razón para utilizar el estándar IEEE754, una arquitectura bastante ingeniosa por cierto.
- Como muchos apuntaron, en 11:29, la razón de utilizar logaritmos es muy probablemente que estos permiten simplificar la operación de números muy grandes (o muy pequeños), también probablemente sea por lo fácil que se convierte la inversa de la raiz cuadrada cuando le sacas logaritmo a ambos lados de la ecuación, chequense 13:13, se observa que la relación ahora entre salida y entrada (operadas con logaritmo) es lineal, por lo que se ha eliminado la operación raíz de la ecuación.
-8:13 En este minuto me olvide cambiar los bits xd, 126 es 1111110, eso es lo que deberia estar puesto en la unidad de memoria.
(Ire actualizando según vea mas aportes jsjs, gracias a todos por sus comentarios 🥸)
Muchas gracias por el dato. Sorprendente lo que puede hacer un fragmento de código. Unos genios los creadores y si en un futuro pudieras hacer o editar el video, sería genial. Excelente investigación 👍💯
me ah encantado tu explicación de como se guarda la información en la memoria de un pc, pensar que incluso hoy usando 64bits, el guardado de información en la ram a la hora de programar funciona de una forma muy parecida a como vos explicas acá. es una explicación bien técnica a nivel programación.
Bro como editas para que se vea como látex?
@@Comomevoyapasarlavida Nomas son slides de PowerPoint xd, lo que pasa que en general los programas de offfice tienen como una herramienta donde puedes escribir ecuaciones y la verdad quedan bien chéveres visualmente.
en el 8:12 también te equivocas al expresar el 126 en binario
alguna vez en la universidad me mostraron ese código, pero el maestro no lo supo explicar y justo dijo que era magia jaja, mucho tiempo lo quise investigar pero no encontraba el código y ahora lo encuentro con todo y respuesta, muchas gracias, excelente video!
Al final si era magia jsjsjs
@@alexvaldelamarbustamante3835 jajaja
mentiroso 😂
Vaya invent...un profesor de universidad jamás daría esa respuesta.
Vine esperando encontrar un algoritmo curioso y terminé con una clase repaso de aritmética de computadoras, programación en C y analisis matemático 🤓
Dato curioso: Este código es el que me llevó a estudiar Ingenieria Informática, y expresa el fundamento del porqué estudias matemáticas en Ingenieria. Me cansé de escuchar sobre "no usamos matematicas y lo poco que usamos lo sacamos de google".
Este tipo de soluciones y entendimiento es el que sobresale al resto, y me encanta. Personalmente, para esta solución, tuve que cursar 2 materias por separado para entenderla, y es sencillamente increible.
Es obvio la base de ingeniería es la matemática
Que tipo de materias adicionalmente tomaste?
Eso lo dicen solo por algunos tipos de codigo como este, que raramente se usa.
@@erickandrade154 Personalmente los contenidos de estos temas están en las materias obligatorias del plan de estudio de mi carrera (el analisis binario se ve en Estructura del computador o cualquier materia semejante, la resolución e iteración de gauss se ve en numeracion numerica/analisis numerico), pero adicionalmente, cursé cosas muy intereesantes como optimizacion de modelos y analisis matematico 3
@@jinz4246 Puede ser cierto, como es cierto el nivel de software que se entrega en el dia de hoy y es vidente con el lanzamiento de videojuegos de estos últimos 2 años exceptuando algún caso particular. ¿Puedes ir al wolframalpha y solucionarlo? Por supuesto, pero si tienes que resolver una integral, lo primero que harías seria buscar una libreria que solucione y no sea costosa, cuando con conocimientos de una carrera de grado, puedes utilizar coeficientes de gauss y lograr una solución con un margen de error ínfima.
Saber esto te separa del resto, sí, es overkill para alguna gente, innecesario, y es entendible, pero les puedo asegurar que impacta.
Felicidades normalmente este tipo de contenido de alta calidad no hay en espanol, por eso siempre termino viendo contenido en ingles pero que agradable tenerlo en espanol es mucho mas fácil de comprender.
Eu não falo espanhol, mas pude compreender facilmente sua fala. Muito obrigado, foi realmente interessante! Por muitos anos tentei entender o que era este código! Obrigado
Muy buena calidad de video! Como aporte sobre porque se uso logaritmos, es por la propiedad que permite "convertir" multiplicaciones en sumas por la propiedad log(ab) = log(a) + log(b), la ventaja de esto es que al hacer multiplicaciones entre números muy grandes o muy chicos, se puede complicar los cálculos computacionales debido a la matemática de punto flotante de la computadora, con este logaritmo reducimos este efecto indeseado de las multiplicaciones.
Por ejemplo tenemos la operación:
0.0005 * 0.0002 = 0.0000001 = 1e-7
Este número resultante ya es problemático, y si lo multiplicamos N veces se va a hacer más y más problemático. Ahora si lo comparamos con el logaritmo:
Log2(0.0005 * 0.0002) = Log2(0.0005) + Log2(0.0002) =(Aprox) -10.965 -12.287 =(aprox) -23.253
Se puede ver que las operaciones son más manejables, ya que los números muy chicos o muy grandes se transforman en números con mantisas más manejables. Ultimo ejemplo:
Log2(1e20) = 66.438 (aprox)
Log2(1e-20) = -66.438 (aprox)
wao, tienes razón, no lo había pensado así. Buen aporte.
Este debe ir como comentario destacado.
Fua... De verdad no me esperaba este nivel de calidad.
Hermano, eres muy bueno explicando y el tema es muy interesante, especialmente la parte matemática. Como estudiante de matemáticas puras, apruebo este video.
Esto es símplemente una genialidad. Ahora estamos tan acostumbrados a tener potencia computacional ilimitada y no nos sentamos a pensar cómo se puede mejorar un proceso que funciona "bien". Las librerías, motores, frameworks que hay por la web facilitan tanto el trabajo que la mayor preocupación de uno es la compatibilidad de versiones. No estoy en contra de los avances realizados, pero no se debería dejar de lado el ingenio humano y lo realmente divertido que puede ser crear algo desde cero.
Para mí no es así. Los que diseñan juegos puede que ya no se ocupen de temas que son responsabilidad del motor, pero la programación de software sigue creando desafíos y soluciones interesantes.
FAA hace un tiempo ví un reel que hablaba justamente de eso y la mayoría de los comentarios era "no trates de reinventar la rueda" la verdad el mundo del desarrollo web es usar lo que funcione para evitar trabajo extra.
mmmm la ley universal de la programacion, es , si funciona no lo toques, cuando se cree algo nuevo se mejora, pero si ya funciona bien y el redimiento no esta afectando a nada ps quedo asi, puede que por andar toqueteando te lo tires y y el control z no funcione y ahi cagaste 🤣, toca pedirle ayuda al dios git que te salve, o si manejas un historial local
Así no es como funciona el mundo real. La prueba es este mismo video, sobre un algoritmo del 1986 que se sigue reutilizando aunque la mayoría no puede explicar exactamente porque está hecho así. Los que te pagan el sueldo no van a estar interesados en tu propuesta de optimizar un microsegundo si eso implica que trabajes meses o años 😐
@@eljabon3164 esa lógica funciona para el 90% de casos trabajo de oficina o desarrollo en consultoría, para trabajo de investigación, creación de modelos matemáticos y desarrollo computacional el ingenio humano y unas bases sólidas en matemáticas son irremplazables, todos las nuevas tecnologías se basan en algoritmos nuevos y complejos el detalle es que muy pocas instituciones brindan enseñanza a ese nivel y con esa orientación por eso el 90% de ingenieros especialmente en Latinoamérica saben usar todo pero crear nada.
Una joya cuando encuentras videos que explican matemáticas con videojuegos/programación. Muchas gracias
El poder de las matemáticas en su máxima expresión.
Quede igual de asombrado cuando me enseñaron a resolver en Estatica sistemas de ecuaciones con algebra lineal, toda la prepa pense que eran para cosas diferentes. La de trabajo que me ahorraron en la universidad.
Y luego quede mas estupefacto cuando descubri que los algoritmos transformers para las I.As en esencia se manejan con algebra lineal.
Realmente el poder del computo viene mas del estudio matemático que de las mejoras del hardware.
Quedo impresionado, viendo este video llego a la conclusión de que los programadores de antes, no solo sabían de programación sino que también eran matemáticos y hasta físicos, osea que eran versados en más de una materia.
En la programación siempre se ha utilizado matemáticas, pues ya que todo se rige a base de 0 y 1. Pero eso sí, sin duda los programadores antiguos con sus códigos y sus ingenios le han facilitado demasiado el trabajo a los actuales, y más mérito por la época y métodos que tenían que emplear.
el limitante de memoria ram y recursos te obligaba a crear tus propios algoritmos que fueran mucho mas optimoa y efectivos en su tarea. hoy en dia al tener muchos mas recursos se programa cada vez de peor forma.
Mucha más optimización que requiere tiempo e ingenio para hacer que se puedan ejecutar en componentes que normalmente no harían la tarea correctamente y/o a tiempo. Muy bueno eso y ojalá hagan más optimización en los juegos actuales que piden y piden cada vez más requisitos. Será que usarán la IA para ayudar con esas optimizaciones?
Mejor dicho, los primeros programadores eran matemáticos y físicos que programaban...
Antes no existían Unreal engine o Unity. Muchos estudios debían comenzar con su propio motor gráfico desde cero, y los juegos eran hechos por ingenieros, programadores y científicos computacionales. No por "diseñadores de juegos"...
Es más, hoy día es MUY sencillo hacer videojuegos y la calidad está cada vez peor. Pesan más y más gigabytes y tienen menos y menos contenido.
Y yo que no ponía atención en la escuela pero solo son los maestros que no saben como pasarte esa emoción de aprender.
Increible video bro ❤
Excelente vídeo.
Lo explicaste de una manera extremadamente fácil de entender, muchas gracias.
Los “vectores normalizados” también son llamados “Vectores Unitarios”.
Yo estudio ingeniería informática y la conversión de decimal a binario lo vemos en lógica Algorítmica, buen video.
Y que es precisamente lo que hacen los motores por eso es lindo aprender a programar, porque aprender es saber Programar, Analizar, y saber que hace como por ejemplo el famoso Normalize() detrás, la Programación no es escribir código, es más que eso. Ya entendiendo los conceptos y bases te permite crear el propio código y resolver otros problemas a futuro con esos Conocimientos o mejor aún aprender a crear tu propio Framework o Game Engine para que los Desarrolladores lo utilicen. Por eso siempre digo que los Frameworks y Engines no son de Programación, sino que son de Desarrollo, y confunden Desarrollar con Programar, son 2 lados distintos dentro de la Ing. de Software y Analista de Sistemas. 🤠
Muy bien realizado el video. Una clase muy interesante y bien explicada. Es extraño que tengas tan pocos suscriptores con el nivel de calidad que he visto en este video. Muy bien hecho.
Clase maestra para una solución genial del programador. Mis respetos a ambos. Saludos y gracias por el contenido. Nuevo suscriptor aqui.
Un tema que ya ha sido explicado desde hace varios años y hay varios videos en YT. Pero es el primero que veo en español y eso se agradece. Saludos.
Soy estudiante de electrónica, este fue uno de esos temas que vi y me gusto, sufri un poco porque lo vi en mis primeros semestres pero igual gustó.
Veo que lo explicas muy bien, me gusta demasiado los canales que se atreven a explorar la matematica de los problemas, increible aproximacion y muy buen video, gracias 👏
Soy estudiante de ingeniería de sistemas, que conocimiento tan profundo de las matemáticas para un videojuego y pensar que en esta carrera se suele escuchar que las matemáticas son "relleno". Gracias por tomarte el tiempo de explicar tan maravilloso algoritmo.
Eres buenísimo explicando, gente como tú deberían ser profesores de ingeniería. Luego te encuentras doctores y docentes con muchos posgrados y explican como somnífero. 100/10
La verdad no entendí ni un poquito de nada, pero estoy seguro que con dos o tres repasadas más entendería algo sjjsjs, igual excelente video, me encantó el ritmo, la narración, se nota el trabajo respecto a la edición del vídeo, y ya, 10/10, no entendí pero me encanto
Buenísimo el contenido de este video. No he visto más videos de tu canal, pero si de esto se tratará tu canal, te deseo todo el éxito del mundo para que logres pronto contratar editores y guionistas que te permitan mejorar la calidad de tus videos. En ese punto tu canal explotará
El Sr. Tarolli pensando cuando le preguntaron sobre el número: "Y ahora como les explico que lo ví en un sueño" XD
Gran video, es interesante ver los trucos que hacen los genios, nunca el algebra había sido tan interesante 👍
Lo sacó de Google
Que locura de vídeo!! está muy bien explicado, sigue así
Sos una joya, me gusta la progrmacion (soy analista en sistemas) pero tambien mas me gustan las matematicas y ver tu explicación con esta edicion tan cuidada, tanta información hecha digerible. Hay tantas horas detras de estos 25 minutos de video, no solo de ediciom sino de aprender las matematicas que estan detras y los aspectos del lenguaje C. Tanto amor. Me alegra muchísimo poder conocer tu canal!
muy buen video! se que John Carmack hizo muchas artes magicas más con otras entregas por ejemplo el desplazamiento horizontal en tiempo real en Commander Keen es digno de un video pues con esa ingeniería Id Software le propuso a Nintendo en que pudieran crear una entrega de super Mario Bros en PC, pero los nipones terminaron rechazando esa oferta.
Interesante 🤔, lo tendré en cuenta.
Una forma más que elegante de resolver un problema y que además le da la vuelta al uso de ensamblador para aumentar velocidad del proceso.
Te quedó muy bueno el video, sigue así. Me hiciste recordar el estándar IEEE 754 😂
Ese "numero magico" es la direccion en memoria de una variable que la quiso almacenar como una constante. Lo mismo hace con la variable x ya que tambien obtiene su direccion en memoria con el keyword '&'.
Esperaba un video ligero, gracioso y ligeramente informativo; terminé repasando software de sistemas, algebra lineal y cálculo, y feliz. Sí se sintió como cátedra, pero fue una buena catedra. Buen video
Este video demuestra que hay una enorme diferencia entre saber programar, y solo conocer el lenguaje.
ALA MRD que op, ame la explicacion. Literal esto era lo que los profesores me enseñaran me debieron enseñar. Odié los cursos de numeros en donde no sabia por qué usaba una cosa o la otra. Pero tu lo explicaste perfecto. Gracias!
La verdad es q lo has explicado muy bien y de forma muy asequible para quienes no sepan de programación y matemáticas.
que BELLEZA de video, muchas gracias!!♥
Que buen video, me encanto este enfoque de programación tan "elemental". Sin duda unos genios los que programaron este motor.
el video me apareció por casualidad, lo comencé a ver con un poco de escepticismo, pero al final me fui con algo nuevo aprendido, muchas gracias por la explicación!
Nuevo sub, esta muy bueno el contenido, me gustaría seguir viendo más videos como este 👍
Este video me hizo recordar lo magníficos que somos los seres humanos cuando queremos hacer algo bien, eres muy inteligente te felicito excelente video! 🤯
De los mejores videos de RUclips que ví últimamente
Descubrí tu canal hoy, que genial el vídeo a pesar de entender quizás solamente un 50% de la explicación pero parece ser muy ingenioso
Te felicito hermano, buenísima tu explicación!
7:20 me explicaste punto flotante mucho mejor de lo que la uni lo hizo en metodos numericos xd
Excelente video hermano, se necesita mucho mas contenido así en español
Que se animen a contar cosas un poco mas complicadas de lo normal sin miedo a que sea un vídeo aburrido, todo lo contrario me quede pegado a la pantalla hasta el final
Lo que mas me impresiono es que con solo una iteración del metodo de newton ya se lograba conseguir un buen resultado, me gustaria ver la diferencia del renderizado entre tener solo una iteracion o agregar la 2da que estaba comentada
En fin, sigue asi hermano! ❤
Amigo muchas gracias por este video me has inspirado para retomar la programación
Todo mi curso de Electrónica Digital 2 resumido en 25min. Me suscribo
Amigo que BUEN video, soy estudiante de Ingeniería de Sistemas y esto me pareció fascinante
Gracias por traer tan buen contenido a la plataforma!
también me recordaste los temás de métodos númericos como el de newton, bisección y regali falsi modificado, la cual todo estas herramientas tienen sentido en esta implementación! valla genialidad que buenos tiempos cuando era joven
Guau bro, que excelente nivel de video. Eres un crack. Tienes un nuevo subscriptor. Por favor sigue sacando videos así 👍🏼👍🏼👍🏼
Gracias, si, estoy pensando en sacar mas algoritmos interesantes de videojuegos.
Excelente vídeo y explicación.
Visto en 06/08/2024
Excelente video 👌🏻
Pedazo de video. Es una joya, buena investigacion. Te llevaste mi like
Un rato de cine 🚬. Como esquema mental se puede resumir en los siguiente: sacar log a la eq. original -> aproximar con Tylor -> Substituir la ecuación lineal por la ecuación lineal universal (de la IEEE) -> La ecuación lineal resultante se usa como punto inicial para el método de Newton. Brutal.
Muchas gracias, muy interesante desde el punto de vista de la programación y la matemática
No conocía este algoritmo y cada vez quedo más impactado de los trucos matemáticos que definen la verdadera ingeniería detrás de un videojuego con un buen rendimiento. Este tipo de algoritmos no sólo son mágicos, son una verdadera genialidad de la humanidad, así como muchos otros que nos han dado las benditas matemágicas
En verdad, qué locura
Muchas gracias, exelente explicación 👍🏻,estare pendiente de mas videos...😁.
Felicitaciones, excelente contenido académico y entretenido
Super bien explicado, agradecido por el vídeo 🦙, un sub mas 😀
Tu vídeo es increíble 😊
muy buen video, finalmente lo entendí, recuerdo haber visto un video en ingles acerca de este código, este video fue mucho mejor!
Me encantó , sigue haciendo videos así por favor
Que crack Jonh Carmack,Ojala tuviera la cuarta parte de la inteligencia que tiene este chabon
los logaritmos son una transformación, convierte un producto en suma y una división en resta.
Destaco tu didactica para este tema, deberías considerar ello como tu aporte a través de artículos o libros especializados.
Yo soy programador empirico, por que estudie otra ingenieria. Pero este video me motiva mas a estudiar el CS en la universidad por lo interesante que es la algoritmia y la "magia" detras de la programacion. muy bonito video
Wow, lograste que no resultará aburrido . La verdad, mis respetos
Realmente entendible.
Excelente video!!!
Me hiciste recordar que tengo darle una repasada todo esto en matemáticas y todo eso, mi cerebro está todo podrido por falta de práctica.
@@ghostkiller93 xd, gracias amigo. Pero ps si estan un poquito pesadas las matemáticas jsjs.
Que maravilla de video, espectacular
@@yesidelyesud gracias 😀
que buen video LPTM, no entendí nada pero que buen vídeo, muchas gracias por tu trabajo!!!!
amigo que pedazo de video, muy interesante, muy didáctico y divulgativo, me has generado mucha curiosidad en investigar más sobre como se guardan los punto flotante en memoria y el método de newton, más contenido como el tuyo!!!
Esta super, gracias por la explicación y en definitiva en programación hay genios muy loco
Asi es, debían serlo si querían hacer funcionar esos juegazos en las chatarras de la época xd.
En un resumen ridículamente simple lo que se hace es: 1. Obtener una aproximación inicial 2. Re aproximarla con el método de newton. Pero el conocimiento técnico implementado y su implementación es lo difícil para comprender, sobre todo si se está familiarizado con la programación y el funcionamiento de la arquitectura de los procesadores y el almacenamiento en memoria, Genial video, este algoritmo y la explicación que conlleva es una clase magistral de como implementar soluciones para problemas generados por los retos tecnológicos de tu época. Da' porciento la aplicación del logaritmo es debido a que transforma los números de una base decimal a una binaria compatible con la forma en la que se realizan las operaciones en un ordenador, de hecho, los logaritmos una de sus aplicaciones es la de transformar un numero de una base a otra siendo estos dos números pertenecientes a |R.
Ni bien empezo el video, mi dedo pulso el boton de suscripcion 😮
El algorirmo me recuerda a los trucos que hacían con las calculadoras mecánicas. Alguien que la supiera usar muy bien podía sacar la raíz-n de un número con un aparato que apenas sumaba, restaba y multiplicaba.
Lito con todo lo que aprendí y lo que ni idea se hacer, me voy a aventar mi juego, con permiso que voy a robarme el código XD
Edit: Nuevo sub btw, excelente video
Excelente trabajo. Felicidades!!
ay wey, mi mente 🤯 - excelente vídeo mi buen, me llevaste de regreso a la uni.
hermano ! que vídeo tan majestuoso y sublime. es un deleite, sigue sacando vídeos así por favor ( amo la programación ). si puedes haz llegar este vídeo al canal Derivando, tal vez de con el origen de el número hex ( "mágico" )
wow fascinante 😀😀😀
No sabía que debía ver este video hasta que lo ví. Es simplemente maravilloso
Recien descubro tu canal, creo q lo tuyo es la explicación de codigo, tal como este tema, deben existir muchas historias de programación por descubrir, saludos
Soy ingeniero Civil en Automatización (industrial), excelente explicación y me recuerda un código que hice para la aproximación de un sistema de corte de sierras múltiples (5) consiguiendo un error de +-0.05mm una joyita, programado en PLC.
Que ingenio tenian los programadores de Quake y tu video es magnifico
Excelente explicación! No soy programador, pero últimamente me han interesado temas de computación y hace unos meses que he estado buscando entender este algoritmo. Me has resuelto muchas dudas. Saludos.
Metele para estudiar una carrera de informatica.
Soy estudiante de ingenieria electronica, el semestre pasado justamente cursé sistemas digitales II, POO en C/C++ y algebra lineal. Aún me quedan traumas del formato IEEE754 ya que en los parciales nos colocaban a pasar numeros gigantes a este formato a mano y sin calculadora, y eso solo era para iniciar el ejercicio...
Te luciste con la explicación
Un gran video sobre el tema! gracias es muy informativo
wow gracias por el material, desde todo punto de vista valiosisimo
No entiendo mucho de lenguajes de programacion, pero me gusto ver este video, muchas cositas muy interesantes de ver y aprender.
no entendi nada pero gracias, por favor sigue subiendo y explicando este tipo de problematicas y planteos, usare tu canal como base para estudiar cuando tenga la oportunidad de hacer la ingeniería
Que buen contenido estimado ❤
Magistral clase de ingeniería!
Esta muy chido tu canal lo descubri y soy nuevo subscriptor
gran trabajo, me recordaste temas de cálculo vectorial y cálculo numérico. Suscrito
super video, un concepto que marco un antes y un despues de los videojuegos, y de la computacion grafica
11:29 Supongo que es para aprovechar las propiedades del logarítmo para simplificar la ecuación.
Ese truquito lo solía usar en la licenciatura para simplificar la obtención de derivadas de funciones que contenían multiplicaciones, divisiones y potencias algo chocantes.
Supongo que el uso de logaritmos que no encontrastes explicación es para darle mayor velocidad de operación a números muy grandes, ya que, por ejemplo no es lo mismo operar n1=3.44*10^50 - 1.76*10^50, para la máquina serian muchos 0 y 1, pero al llevarlo al nivel logaritmico, seria log(n1) = 50.536 - 50.245, y esto es más fácil de operar miles de veces, ya que, estan en bucle todo el tiempo.
muy bueno hermano, te felicito!
QUÉ LOCAZO!!! GRAN VIDEO, BRO!! MIS RESPETOS
Son esos "trucos" de programación en C que lo vuelven un lenguaje ideal para programar microcontroladores. Sería fantástico un video sobre esos trucos y también un poco de lenguaje ensamblador.
Vaya tenia mucho tiempo sin ver un video que pusiera mi mente a funcionar a tope :D Excelente video, y buenas explicaciones, aunque hubo una pequeña pifiada en el camino. Pero excelente explicacion.