A következő openscad kódnak 100 kockát kellene kirajzolni, de csak tízet rajzol ki. Miért?
module teszt() {
for( y = [ 0 : 9 ] ) {
center_y = y * 11;
center_x = 0;
for( x = [ 0 : 9 ] ) {
translate( [ center_x, center_y, 0 ] ) cube( [ 10, 10, 10 ], center=true );
center_x = center_x + 11;
}
}
}
teszt();
Nem arra keresem a választ, hogy hogyan tudnék 100 kockát kirajzolni, hanem arra, hogy ez a kód miért csak tízet rajzol ki?
Ráadásul az X=11 oszlopban, függetlenül attól, hogy az összeadás a cube előtt vagy után van.
- 362 megtekintés
Hozzászólások
1904.04.08.
RIP Jákub.
neut @
- A hozzászóláshoz be kell jelentkezni
Ez az a "AI"-s fejlesztés, amit írtam.
Nem érti a kérdést és/vagy a választ ("Nem arra keresem a választ, hogy hogyan tudnék 100 kockát kirajzolni, hanem arra, hogy ez a kód miért csak tízet rajzol ki?", azaz a "center_x = center_x + 11;" miért nem lesz 11, 22, etc.) hanem kirajzol száz kockát.
Úgy tűnik ez valami feature: "variables are bound to expressions and keep a single value during their entire lifetime"
Ja, és a vicc, hogy a rákérdezel, hogy faszé' nem nő a változó értéke, akkor hablatyol össze-vissza. Már az "AI".
- A hozzászóláshoz be kell jelentkezni
Na, ilyeneket nehogy írjál itt, mindjárt jön Hevi, hogy az AI az isten, megváltja a világot, csak te nem értesz hozzá, azért szidod :D
Engem már letorkolltak itt párszor ezért.
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
OpenSCAD is a Functional programming language, as such variables are bound to expressions and keep a single value during their entire lifetime due to the requirements of referential transparency. In imperative languages, such as C, the same behavior is seen as constants, which are typically contrasted with normal variables.
In other words OpenSCAD variables are more like constants, but with an important difference. If variables are assigned a value multiple times, only the last assigned value is used in all places in the code. See further discussion at Variables are set at compile-time, not run-time.
- A hozzászóláshoz be kell jelentkezni
Nagy +1, bevallom ezt nem tudtam én sem, ami azért röhejes, mert már írtam OpenSCAD-ban 1-2 egyszerűbb rajzolni valót, de ezt egyik tutorial se írta le normálisan, hogy funkcionális nyelv. Figyelni fogok erre a jövőben.
Ez a válasz szépen mutatja az is, hogy miért van szükség valós ténybeli tudásra, meg szakemberekre, és az AI a mellébeszélős hülyeségeivel miért nem fogja sose kiváltani.
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
Ez az OpenSCAD user manualból van, a hivatalos oldal is a wikibooksot linkeli: https://openscad.org/documentation.html
És hát ha az embernek kérdése van, először nézze meg a manualt szerintem.
- A hozzászóláshoz be kell jelentkezni
Eddig már többször belefutottam olyan problémába, amire valóban a man tartalmazta a választ.
Most azonban nekem a manual kevés lett volna. Sok egyéb mellett azért is, mert a példakódban több változó is volt, aminek a futás alatt változott az értéke.
Persze, most már látom, hogy mondjuk a center_y értéke ugyan folyamatosan változik, de csak azért képes erre, mert az y-tól függ. Nekem az, hogy a változó értéke fordítási időben kerül beállításra, azt jelentette volna, a center_y értékének is fixnek kellett volna lennie.
Arról pedig nem szól a fáma, hogy az x és az y változók értékei hogy-hogy mégis változnak? Gondolom, azok nem teljesen ugyanolyan változók, mint a többi. Okosabbak gondolatait azért szívesen olvasnám erről.
Összességében sokat segített, hogy itt a fórumon tettem fel a kérdést.
- A hozzászóláshoz be kell jelentkezni
Köszönöm a válaszokat, ma is tanultam.
- A hozzászóláshoz be kell jelentkezni