Skip to content

Latest commit

 

History

History
1 lines (1 loc) · 1.1 KB

File metadata and controls

1 lines (1 loc) · 1.1 KB

Ez inkább matek, mint programozás és matekból is vektorok skalárszorzása és Pythagoras-tétel van benne. Ha ezt a két dolgot érted, akkor elég érthető a kód. Az x,y,z koordinátájú pontból (ld. 60-as sor) elindítasz egy sugarat dx,dy,dz irányba (70-es sor) majd a padló (y=0 koordinátájú sík) és a gömbök (középpont koordináták és sugarak a 30-as sortól) felszínével kiszámolod a metszéspontokat és veszed a legközelebbit ezek közül. Ez lesz az új x,y,z koordinátájú pont. Ha ez a padlón van, akkor megnézed, hogy árnyékolja-e a gömbök egyike, s ha nem, beszínezed az x és z koordináták áltan meghatározott színre. Ha gömb a legközelebbi metszéspont, akkor kiszámolod az adott pontban a felszínre merőleges (ún normális) vektort nx,ny,nz, ami nem más, mint ami a gömb középpontjából ide mutat. Majd kiszámolod a d vektor n-el párhuzamos vetületét, s azt kétszer kivonod belőle, azaz n-re merőleges síkra tükrözöd d-t, majd újra elkezdesz metszéspontot keresni. Ha nincs metszéspont se padlóval se gömbbel, feketén hagyod a pontot. Ennyi!