Boole'i ​​tüüp ja loogilised operatsioonid. Bitioperatsioonide füüsiline teostus

Stseenis objekti loomisel on vaja arvestada selle geomeetria iseärasusi. Kuigi sama 3D-objekti saab alati mitmel viisil modelleerida, on tavaliselt üks, mis on kõige kiirem ja mugavam.

Kogenud animaator tulevase mudeli visandile pilguheites määrab objekti modelleerimise meetodi, kuid algaja kasutaja jaoks pole see alati võimalik.

Üks mugavamaid ja kiiremaid modelleerimismeetodeid on kolmemõõtmeliste objektide loomine kasutades Boolean operatsioonid.

Näiteks kui kaks objekti ristuvad, saate nende põhjal luua kolmanda objekti, mis on algsete objektide liitmise, lahutamise või lõikumise tulemus.

Kolmemõõtmelises graafikas loodud mudelid võib tinglikult jagada kahte rühma - orgaanilised ja anorgaanilised. Esimesse kategooriasse kuuluvad eluslooduse objektid, nagu taimed, loomad, inimesed, teine ​​- arhitektuurielemendid, aga ka inimese loodud objektid (autod, seadmed jne).

Esimese ja teise rühma objektide modelleerimise lähenemisviiside erinevus on nii suur, et olenevalt konkreetsetest ülesannetest saab projekti elluviimiseks kasutada erinevaid pakette kolmemõõtmelise graafikaga töötamiseks.

Kuna 3ds max keskendub anorgaanilisele modelleerimisele, st arhitektuursele visualiseerimisele ja mängude arendamisele, on Boolean toimingud iga 3ds max kasutaja jaoks asendamatuks tööriistaks.

Teisest küljest ei sobi need enamuse orgaaniliste objektide loomiseks. Näiteks inimnäo modelleerimine tõeväärtuste operatsioonide abil on peaaegu võimatu.

Mõelge tõeväärtuste tehtele. Joonisel fig. 3.51 näitab originaalpilti. 3ds max 7-s on saadaval nelja tüüpi tõeväärtustehteid.

  • Liit (lisa). Kahe objekti Boole'i ​​liitmise tulemuseks on pind, mille moodustavad selles toimingus osalevate objektide pinnad (joonis 3.52).
  • Ristmik (Intersection). Kahe objekti Boole'i ​​ristmiku tulemuseks on pind, mis koosneb nende objektide ühistest aladest (joonis 3.53).
  • Lahutamine (Erand). Kahe objekti Boole'i ​​välistamise tulemuseks on pind, mis koosneb esimese ja teise objekti pindadest, kuid ei sisalda nende objektide ühiseid alasid (joonis 3.54).

Riis. 3.51. Objektide asukoht enne tõeväärtuste toimingute sooritamist

Riis. 3.52. Objektid pärast Boole'i ​​operatsiooni Union (lisa)

Riis. 3.53. Objektid pärast Boole'i ​​operatsiooni Intersection (Intersection)

Riis. 3.54. Objektid pärast Boole'i ​​operatsiooni lahutamist (erand)

  • Lõika (lahutamine). Kahe objekti Boole'i ​​lahutamise tulemuseks on pind, mis moodustub teise objekti poolt hõivatud alade väljajätmisel ühe objekti pinnast (joonis 3.55).

Riis. 3.55. Objektid pärast Boolean Cut toimingu sooritamist (lahutamine)

Boole'i ​​toimingud tehakse järgmiselt.

1. Valige esimene objekt, mis osaleb lõpliku mudeli moodustamises.

2. Mine käsupaneeli vahekaardile Create (Creation), vali kategooriast Geomeetria (Geometry) rida Compound Objects (Composite Objects) ja vajuta nuppu Boolean (Boolean operatsioon) (joonis 3.56).

3. Määrake Boole'i ​​operatsiooni parameetrid.

4. Kasutage nuppu Vali operand B, et valida teine ​​toimingus kasutatav objekt.

Riis. 3.56. Boole'i ​​objekti sätted

MÄRGE

Hoolimata asjaolust, et kolmemõõtmeliste projektide loomisel kasutatakse laialdaselt 3ds max 7 tõeväärtustehteid, on neil mitmeid puudusi ning saadud mudelikesta konstrueerimine toimub sageli vigadega. Sel põhjusel kasutavad paljud 3D-graafika arendajad oma projektides Power Booleansi lisandmoodulit. See võimaldab teil luua täpsema geomeetriaga mudeleid kui need, mida on võimalik saada standardsete tööriistade abil, ja ehitab ka hulknurkse võrgu kiiremini. See on eriti märgatav, kui töötate objektidega, millel on suur hulk hulknurgad.

Modelleerimist Boole'i ​​operatsioonide abil käsitletakse üksikasjalikult jaotises Sec. "Õppetund 6. Kruvi modelleerimine."

Mõistet "tõve tehte" kasutatakse matemaatikas, et viidata hulkadevahelistele võrdlustehtetele. 3D Studio MAXis kehtivad sarnased võrdlustoimingud kattuva või kattuva stseeni geomeetria puhul. Boole'i ​​toiming tehakse kahest olemasolevast objektist Boole'i ​​liitobjekti loomisega, neid objekte nimetatakse operandideks ja need peavad tingimata ristuma mõnes ruumipiirkonnas. Operandid on kujutatud eraldi objektidena kogu Boole'i ​​liitobjekti redigeerimisetapis, võimaldades neid vastavalt vajadusele valida ja muuta ning isegi animeerida.

Boole'i ​​modelleerimise teoreetilised alused

3D Studio MAX pakub viit tüüpi Boole'i ​​toiminguid (joonis 1):

  • liit(Liit) operatsiooni tulemuseks on objekt, mis saadakse kahe lähteobjekti liitmise tulemusena; samal ajal eemaldatakse üldise välismahu sees olevad objektide osad;
  • Ristmik(Ristepunkt) saadud objekt on kahe algse objekti ristumistulemus; samal ajal eemaldatakse objektide osad, mis on väljaspool kogu sisemist mahtu;
  • (Lahutamine (A-B)/Lahutamine (B-A)) tulemuseks on ühe objekti teisest lahutamisel saadud objekt, mille kõik osad lõigatakse ära esimese mahu võrra ja eemaldatakse;
  • Lõika(Lõikamine) saadud objekt on lõikamise tulemus esimese objekti pinnale vastavate aukude ja avade lõikepunktides teise objektiga.

Boole'i ​​objektid on teatud tüüpi liitobjektid ja kuuluvad seetõttu rühma Liitobjektid(Komposiitobjektid) kategooriast geomeetria(Geomeetria) paneelil Loo(Loo). Boole'i ​​objekti loomise tehnoloogia koosneb kahest etapist: lähteobjektide eelnev ettevalmistamine ja sellele järgnev vajaliku Boole'i ​​operatsiooni rakendamine ning enne viimase rakendamist tuleb valida üks lähteobjektidest, vastasel juhul tehakse Boole'i ​​toiming. ligipääsmatuks.

Tõeväärtuslike objektide loomiseks on mitu meetodit:

  • Kopeeri(Kopeeri) tõeväärtusobjekti loomisel säilitatakse algne operandi B;
  • liigutada(Ülekandmine) tõeväärtusobjekti loomisel algset operandi B ei salvestata;
  • Näide(Muster) luuakse Boole'i ​​objekt ja samal ajal salvestatakse operandi B koopia; kui koopia muutub, muutub tõeväärtusobjekt ja kui tõeväärtusobjekt muutub, muutub koopia;
  • Viide(Viide) luuakse Boole'i ​​objekt ja samal ajal salvestatakse B-operandi koopia; kui originaali samal ajal muudetakse, siis muutub ka Boole'i ​​objekt; kui muudad Boole'i ​​objekti, siis originaal ei muutu.
  • Boolean operatsiooni tulemus ei ole alati edukas, seetõttu tuleb järgida mitmeid tingimusi:
  • algsed objektid peavad ristuma mõnes ruumipiirkonnas ja projektsiooniakendes tuleb ristumiskoha olemust hoolikalt reguleerida;
  • originaalobjektidel peab olema piisav arv segmente ja need peavad olema silutud, vastasel juhul jääb tulemus liiga kare või ei vasta üldse ette nähtud;
  • traatraamid peavad olema õigesti ehitatud, servad jagavad tahud peavad samuti jagama kahte tippu ja serva saab jagada ainult kahe tahuga. Redigeeritavad võrgusilmad võivad vajada sobivate tippude käsitsi ühendamist, kasutades Redigeeri võrku.

Näiteks proovige luua tõeväärtuse lahutamistehte, kasutades näitena kolme kattuvat sfääri (joonis 2). Valige paneelil kesksfäär Loo määrake objekti kategooria geomeetria, määrake objektitüüpide loendis tüüp Liitobjektid(Komposiitobjektid), klõpsake Boole'i ​​nuppu ja määrake toiming Lahutamine (A-B). Pange tähele, et alghetkel on defineeritud ainult operand. A(joonis 3), nii et operandi B määramiseks klõpsake nuppu Valige Operand B(Valige Operand B) ja seejärel valige hiirega suurim sfääridest. Selle tulemusena tekib sälk sfääri, mida kasutatakse operandina A (joonis 4). Kui operandi B on valesti seadistatud, ärge klõpsake nuppu kohe uuesti. Valige Operand B ja määrake mõni muu objekt (kuigi programm lubab seda), kuna see objekt, mis ebaõnnestus operandiks B, ei taastu (joonis 5). Sellistes olukordades peate esmalt eelmise operandi valiku tühistama B meeskond Võta tagasi ja alles siis tee uus valik.

Modelleerimine Boolean Unioniga

Reeglina kasutatakse Boole'i ​​ühendust objektide puhul, mis peaksid näima tahked, st nende pind on alati suletud ja stseeni sisemine struktuur ei oma tähtsust. Boole'i ​​liit võimaldab teil vabaneda objektide omavahelise seose nähtavusest ja on kasulik juhtudel, kui ristmik on nähtav. Kui kahe objekti ristumiskoht on peidetud, pole Boole'i ​​liitoperatsiooni vaja kasutada.

Näiteks proovime järjestikku ühendada kolm standardset primitiivi kaks kera ja silinder hantli kujuliseks. Looge originaalobjektid ja asetage need vastavalt vajadusele üksteise suhtes (joon. 6 ja 7). Valige silinder, aktiveerige Boolean operatsioon liit, operandi B määratlemiseks klõpsake nuppu Valige Operand B(Valige operand B) ja seejärel valige hiirega üks sfääridest. Selle tulemusena muutuvad silinder ja kera üheks objektiks. Valige ühendatud objekt, aktiveerige Boolean objekti loomise režiim, klõpsake nuppu Valige Operand B(Valige operand B) ja määrake teine ​​sfäär. Tulemuseks on üks Boole'i ​​objekt (joonis 8).

Modelleerimine Boole'i ​​lahutamisega

Boole'i ​​lahutamise tehteid kasutatakse modelleerimisel kõige laialdasemalt. Enamasti kasutatakse neid ümarduste ja süvendite loomiseks esimesele originaalobjektile, aga ka süvenditele ja läbivatele aukudele selles ning seetõttu võib teist objekti tinglikult pidada omamoodi peitliks või lõikuriks, mis loob esimesele soone. objekti või valib selle mõne osa. Lõiketööriistadena saab kasutada mitmesuguseid objekte, eriti objekte, mis on saadud kõverjoonelistest splainidest tõstmise või pööramise teel.

Esimeses etapis kasutame Boole'i ​​lahutamise operatsiooni, et moodustada kuuli sees silindriline auk. Looge algsed objektid kuuli ja silindri kujul (silindri ristlõike raadius peab olema väiksem kui kuuli raadius ja selle pikkus suurem kui kuuli raadius) ja joondage need üksteise suhtes piki X-, Y- ja Z-telgedel, rakendades operatsiooni Joonda(Joonda) (joonis 9). Renderdage ja kohendage objektide parameetreid nii, et need oleksid piisavalt siledad, eriti ristumisalal; kui seda ei tehta, siis pole ka loodud tõeväärtusobjektil korralikku sujuvust. IN sel juhul on näha (joonis 10), et sileduse astet on vaja suurendada see saavutatakse objektide tiheduse suurendamisega: segmentide ja segmentide külgede arvu suurendamine ning segmentide suuruse vähendamine (joonis 11) . Samal ajal on keerukate mudelitega töötamisel modelleerimisprotsessi kiirendamiseks mõnel juhul parem operandidena kasutatavate objektide tihedust suurendada mitte enne Boole'i ​​operatsiooni loomist, vaid pärast operandide redigeerimist objekti tasemel. .

Valige silinder, määrake Boolean objekti loomise režiim, määrake toiming Lahutamine (B-A)(Lahutamine B-A), et määrata operandi B klõpsake nuppu Valige Operand B(Valige operand B) ja määrake ulatus. See eemaldab kera sisemuse täpselt algse silindri suuruse järgi, nii et kerale ilmub läbiv auk (joonis 12).

Boole'i ​​lahutamise abil moodustatud aukudes võib olla kõige rohkem erineva kujuga, ja tulemus ei sõltu mitte ainult objektide suurusest ja kujust, vaid ka nende asukohast üksteise suhtes, samuti sellest, milline objektidest määrati esimesena. Võtke algobjektidena kuubik ja pall ning asetage need nagu näidatud joonisel fig. 13 viis. Valige kuup, määrake toimingule Boolean objekti loomise režiim Lahutamine (A-B) ja operandina B täpsustage sfäär, tulemuseks on selle vastava süvendi välimus (joonis 14) ja seejärel salvestage tulemus (seda läheb meil hiljem vaja). Tühistage loodud tõeväärtustehing ja rakendage algobjektidele tõeväärtuse lahutamist Lahutamine (A-B), kuid esimeseks operandiks määrake kera ja süvendiga kuubi asemel on tehte tulemuseks pall, millest on välja lõigatud üks selle veerand (joonis 15). Väärib märkimist, et sama tulemuse saamiseks ei olnud üldse vaja operande vahetada: sama eduga operatsiooni asemel Lahutamine (A-B) vali operatsioon Lahutamine (B-A). See toimingute vahetamine Lahutamine (A-B) Ja Lahutamine (B-A) väga mugav, sest kui operand on valesti valitud A te ei pea toimingut tühistama, vaid lihtsalt lülituda ühelt lahutamistehtelt teisele.

Nagu märgitud, määrab saadud sälgu kuju teine ​​operandi. Proovige palli asemel luua süvendeid ja süvendeid teiste objektidega. Näiteks objekti rakendamisel Voolik(Voolik) (joonis 16) on võimalik saada keermestatud süvend (joonis 17). Kui võtame operandi B lihvitud prisma Gengon(joon. 18), siis on sälk mitmetahuline (joon. 19) ja spindli kasutamisel Spindel kaldus (joon. 20 ja 21) jne.

Boolean operatsioon Ristmik(ristmik) on tõeväärtuste tehte pöördväärtus Lahutamine (A-B)/lahutamine (B-A)(Lahutamine (A-B)/Lahutamine (B-A), kuna selle abil saadud tõeväärtuslikud objektid on operandide A ja B fragmendid, mis eemaldatakse Boole'i ​​lahutamise operatsiooni käigus, kui seda teha samadel objektidel. Võtke sisse arutletud kuup ja pall ülalpool sisendiks valige operandiks kuup A, ja seejärel sooritage tõeväärtusoperatsioon Ristmik(Ristmik) tulemuseks on veerand pallist, mis varem operatsiooni käigus välja lõigati Lahutamine (B-A)(joonis 22).

Riis. 22. Lähteobjektid ja tõeväärtusobjektid operatsioonides Lõike ja lahutamine (B-A)

Huvitavamad pinnavariatsioonid tekivad siis, kui seda kasutatakse operandina B väänatud esemed. Võite proovida saada sarnast objekti primitiivi põhjal Torus, algolekus, millel on joonisel fig. 23 ja pärast keeramist (parameeter Keerake) läbi 360° nagu joonisel fig. 24. Lisaks looge silinder, asetage objektid nagu näidatud joonisel fig. 25 ja tõeväärtuse operatsiooni sooritamisel Lahutamine (A-B) määrake operandiks silinder A tulemus on näidatud joonisel fig. 26.

Pesastatud Boole'i ​​objektide loomine

Teoreetiliselt sama objekti jaoks (mida kasutatakse operandina A Boole'i ​​operatsioonis) saate teha mis tahes arvu Boole'i ​​toiminguid, kusjuures iga operatsioon loob oma pesastatud operandide komplekti. Sellistel juhtudel on uue Boole'i ​​toimingu üheks algobjektiks eelmise Boole'i ​​toimingu käigus saadud Boole'i ​​objekt.

Näiteks võtame eelnevalt loodud ja salvestatud tõeväärtusobjekti (Joonis 27), looge teine ​​silinder ja asetage see joonisel 27 näidatud viisil. 28. Valige algne tõeväärtusobjekt (see peab loendist väljuma Liitobjektid(Koosobjektid), valides teist tüüpi geomeetria), aktiveerige tõeväärtuse lahutamise operatsioon Lahutamine (A-B) ja määrake teise operandina eraldi silinder, kuubis ilmub teine ​​sälk (joonis 29). Saadud Boole'i ​​objekti saab kasutada uue Boole'i ​​tehte jaoks, näiteks lõigates sellesse püramiidiga kolmnurkse sälgu (joonis 30 ja 31).

Riis. 29. Esimese pesastatud Boole'i ​​operatsiooni tulemus

Boole'i ​​objekti redigeerimine

Saate muuta loodud Boole'i ​​objekti värvi; objekti saab tavapärasel viisil liigutada, skaleerida ja pöörata. Vajadusel paneeli valikute alal Muutma saate parandada operandide nimesid, määrata tõeväärtusobjekti kuvamise viisi ja määrata, kuidas seda redigeerimisel värskendatakse. Kui töötate keerukate mudelitega, mille ümberjoonistamine võtab kaua aega, on mõnikord parem loobuda automaatsest värskendusrežiimist käsitsi režiimi kasuks. Käsitsi(Käsitsi), siis peate mudeli ümberjoonistamiseks klõpsama nuppu värskendada(Uuendus).

Siin saate määrata valiku Varjatud toimingud, mis võimaldab tulemust vaadates näha ruudustikuna Boole'i ​​tehte sooritamisel kaovat operandi (joonis 32). Seda suvandit kasutatakse teabe andmiseks operandi täpse asukoha ja selle mõju kohta Boole'i ​​operatsioonile ning seda kasutatakse sageli animatsioonide loomisel.

Lisaks saab Boole'i ​​objekti redigeerida operandi tasemel. Mõelge sellele näitel, mis uurib operandide positsioonide omavahelist seost ja välimus tõeväärtuslik objekt. Looge algobjektidena kaks silindrit ja asetage need, nagu näidatud joonisel fig. 33. Valige objektidest väikseim, määrake tõeväärtuse lahutamise tehe Lahutamine (B-A) ja määrata teiseks operandiks teine ​​silinder, mille tulemusena tekib suuremasse silindrisse auk (joonis 34). See auk ei tule silindrite algse asukoha tõttu läbi.

Saadud tulemust saab muuta ja selleks pole vaja isegi Boole'i ​​operatsiooni tühistada, kuna Boole'i ​​objekti operandid on teatud määral ja üksteisest sõltumatult redigeeritavad: neid saab valida, teisaldada, skaleerida ja muuta. pööratud üksteise suhtes, muutes nii Boole'i ​​ennast.objekt. Operandid redigeeritakse režiimis Alamobjekt, mille juurde minekuks tuleb avada kerimine valitud tõeväärtusobjektiga Boolean paneelid Muutma, esiletõstmisjoon Operandid, ja seejärel määrake redigeeritav operandi (joonis 35) ja tehke sellega vajalikud manipulatsioonid. Operandi liigutamisel või muul sellega manipuleerimisel projektsioonis Perspektiiv värskendatud tõeväärtuse tulemus kuvatakse kohe. Näiteks liigutage vaateaknas Vasakule operand A liikudes vasakule, augu sügavus suureneb (joonis 36) ja tagasi liikumisel väheneb (joonis 37). Kui jätkame operandi liigutamist A vasakule, siis lõpuks läheb auk läbi (joon. 38) ja tagurpidi liikumisel muutub see vaevumärgatavaks sälguks (joon. 39).

Sarnasel viisil saate mitte ainult liigutada ja pöörata operande, vaid ka muuta nende suurust. Proovige operandi A suumitööriist Vali ja ühtne skaala sel viisil saate muuta süvendi suurust, näiteks muuta see läbimõõduga väga suureks (joonis 40) või vastupidi, väga väikeseks. Operandi redigeerimisrežiimist Boole'i ​​objektide redigeerimisrežiimi naasmiseks peate paletil esile tõstma Muutma string Boolean pärast seda rakenduvad skaleerimise, teisaldamise ja pööramise toimingud kogu tõeväärtuslikule objektile tervikuna.

Operande saab redigeerida ka objekti tasemel: muuta pikkust, laiust, kõrgust, segmentide arvu jne. Tõeväärtuse objekti panemiseks paletil objekti tasemel redigeerimisrežiimi Muutma rida peaks olema lubatud Operandid, valige soovitud operaand ja seejärel loendist Boolean klõpsake rea all oleval real Operandid, kus näiteks primitiivide kasutamise korral ilmub primitiivi nimi üldkujul (joon. 41).

Näited objektidest, mis on saadud Boole'i ​​modelleerimise abil

kaussi

Loo pall ja kast ( kasti) ja asetage need nagu näidatud joonisel fig. 42. Pall aknas Perspektiiv pole nähtav, sest ülemine osa on kasti sees ja alumine on peidetud. Valige ruut ja rakendage sellele tõeväärtuse lahutamise toiming Lahutamine (B-A), määrates teise operandina kuuli, mille tulemusena jääb alles vaid kuuli alumine pool (joonis 43). Valige loodud tõeväärtusobjekt, teisendage see redigeeritavaks võrguks, valides kontekstimenüüst käsu Convert To=>Teisenda redigeeritavaks võrguks(Teisenda => Teisenda redigeeritavaks võrguks) ja lülitage hulknurga redigeerimisrežiimi. Kuna tehtav töö on üsna vaevarikas, lülituge nupule klõpsates ühe projektsiooni kuvamisrežiimile Min/Max lüliti(joonis 44).

Nüüd peate toiminguid järjestikku rakendama kaldus, skaleerimine ja ekstrudeerida(Tõrjub välja). Esmalt tehke faasimine, määrates väärtuse paremale kaldus(Chamfer) võrdub ligikaudu -1-ga (joonis 45). Seejärel rakendage skaleerimistoimingut ja vähendage objekti valitud osa ning seejärel eemaldage toimingu kaudu palli poole ülemine fragment ekstrudeerida(joonis 46). Kandke eemaldatavale pinnale väike faasike, skaleerige uuesti ja rakendage toiming ekstrudeerida ja jätkake sel viisil, kuni toorik meenutab krobelist kaussi (joonis 47). Pinna silumiseks kandke modifikaatorit MeshSmooth(Võrgu silumine) võib-olla selle tulemusena sarnaneb kauss joonisel fig. 48.

Umbes sama kaussi saab rohkemgi kiire tee, aga ka Boole'i ​​operatsioonidega. Võtke aluseks ülaltoodud Boole'i ​​lahutamise abil saadud sfääri alumine pool (joonis 49), looge sellest koopia, seejärel vähendage seda tööriista abil veidi. Vali ja ühtne skaala, joondage X-, Y- ja Z-teljega, klõpsates nuppu Joonda(joonis 50) ja liigutage seejärel veidi üles. Valige väiksem poolkera ja looge tõeväärtuse lahutamise abil uus tõeväärtusobjekt Lahutamine (B-A), täpsustades operandina B suur poolkera (joon. 51). Pärast silumist saadud kauss on näidatud joonisel fig. 52.

vurr

Loo koonus ( Hobune) (joonis 53). Objekti kuju kasti(kast) ja joondage see käsuga Joonda piki koonust piki X-, Y- ja Z-telge (joonis 54). Tehke teisest objektist koopia ja seejärel asetage objektid, nagu näidatud joonisel fig. 55. Valige koonus, määrake Boole'i ​​objektide loomise režiim operatsioonile Lahutamine (A-B) ja operandina B määrake objekt Kast 01 (joonis 56). Seejärel korrake seda toimingut, kuid operandiga A sel juhul saab varem loodud tõeväärtusobjektiks ja operandiks B objektiks kasti 02 (joonis 57). Looge uus koonus joonisel fig. 58 ja seejärel joondada see Boole'i ​​objektiga piki X-, Y- ja Z-telge (joonis 59).

Valige Boole'i ​​objekt ja tehke selle peegelpilt piki Z-telge koos koopia moodustamisega nupule klõpsates Valitud objekti peegeldamine(Valitud objekti peegelpilt) ja konfigureerige peegelpildi parameetrid (joonis 60). Täpselt samamoodi tehke koonusest peegelkoopia, mille saate top (joonis 61).

Võti

Proovime luua võtme imitatsiooni, olles eelnevalt kõik selle detailid loftinguga vorminud ja need siis Boole'i ​​toimingu abil kombineerinud. Looge seeria splaine, mis on sarnased joonisel fig. 62: ristkülik on ette nähtud kasutamiseks katuseobjekti osana ja kõik muud splainid mängivad raja rolli. Pange tähele, et sellisel juhul peate pööninguobjektide loomisel valima lõigu määramise meetodi, mitte tee, vastasel juhul peate pärast nende hankimist kulutama palju aega pööninguobjektide õigele paigutamisele. Valige esimene ring, klõpsake nuppu geomeetria Loo Liitobjektid objekti tüüp(Objekti tüüp) klõpsake nuppu pööning(Lofted), siis nupul GetShape(Määrake tee) ja valige hiirega ristkülik. Valige teine ​​ring ja looge ülestõstetud objekt uuesti, määrates lõikega sama ristküliku. Täpselt samamoodi loo lofted objektid kõigi teiste splainide jaoks (joonis 63).

Nüüd peame muutma üksikud võtmefragmendid üheks objektiks, mida on kõige lihtsam teha pesastatud tõeväärtusobjekti loomisega. Valige esimene loft-objekt, aktiveerige Boolean operatsioon liit, klõpsake nuppu Valige Operand B ja määrake teine ​​pööninguobjekt. Looge uus tõeväärtus, kasutades saadud tõeväärtust operandiks A ja üht loft-objekti operandiks B, ja jätkake, kuni kõik võtmefragmendid on ühendatud. Lõpptulemus on näidatud joonisel fig. 64.

Aknaraam

Kombineerides loftingu ja Boolean unioni toiminguid (nagu näites võtmega), saate moodustada palju seda tüüpi objekte, nagu aknaraamid, ukseavad jne, millest igaüks tähistab mitut eraldi ühendatud elementi. Näiteks proovige esmalt luua aken üksikute splainide seeriast (Joonis 65), seejärel muutke iga splain ülaosaga elemendiks ja seejärel ühendage raami fragmendid tõeväärtusliku ühendusega (joonis 66).

Käepidemega kruus

Kruusi põhja jaoks looge silinder (joonis 67) ja muutke see redigeeritavaks võrguks, valides kontekstimenüüst käsu Teisenda => Teisenda redigeeritavaks võrguks(Teisenda => Teisenda võrgusilma redigeerimisrežiimi). Aktiveerige tipu redigeerimise režiim Tipp ja valida ainult ülemise lõigu sisemised tipud (joonis 68) kõige lihtsam on valida projektsioonil kõik sisemised tipud (ülemine ja alumine sektsioon). Üles ja seejärel klahvi vajutades alt välistada projektsiooni alumise lõigu tipud Esiosa. Lohistage tööriistaga valitud tipud esiprojektsioonile Valige ja teisaldage alla nii, et tekiks kruusi sisemine tühi õõnsus (joonis 69). Ilma valikut tühistamata aktiveerige tööriist Vali ja ühtne skaala ja skaleerige valitud ala nii, et sisemised tipud langeksid kokku vahetasandi tippudega (joonis 70) ja kruusi sisemine õõnsus muutuks läbimõõduga nii kruusi ülemises kui ka alumises osas ühesuguseks.

Projektsioonil Üles vali ülemise ja keskmise lõigu sisemised tipud (joon. 71) seda on mugavam teha, valides kõigepealt kõik sisemised tipud valikualaga Ringikujulise valiku piirkond ja seejärel klahvi all hoides alumise sektsiooni tipud välja jättes alt valiku ala Ristkülikukujuline valikupiirkond. Skaalake need projektsioonile Üles nii, et raadius, millel need asuvad, läheneb välisraadiusele ja kruusi seina paksus väheneb (joonis 72). Projektsioonil Esiosa valige skaleerimisel objektist väljapoole ilmunud ülemise lõigu tipud (joonis 73) ja liigutage need alla (joonis 74). Tehke sama toiming alumise sektsiooni sisemiste tippude jaoks (joonis 75).

Kruusile käepideme loomiseks aktiveerige objektide kategooria Kujundid(Vormid) käsuriba Loo(Loomine) määrake objektitüüpide loendis tüüp Splainid(splainid) ja tööriist rida(Line) konstrueerib kõverjoonelise splaini (Joonis 76), mida kasutatakse rajana püstitatud objekti konstrueerimisel. Looge ellips, mida kasutada pööninguobjekti osana. Valige ellips, klõpsake nuppu geomeetria(Geomeetria) käsuriba Loo(Loo) ja valige objektitüüpide ripploendist Liitobjektid(Komposiitobjektid). Kirjarullis objekti tüüp(Objekti tüüp) klõpsake nuppu pööning(Lofting), siis nuppu Hankige tee(Vali tee) ja vali hiirega eelnevalt loodud tee splain. Asetage loodud käepide oma kohale, reguleerides selle asendit kõigis eendites (joonis 77). Olles objekti igast küljest uurinud, näete, et mõned käepideme killud ulatuvad kruusi õõnsusse ja seetõttu tuleks need eemaldada. Selleks teisendage pliiats redigeeritavale võrgurežiimile, valige lisatipud (joonis 78) ja vajutage klahvi Del.

Selleks, et kruus ja pliiats saaksid üheks, peate need ühendama Boole'i ​​toimingu abil. Tõstke kruus esile, määrake toimingu sooritamine liit, klõpsake nuppu Valige Operand B ja seejärel käepidemel olevad objektid liidetakse. Samal ajal paneelil Muutma on näha, et Boole'i ​​operatsiooni algelemendid on tüüpi objekt Redigeeritav võrk(Redigeeritav võrk) ja pööninguobjekt (joon. 79). Valige Boole'i ​​objekti jaoks vajalikud antialiase parameetrid ja muutke pliiatsi ja kruusi ühendav joon peaaegu nähtamatuks (joonis 80).

Karbivõtme pesa

Selle objekti tooriks on kaks erineva läbimõõduga silindrit, mis on Boole'i ​​liitmistoimingu ajal kokku dokitud. Nende põhjal saadud objekti sees on vaja välja lõigata mitu erineva ristlõikega õõnsust, mis on võimalik mitme Boole'i ​​lahutamise abil. Esimene välja lõigatav õõnsus saadakse kõrgel asuvast objektist, mis moodustub suure hulga kiirtega tähe sirgjoonelisest liikumisest, ülejäänud aga primitiivide abil.

Looge kaks silindrit ja ühendage need kokku, kasutades Boole'i ​​liitoperatsiooni (joonis 81). Seejärel looge kaks splaini - täht ja joon (joonis 82), joondage täht suurema silindriga piki X-, Y- ja Z-telge (joonis 83). Loo pööninguobjekt, määrates teekonnaks joone, reguleeri selle asukohta silindriobjekti suhtes (joonis 84). Lõigake suurest silindrist välja vastav õõnsus, valides mitmetahulise kõrgusega objekti, aktiveerides Boole'i ​​lahutamise Lahutamine (A-B) ja silindrite määramine operandiks B, mille tulemusena tekib suure silindri sees mitmetahuline õõnsus (joonis 85).

Looge sama laiuse ja kõrgusega kast, mis on veidi väiksem kui lõigatud õõnsuse läbimõõt. Asetage see suurema silindri sisse ja joondage piki x- ja z-telge (joonis 86). Moodustage juba loodud Boole'i ​​objekti ja kasti põhjal pesastatud Boole'i ​​objekt, lõigates kastiga suure silindri seest välja vastav õõnsus (joonis 87). Seejärel looge silinder, mille raadius on väiksem kui olemasolevatest silindritest, asetage see väiksema silindri sisse ja joondage see X- ja Z-teljega (joonis 88). Selle silindriga lõigake õõnsus väiksemasse pesastatud Boole'i ​​objektisilindrisse, kasutades Boole'i ​​lahutamise operatsiooni, ja hankige joonisel fig. 89, mis näeb välja umbes samasugune kui kastmutrivõtme pesa.

Aga keeltes programmeerimise terminoloogias kõrge tase bititoimingute nimedes on omadussõnu natuke, bittide kaupa(näiteks: "bitipõhine loogiline AND", see on ka "bitipõhine korrutamine"), bittide kaupa.

Mõnes programmeerimiskeeles on loogilistele ja bitipõhistele loogilistele operatsioonidele vastavate operaatorite nimed sarnased. Lisaks võib programmeerimiskeel lubada numbrilise tüübi kaudset teisendamist tõeväärtuslikuks tüübiks ja vastupidi. Sellistes programmeerimiskeeltes tuleb olla ettevaatlik loogiliste ja bitioperatsioonide kasutamisega, mille segamine võib põhjustada vigu. Näiteks C++ puhul on avaldise "2 && 1" (loogiline JA ) tulemus tõeväärtus tõsi, ja avaldise "2 & 1" (bitipõhiselt JA ) tulemus on täisarv 0 .

Bitipõhine eitus (EI)[ | ]

bitine eitus(või bitti EI, või lisamine) on unaartehte, mille tegevus on samaväärne loogilise eituse rakendamisega operandi binaarse esituse igale bitile. Teisisõnu, kohas, kus operandi binaarses esituses oli 0, on tulemus 1 ja vastupidi, kus oli 1, on 0. Näiteks:

MITTE 01
10

Bitipõhine JA (JA)[ | ]

Teine nimi on see, mis on tegelikult liitmine jääkide ringis modulo two, millest tulenevad mõned huvitavad omadused. Näiteks erinevalt ülalkirjeldatud "AND" ja "OR" on see toiming pöörduv või involutiivne: (x ⊕ y) ⊕ y = x (\displaystyle (x\oplus y)\oplus y=x).

Seda toimingut võib nimetada ka "maski inversiooniks", st bitid, mis vastavad maskis olevale 1-le, inverteeritakse algsest kahendarvust.

Muud bitipõhised Boole'i ​​operatsioonid[ | ]

Tavalistes programmeerimiskeeltes ainult neli bitti loogilisi tehteid: JA, VÕI, EI ja XOR. Suvalise bitipõhise loogikatehte määramiseks piisab täiesti loetletud neist ja pealegi, nagu Boole'i ​​funktsioonide teooriast järeldub, võib piirduda veelgi väiksema põhitehtekogumiga. On ka programmeerimiskeeli, kus on sisseehitatud võimalus sooritada mis tahes binaarset loogilist toimingut bittide kaupa. Näiteks PL/I-l on sisseehitatud BOOL-funktsioon, mille kolmas argument on suvalise loogilise toimingu määramine, mida rakendatakse kahele esimesele argumendile biti kaupa.

Natuke nihkeid [ | ]

Bitioperatsioonid hõlmavad ka biti nihkeid. Nihutamisel kopeeritakse bitiväärtused nihutamise suunas külgnevatesse väärtustesse. Vahetusi on mitut tüüpi - loogiline, aritmeetika Ja tsükliline, olenevalt äärmuslike bittide töötlemisest.

Samuti on vahetus vasakule(suunas kõige vähem olulisest bitist kõige olulisemani) ja õige(suunas kõige olulisemast bitist kõige vähem oluliseni).

Loogiline nihe[ | ]

Loogilise nihke ajal kaob viimase biti väärtus nihke suunas (kopeeritakse kandebitile) ja esimene bitt muutub nulliks.

Aritmeetiline nihe[ | ]

Aritmeetiline nihe sarnaneb loogilise nihkega, kuid arv loetakse märgiliseks, esitatuna täiendavas e-s. Seega säilitab paremale nihke korral kõige olulisem bitt oma väärtuse. Vasakpoolne aritmeetiline nihe on identne loogilise nihkega.

Aritmeetilisi nihkeid vasakule ja paremale kasutatakse kiireks korrutamiseks ja 2-ga jagamiseks.

Tsükliline vahetus[ | ]

Pööramisel kopeeritakse nihkesuunalise viimase biti väärtus esimesse bitti (ja kopeeritakse kandebitile).

Samuti on tsükliline nihe kandebiti kaudu- sellega saab nihkesuuna esimene bitt väärtuse kandebitilt ja viimase biti väärtus nihutatakse kandebiti.

Programmeerimiskeeltes[ | ]

Järgmises tabelis on loetletud sisseehitatud operaatorid ja funktsioonid, mis rakendavad mõne programmeerimiskeele bitipõhiseid loogilisi operatsioone.

Keel MITTE JA VÕI Välja arvatud VÕI Nihutage vasakule nihuta paremale muud
/C++ , Java , , Ruby , Python ~ & | ^ << >>
Pascal mitte ja või xor shl Shr
Kotlin arv
PL/I MITTE MINA JA IOR IEOR BOOL
¬ & | ¬
Prolog \ /\ \/

Algoritmi keerukuse teoorias[ | ]

Tähtaeg biti operatsioon, kasutatakse sageli nn kiirete algoritmide arvutamise valdkonnas, mis uurivad algoritme antud funktsiooni arvutamiseks etteantud täpsusega, kasutades võimalikult vähe bitioperatsioone.

Seos teiste teadustega[ | ]

Bititehted ja matemaatiline loogika[ | ]

Bitioperatsioonid on väga lähedased (kuigi mitte identsed) loogilised sidemed klassikalises loogikas. Natuke võib pidada loogiliseks ettepanekuks - selle väärtused on 1 "tõene" ja 0 "vale". Selle tõlgenduse korral esitatakse konjunktsioonid, disjunktsioonid, implikatsioonid, eitused ja muud loogikas tuntud asjad bittide keeles. Seevastu bitipõhiseid tehteid on lausearvutuse keeles lihtne kirjeldada.

Kuid matemaatilise loogika ahelad on rohkem kooskõlas loogiliste operatsioonidega, sealhulgas programmeerimisel, mitte tegelike bititoimingutega.

Tehete üldistamine Boole'i ​​algebrale[ | ]

Üksikute bittide asemel võime vaadelda kindla arvu bittide vektoreid (nimetatakse programmeerimises registriteks), näiteks baitidega. Programmeerimisel loetakse registreid täisarvu binaarseks laienduseks: b = b 0 + 2 b 1 + 2 2 b 2 +. . . + 2 N − 1 b N − 1 (\displaystyle b=b_(0)+2b_(1)+2^(2)b_(2)+...+2^(N-1)b_(N-1 )), Kus N- bittide arv registris.

Kuid miski ei takista meid käsitlemast neid registreid täpselt bitivektoritena ja sooritamast Boole'i ​​toiminguid komponentide kaupa (bitinumber k väärtused on bittide arvust tuleneva operatsiooni tulemus k argumendid). Muide, matemaatiliselt öeldes ulatuvad Boole'i ​​toimingud sel viisil suvalise Boole'i ​​algebrani. Nii saame operatsioone bittide kaupa JA, VÕI, EI, v.a. VÕI jne. Aritmeetiliselt ei ole neil tehtetel häid omadusi, välja arvatud bitipõhiselt EI, mis komplemendi e arvude puhul on sama, mis lahutamine väärtusest −1 (~x == -1-x). Programmeerimisel on need aga väga kasulikud.

2-adic tõlgendus[ | ]

Täisarv, mis on kirjutatud (täiendisse e) lõpmatus (kahe positiivsete astmete suunas) kahendregistris on p-adic arvude teooria loomulik objekt p = 2 (\displaystyle p=2). 2-adic täisarvude komplekti (st suvalisi lõpmatuid bitijadasid) saab vaadelda kui Boole'i ​​algebrat, nagu ka piiratud pikkusega bitiregistri väärtuste komplekti. Kõik ülaltoodud bitipõhised toimingud osutuvad pidevateks vastendusteks. Kuigi praktilisel programmeerimisel ei ole lõpmatu pikkusega registreid, ei takista see selle teoreetilise fakti kasutamist krüptograafias kiirete krüpteerimisalgoritmide loomiseks.

Bitioperatsioonid kui digitaaltehnoloogia alus[ | ]

Bitioperatsioonid on digitaalse signaalitöötluse keskmes. Nimelt saame nende abil ühest või mitmest sisendsignaalist saada uue signaali, mida omakorda ühe või mitme sellise toimingu sisendisse sööta. Tegelikult on just bitioperatsioonid kombinatsioonis salvestuselementidega (nt trigerid) need, mis realiseerivad kogu kaasaegse digitehnoloogia võimaluste rikkuse.

Praktilised rakendused[ | ]

Rakenduse seisukohast ei paku ühebitine toiming vähe huvi. Sellepärast praktiline kasutamine tugineb viisidele, kuidas kombineerida erinevaid bititoiminguid keerukamate arvutuste rakendamiseks. Võib märkida kahte aspekti:

  1. registrite suuruse suurenemine, milles bititoiminguid ei tehta mitte ükshaaval, vaid kohe 8, 16, 32, 64 biti komplektiga
  2. eksperimentaalsed seadmed, mis üldistavad bitite operatsioone kahendsüsteemist ternaar- ja muudele arvusüsteemidele (näiteks on välja töötatud kvaternaarsüsteemiga töötamise teooria ()

Boole'i ​​modelleerimine on levinud ja sageli kasutatav tehnika. Boole'i ​​operatsioonid on väga lähedased traditsioonilistele skulptuuri- ja modelleerimismeetoditele. Rakenduses 3D Studio MAX muudab tõeväärtuse modelleerimise veelgi kasulikumaks liittõveobjekti rakendamine. Erinevalt simulatsiooni modifikaatorist koosneb ühend tõeväärtusobjekt kahest objektist, mida nimetatakse operandideks ja mis esindavad tõeväärtuse operatsiooni. Need operandid jäävad objektideks nii kaua kui vaja ja võimaldavad juurdepääsu nende parameetritele ja modifikaatorite virnadele.

Boole'i ​​liitobjekt erineb paljudest Boole'i ​​toimingutet, kuna see ei muuda jäädavalt kujundeid, mis määravad operandide geomeetria. Seda geomeetriat saab hiljem teisaldada, uuesti määratleda ja vahetada. Kuna operandid jäävad objektideks, saab nendega manipuleerida nagu iga teise objektiga. Saate neid isegi animeerida, et saada hämmastavaid efekte. Varjutatud 3DS MAX vaateaknad võimaldavad teil näha Boole'i ​​operatsiooni tulemust, kui operande muudetakse. Viimane on interaktiivse töörežiimi eelis ja annab tunde, et ühte objekti kasutatakse teise väljalõikamiseks. Kuigi see on endiselt väga kasulik ja meelelahutuslik, saab Boole'i ​​toimingute keerukust suurendada, paigutades need üksteise sisse. See peatükk sisaldab teavet Boole'i ​​toimingute kasutamise lihtsustamiseks. Tähelepanu pööratakse:

  • Boole'i ​​operatsioonide põhitõed ja võimalused nende interaktiivsuse suurendamiseks
  • Pesastatud Boole'i ​​objektidega töötamine
  • Erinevate tõeväärtuste operatsioonide kasutamine skulptuuriks ja modelleerimiseks
  • Kaalutlused edukate Boole'i ​​toimingute jaoks

Boole'i ​​operatsioonide põhitõed

Nagu paljude arvutigraafika terminite puhul, pärineb mõiste "tõeväärtus" selle kontseptsiooni looja (antud juhul George Boole) nimest. Matemaatikas termin "tõve" näis tähistavat hulkadevahelist võrdlusoperatsiooni; 3D Studio MAXis tehakse sarnane võrdlus geomeetriliste objektide vahel. Kuigi Boole'i ​​toiming näeb välja nagu modifikaator, asub see paneelil Loo, mitte paneelil Muuda, kuna see määratleb uue objekti kahest olemasolevast (sarnaselt loft- või morph-objekti loomisega). Boole'i ​​operatsioon 3D Studio MAXis toimub luues Boole'i ​​liitobjekti kahest olemasolevast objektist, mida nimetatakse operandid, tehakse järgmised toimingud:

  1. Valige tõeväärtuse operatsiooni algusobjekt.
  2. Valige paneeli Muuda geomeetria valikuloendist Liitobjektid ja klõpsake siis Boole'i ​​nuppu.
    Valitud objektist saab liit-tõeväärtuse objekti operandi A. Nüüd saab valida operandi B.
  3. Valige soovitud toimingu tüüp (Operation:).
  4. Klõpsake nuppu Vali operand B ja seejärel valige teine ​​objekt.
    Objekte võrreldakse, et teha kindlaks, kas need on kehtivad (tõveteate sooritamise seisukohalt) ja kui need on kehtivad, siis sooritatakse tõeväärtustehing.
    Nüüd saate muuta toimingu tüüpi ja näha erinevaid tõeväärtuslikke tulemusi.

Toimingutüübid on sarnased paljude traditsiooniliste meetoditega. Ühendamine ühendab objekte nagu saviga töötamine; lahutamisel nikerdatakse üks objekt teisest välja nagu skulptuuris; ristmik jätab midagi, mis tuleks lahutamisest välja lõigata või välja lüüa. Liit ja lahutamine annavad alati sama tulemuse, olenemata operandide valimise järjekorrast. Valikuid on kaks (A-B ja B-A), nii et kui esialgne valik on vale, saate kiiresti ümber lülituda. Nende põhitoimingute tulemused on näidatud joonisel 11.1.

HOIATUS Saate klõpsata nupul Vali operandi B ja valida teise operandi B suvalise arvu kordi. Kui valitakse uus operand B, eemaldatakse algne operaand stseenist. Kui valite operandiks B vale objekti, klõpsake enne teise operandi B valimist nuppu Võta tagasi.

Boole'i ​​avaldised liitobjektidena

Tõeväärtuste operatsioonide äärmine paindlikkus MAX 3DS-is seisneb selles, et tõeväärtuse operande sisaldavad objektid eksisteerivad endiselt objektidena. Iga operand säilitab oma algse redigeerimisajaloo pinu ja seda saab muuta käsupaneelil. Operandid saab teisendada isegi alamobjekti tasemel. Joonis 11.2 näitab tulemust rajavaates pärast tõeväärtusobjekti loomist.

3DS MAXi viite- ja eksemplari arhitektuur demonstreerib selle võimsust tõeväärtuslike objektide käsitlemisel. Kui loote esimest korda Boole'i ​​liitobjekti, saate operandiks B valitud objekti teisaldada, koopia teha, instantseerida või viidata. Vaikevalik on Teisalda ja see näib loovat selgesõnalise toimingu, kuna ainult Boole'i ​​tulemus jäänused. Mõlemad tõeväärtustoiminguks valitud objektid on nüüd alamobjekti operandid. Ülejäänud suvandid annavad tõeväärtusliku tulemuse valitud objekti koopia, eksemplari või viitega. Kõigil kolmel juhul jääb operandi B jaoks valitud objekt muutumatuks ja uut objekti kasutades saadakse tõve tulemus. Sellistel juhtudel võib tunduda, et midagi pole juhtunud enne, kui üks kahest objektist on liigutatud või peidetud.

MÄRGE Operandiks B valitud objektilt eemaldatakse kõik teisendusanimatsioonid, samas kui operandi A (algne objekt) puhul säilib teisendusanimatsioon. Kui operandil A on teisendusanimatsioon, kasutatakse uue staatilise operandi jaoks praegust kaadri asukohta, asukohta ja skaalat.

Operandi B koopia, eksemplar või viide on võimalik teha, kuid operandi A puhul seda valikut pole (objekt valitakse pärast Boolean'i klõpsamist). Paindlik viis sellest piirangust mööda hiilida on kloonida kõikide objektide eksemplaridesse, mida peaks Boole'i ​​operatsioonides kasutama. Seejärel tuleks operandi B valikute jaoks kasutada vaikevalikut Teisalda, tagades, et kõiki tõeväärtusobjekti objekte saab muuta ja nende seoseid säilitada.

NÕUANNE Eksemplari loomiseks objektist, mis on juba operandiks, sisestage rajavaade. Kopeerige operandiobjekti definitsioon (tähistatud sinise ringiga) lõikepuhvrisse ja kleepige see eksemplarina teise objekti definitsiooni. Seda meetodit saab kasutada ka tagurpidi, defineerides täielikult ümber operandide geomeetria, näiteks muutes kõik ruudukujulised augud ümarateks.

Pärast Boole'i ​​objekti loomist saate asendada Boole'i ​​objekti paneelil Modify operandi B samade valikutega, mis tehti loomise ajal. Kasutage seda suvandit ettevaatlikult, kuna see eemaldab stseenist algselt valitud Operandi B. Originaali hävitamine võib tekitada probleemi, kui kasutate esimest korda suvandit Teisalda ja esitate geomeetria, mida enam eraldi üksusena ei eksisteeri. Muu operandi valimine on sama, mis rajavaates operandiobjekti definitsiooni asendamine, välja arvatud viite tegemine, mida rajavaates pole.

Pärast Boole'i ​​objekti loomist saate naasta iga Modifier Stack operandi juurde paneelil Muuda (vt joonis 11.3). Kui sisenete esimest korda paneelile Boolean Modify, ei valita ühtegi operandit, seega kuvatakse modifikaatorite virnas ainult Boolean. Konkreetse operandi virna muutmiseks tuleb teha valik Operandide loendist. Nüüd kuvab valitud operandi pinu. Enne tõeväärtuse toimingut saate operandi objekti mõjutamiseks kohandada pinus mis tahes modifikaatorit või lisada uusi modifikaatoreid. Animeerimise parameetritele pole täiendavaid piiranguid. Operandi teisendamiseks peate aktiveerima tõeväärtusobjekti alamobjektirežiimi. Selle lähenemisviisi korral võib operandid pidada gizmodega sarnasteks, välja arvatud see, et erinevalt gizmodest on operandidel oma modifikaatorite virn.

Värskendamise valikud

Boole'i ​​toimingute värskendussuvandid määravad, kuidas Boole'i ​​arvutusi tegelikult tehakse. Keeruliste objektide puhul võivad Boole'i ​​arvutused võtta üsna kaua aega. Need arvutused aeglustavad teiste objektide redigeerimist, kui need on eksemplarid või viited tõeväärtuse operandile. Kui simulatsioonis esineb pause, muutke valikut Värskenda. Valik Käsitsi on üks konservatiivsemaid meetodeid ja annab kõige suurema kontrolli toimingute arvutamise üle. See režiim sobib kõige paremini keerukate mudelite jaoks. Meetod Renderdamisel (renderdamise ajal) ei hinda toimingut enne, kui lõplik renderdus on lõppenud, misjärel tagastatakse korrigeeritud tulemus staadiumisse. Meetod Kui valitud on tulemuse värskendamisel mõnevõrra ebausaldusväärne ja sellele ei tohiks loota.

Simulatsioonitoimingute kiirendamiseks peaksid operandid olema lihtsad. Pärast Boole'i ​​toimingute ja modifikatsioonide lõpetamist pöörduge tagasi vanade operandi definitsioonide juurde ja suurendage nende tihedust. Kui need on eksemplarid, suurendage nende keerukust ja seejärel kohandage tulemust käsitsi.

NÕUANNE Pikad Boole'i ​​arvutused saab lõpetada, vajutades ootekursori kuvamise ajal paoklahvi. Kui see on lõppenud, lülitub värskendusrežiim automaatselt režiimile Käsitsi, nii et saate nüüd värskenduse arvutamise aega täpselt häälestada (sest geomeetria on tõenäoliselt keeruline).

Interaktiivsed tõeväärtuse operatsioonid

Boole'i ​​objekti alamobjekti režiimi sisenemisel saab operande reguleerida üksteisest sõltumatult. Loend sisaldab tõlkimiseks, pööramiseks või skaleerimiseks sobivate operandide nimesid. Operandi manipuleerimine alamobjekti tasemel teostab tegelikult interaktiivset tõeväärtuse operatsiooni, sest kui üht operandit liigutada, jääb teine ​​paigale ning operandi liigutamisel kuvatakse uuendatud tõeväärtuse tulemus. Lihtsate mudelite või kiirete masinate puhul tehakse seda sageli reaalajas.

MÄRGE Komplekssete Boole'i ​​operatsioonide puhul tuleb Boole'i ​​avaldise värskendusrežiimiks seada Käsitsi, et operandi saaks positsioneerida ilma täiendavate arvutusviivitusteta. Pärast operandi paigutamist soovitud asukohta klõpsake uue tulemuse vaatamiseks nuppu Värskenda.

Tõeväärtuse toimingu kuvamisvalikute mõistmine on täitmisel võtmetähtsusega interaktiivsed muudatused. Boolean-tehte tulemust näitab vaikevalik Result (tulemus). Kui valite suvandi Operandid, kuvatakse nii operandid A kui ka B, nagu poleks Boole'i ​​toimingut sooritatud. Täielikult kaardistatud operand peidab tõeväärtuse tulemuse, seega tuleb mingil määral pimesi tööd teha. Praktikas on parim kombinatsioon valida Result ja aktiveerida suvand Show Hidden Ops (kuva peidetud operandid). See kuvab puuduvad operandid traatraamidena (kuid ainult varjutatud vaateavades) ja annab teavet operandi täpse asukoha ja selle praeguse mõju kohta Boole'i ​​operatsioonile.

MÄRGE Pidage meeles, et operandi saab alati määrata mõnele teisele objektikontrollerile või ainulaadsele Path, Look At või Expression kontrollerile, et luua selliseid efekte nagu animeeritud puuriterad või laserpõletused.

Pesastatud tõeväärtuslikud objektid

Ühe objektiga saab sooritada mis tahes arvu Boole'i ​​toiminguid, kusjuures iga operatsioon loob oma pesastatud operandide komplekti. Ainus "piirang" on navigeerimist vajavate toimingute praktiline arv.

Pärast samale geomeetriale Boole'i ​​objekti loomist saate teha täiendavaid Boole'i ​​toiminguid, valides objekti uue ühendi Boole'i ​​objekti operandiks A. Iga kord, kui objektiga teostatakse tõeväärtuse operatsioon, luuakse tegelikult uue tõeväärtusliku objekti algne operand. See määratleb "tõve puu", mis koosneb üksikutest okstest - väga lineaarsest sammudest. Igale sooritatud tõeväärtusoperatsioonile pääseb juurde hiljem, kuigi selleks kasutatav meetod nõuab veidi harjutamist, kuna see kõik toimub paneelil Muuda. Kolme järjestikuse Boole'i ​​operatsiooni tulemused on näidatud joonisel 11.4. Kast lahutab sfääri, seejärel silindri ja lõpuks koonuse.

NÕUANNE Tõeväärtuse puusse sügavamaks sukeldumiseks jätkake operandi A valimist ja liikuge seejärel virna järgmise tõeväärtusliku toimingu juurde. Operandi B pinu kasutatakse edasiliikumiseks, kuid ainult operandi A pinu saab kasutada redigeerimisajaloos tagasi liikumiseks.

Kui sooritate mitu Boole'i ​​operatsiooni üksteise järel, tuleb olla ettevaatlik. Kui toiming ja seega komposiit Boole'i ​​objekt on lõpetatud, tuleb Boole'i ​​dialoogiboksist väljuda või hilisem valik asendab äsja tehtud toimingu ja eemaldab objekti stseenist. Kuigi see nõuab täiendavaid nuppude klõpsamist, peate liitobjektide loendist väljuma, valides teist tüüpi geomeetria (nt teevõrgud) ja seejärel naasma liitobjektide juurde, et määratleda järgmine tõeväärtusobjekt.

Jäljevaates Boole'i ​​puus navigeerides pidage meeles, et see näitab ainult objekte, mille parameetrid on võimalik animeerida. Kui tõeväärtus luuakse töötlemata traatraamist või paigast, kuvatakse ainult operandi teisendusi, kuna sellel pole loomisvalikuid määrata. Kui samale objektile on määratud modifikaator, luuakse muudetud objekti jaoks uus sisend. Kui operandil on sama silt nagu Transformil (sinine muutering rohelise kontrolleri kolmnurga asemel), võib see segadust tekitada. Varem joonisel 11.4 näidatud sügavale puusse sukeldudes jälgige siniseid Operandi ringe. Ainult sügavaim operand A sisaldab objekti määratlust; kõik muud objektide määratlused on eelnevate B-operandide sees.

NÕUANNE Kui seda kasutatakse primitiivi operandidena, loetleb Track View nende parameetrid üldpealkirja Operandi all. Modifikaatori primitiivi (nt Material) määramine teisaldab loomisparameetrid operandi all olevasse muudetud objekti sfääri koos objekti tüüpi näitava sildiga.

Boole'i ​​omadused

Boole'i ​​objekti loomisel säilitatakse üksikute objektide silumisrühmad ja materjali ID-d. Kahjuks on kaardistamine täielikult eemaldatud ja seda tuleb rakendada pärast lõpliku tõeväärtusliku tulemuse saamist. Kui objektile on määratud projektsioon UVW modifikaatorite kaudu, saab selle taastada. Kui luuakse algse objekti või modifikaatori koopia, kuid mitte eksemplar, määrake pärast tõeväärtustoimingu sooritamist uus UVW vastendus ja kasutage projektsiooni taastamiseks modifikaatori funktsiooni Acquire. Pange tähele, et see toiming ei tööta protseduuriliste projektsiooniülesannete puhul.

Projektsiooni koordinaadid eemaldatakse, kuna tõeväärtuse tulemuse tipud liidetakse alati. Sel juhul, kui pärast Boole'i ​​toimingu sooritamist kavatsetakse esialgsed operandid eraldada, tuleks nende eraldamiseks kasutada Edit Meshi. Kui operandil on ainulaadne materjal või silumisrühmad, aitab see eraldumiseks näotasandil proovivõttu oluliselt kaasa.

Materjali identifikaatorid on tõenäoliselt kõige väärtuslikum tööriist tõeväärtusliku objekti pinna lõpptulemuste haldamisel. Iga operandi jaoks eraldi identifikaatoriga materjali modifikaatori määramine tähendab, et see on olemas garanteeritud meetod näo valimine pärast tõeväärtuste toimingute lõpetamist. Kuigi see on materjali määramise alamobjekti jaoks väga kasulik, on operandide salvestamine näovalikutena kasulik ka tahkude valimisel silumisrühmade määramiseks ja UVW kaardistamise modifikaatorite valimisel kaotatud katvuse taastamiseks.

Mõnikord sisaldab Boolean tulemus defekte silmuste ja moonutuste kujul. Neid defekte põhjustavad sageli sarnased silumisrühmad, mis toimivad üksteisele viisil, mida ei tohiks rakendada, või tippude liitmisest nii, et silumist ei saa toimuda. Kui sellised vead on nähtavad, rakendage Edit Mesh modifikaatorit, valige kõik tipud ja sooritage Weld Selected (kombineeri valitud). Kui vead ei kao, on vaja analüüsida silumisrühmade määramisi (enne või pärast Boole'i ​​operatsiooni).

Enamikul juhtudel on kriitilisi piirkondi palju lihtsam valida enne, kui need muutuvad tõeväärtuse toimingu osaks. Kui teate, milline mudeli osa vajab unikaalset silumist (näiteks filee joonisel 11.5), andke nendele tahkudele kordumatu silumisrühm või materjali ID, et neil oleks pärast Boolean-toimingut õige silumine.

Viimane arutelu võib tunduda nii, et enne Boole'i ​​operatsioonile hüppamist tuleb palju mõelda ja planeerida, kuigi tegelikult muudab modifikaatoripinn protsessi palju vähem struktureerituks. Praktikas ühine vastuvõtt on luua kiiresti Boole'i ​​objektid ja seejärel naasta operandi ajaloos eelmise operandi juurde, et vajadusel siluda ja materjali määrata. Pange tähele, et seda on palju lihtsam teha, kui eksemplariobjektid on olemas enne, kui neist saavad operandid.

Kaalutlused Boole'i ​​toimingute täiustamiseks

Boole'i ​​kood 3DS MAXis on väga üldine ja võimaldab töötada suvaliste pindadega. See üldistus tähendab aga, et mitte iga objekt ei moodusta kehtivat tõeväärtusobjekti ja et mõnel "päris" tulemusel võib olla artefakte (nt pikad plangu servad) või ebasoovitavaid tulemusi. Järgmine on kontroll-loend, mis aitab teil tõrkeotsingut teha ja Boole'i-sõbralikke mudeleid luua.

  • Kogu pinna normaalväärtused peaksid olema ühtlased, ilma valeservadeta vales suunas. Näonormaale kasutatakse pinna suuna ja sellest tuleneva Boolean objekti määramisel.
  • Raam peab olema õigesti ehitatud; see tähendab, et servad, mis jagavad serva, peavad jagama kahte tippu ja serva saavad jagada ainult kaks tahku. (Viimase reegli pöörlemisobjekti tippude sisemised suured tahud on tüüpiline õudusunenägu.)
  • Veenduge, et kõik tipud on ühendatud. Võib osutuda vajalikuks ühendada kõik tipud käsitsi, kasutades käsku Redigeeri võrgusilma, isegi järjestikuste tõeväärtusoperatsioonide korral.
  • Ühetasandilised näod, eriti need, mis asuvad sama objekti sees, on tülikad ja neid tuleks vältida. Üks hullemaid juhtumeid on samatasapinnalised näod, mis asetsevad vastamisi (neid on lihtne luua nullkõrgusega primitiivi konstrueerimisel).
  • Boole'i ​​toimingud töötavad usaldusväärselt ainult üksikute elementide puhul. Kui mõni operand koosneb mitmest elemendist (näiteks teekann või hedra), saab igal ajahetkel õnnestuda ainult üks element.
  • Kui toiming ebaõnnestub, lülitage väljastamise allosas välja suvand Optimeeri tulemust, et ei arvutataks viimast samatasapinnalisi servi kontrollivat läbimist. Lubatud suvand Optimize Result võib sageli põhjustada valesid tulemusi.
  • Kui toiming ikka ebaõnnestub või tekitab lõhenenud servi, proovige operande veidi kohandada.
  • Muutke operandi detailsuse taset, eriti selle piirkonna lähedal, mis on tegeliku Boole'i ​​operatsiooni jaoks lokaalne.

Ärge laske sellel kontroll-loendil hirmutada teid tõeväärtuste toiminguid vältima. Enamik neist valikutest töötab esimesel katsel, eriti kui geomeetria järgib kolme esimest reeglit, mis on tõenäolisem 3DS MAXi geomeetria loomisel.

Tõeväärtustehtetega animatsiooni sooritamisel võite ühes või kahes kaadris kogeda äkilist "sähvatust" või "värinat" – tõenäoliselt selle põhjuseks, et Boolean-toimingut ei teostatud või selles ühes kaadris tekivad kummalised servad. Arvestades tõeväärtuse operatsiooni kahju ja mõju animatsioonile, tasub tõeväärtuse tulemuse analüüsimiseks võtta aega kaadrist kaadrisse liikumiseks. Kui ilmneb renderdamisvea tingimus, kohandage tulemuse parandamiseks veidi selle kaadri geomeetriat ja jätkake. Kui teil on vaja palju reguleerida, on parem määrata raja operandi positsioonile Linear kontroller ja kohandada peaaegu iga kaadrit.

Lõikamine tõeväärtuse lahutamisega

Boole'i ​​lahutamise toimingud on kõige sagedamini kasutatavad toimingutüübid ja seetõttu vaiketehted. Lahutamistehteid võib pidada "ärahammustamiseks", "skulptuuriks", "lõikamiseks", "eemaldamiseks", "puurimiseks", "tembeldamiseks" – valige kõige mõttekam analoogia.

Edukas tõeväärtuslik kujundamine algab mõistmisest, milline peaks olema lõplik lahutatav kuju. See viib ideeni, millist geomeetriat on konkreetse mustri täitmiseks vaja. Pärast sagedasi lahutamistoiminguid on objektil vähe sarnasust lõpptulemus; objekt võtab lihtsalt lõikenoa kuju, mis jagab pinna plaatideks. Teist operandi võib pidada "peitliks" või "kujulise lõikuri tükiks", mis loob esimesele objektile konkreetse "soone". Boole'i ​​lahutamise operatsioon on ka hea, kui mitte põhiline meetod olemasolevatele objektidele ümarate ja soonte loomiseks.

MÄRGE Võib olla kasulik pakkuda valikut "lõiketööriistu" Bezier' kõverate kujul, mida saab Boole'i ​​lahutamise operatsioonide jaoks välja pressida, tõsta või pöörata. Keerulisemaid Boole'i ​​lõikekujundeid saab vajadusel salvestada traatraamina või sulatada.

Boole'i ​​ristmik Uutes objektides lohkude loomine

Tõeväärtuse ristmik loob objekti, mis muidu tuleks tõeväärtuse lahutamise toiminguga "lõigata". Tulemust on mõnikord raske visualiseerida, kuid see võib tekitada geomeetriat, mida muidu on raske modelleerida (vt joonis 11.6). Siin toimib teine ​​operand kuues suunas lõikena.

Tõeväärtuse ristmiku üks peamisi kasutusviise on tõeväärtuse lahutamise operatsiooniga "äravõetud" taastamine. Mõnikord võiksite animatsioonis kasutada osa, mis "põrandale kukkus". Võib osutuda vajalikuks näidata detaili, mis on tembeldatud näiteks metallist toorikult. Selleks kopeerige originaalobjektid ja tehke kaks tõeväärtusoperatsiooni, luues nii "lõigatud" objekti ja selle, mis "lõigati".

Modelleerimine Boolean Unioniga

Operatsioon Boole'i ​​liitühendab kaks operandi ja eemaldab kattuva geomeetria. Enne liitumist peaksite hoolikalt kaaluma liitumise vajadust. Kui peamine ristmik on nähtav, on liitmine õige valik. Kui kahe objekti ristumiskoht on peidetud, on parem lasta objektidel lihtsalt ristuda. Üldiselt kasutage liitu, kui soovite jätkata rühmade silumist liigenduse kaudu. Sel juhul on Boole'i ​​liit lihtsalt esimene samm keerulisemas modelleerimisjärjestuses.

Boole'i ​​ühendust kasutatakse kõige sagedamini objektide jaoks, mis peavad välja nägema "kindlad". Pind suletud, uurige sisemine struktuur pole nõutav, seega on objekt ainult ühe näo paksune. Paljudel juhtudel tehakse lahutamise efekti saavutamiseks Boole'i ​​liit. Üks operaand kattub teisega, võimaldades viimast kasutada muudel eesmärkidel, kahjustamata seejuures kattuvat operandi. See toiming võib olla kasulik, kui katteobjektil on konkreetne kuju, mis tuleb seostada teise objektiga.

Boole'i ​​ühendust kasutatakse ka kahe elemendi loomiseks, mida saab teistest eraldada, kasutades võrgusilma redigeerimise funktsiooni Detach. Kui Boole'i ​​liitoperatsiooni kasutatakse selliste objektide redigeerimiseks, mille geomeetria kattub ühe korra, siis traatraami ei genereerita. Kui saadud objektid on poolitatud, tekib traatraami auk, kus objektid ühinevad. Sest tõhus kasutamine Selle meetodi puhul on kõige parem anda igale operandile kordumatu materjali ID# (Material ID#), et pindu saaks eraldamisel hõlpsasti valida materjali ID# järgi.

On aeg tutvuda loogiliste operatsioonidega ja uue andmetüübiga – Boolean.

Lihtsaim loogikatehe on võrdustehe. See selgitab välja, kas kaks väärtust on võrdsed või mitte.

See toiming on määratletud mis tahes tüüpi väärtuste jaoks: numbrite, stringide, kuupäevade ja nii edasi. Ainus oluline asi on see, et mõlemad võrreldavad väärtused on sama tüüpi. Näiteks kaks numbrit või kaks stringi.

Loogikatehe Võrdub tähistatakse märgiga "=". Enamikul juhtudel kasutatakse If- ja Loop-lausetes loogilisi tehteid. Kuid need juhised pole teile veel tuttavad.

Seetõttu tutvute tehtega Equals, kasutades määramislauset. Selles näib see toiming veidi kummaline, nii et suurema tähtsuse huvides lisate selle sulgudesse (joonis 3.79).

Riis. 3.79. Ettevalmistus operatsiooniks "Võrdne"

Nüüd kirjutage sulgudesse tehe Võrdsed. Näiteks 5 = 5.

Seejärel kirjuta veel üks määramislause, kuid nii, et võrdub tehes osaleksid erinevad arvud. Näiteks 5 ja 2.

Käivitage 1C:Enterprise silumisrežiimis ja vaadake, millega nendes juhistes olevad muutujad on võrdsed (joonis 3.80).

Riis. 3.80. Tõeline väärtus ja vale väärtus

Seda näete, kui kahte võrreldakse sama number, on tulemus tõsi. Ja kui võrreldakse erinevaid numbreid, on tulemus Vale. Lisaks on mõlemad väärtused Boolean tüüpi (aktsent tähel "y").

Sisseehitatud keeles on päris palju loogilisi tehteid, nagu elus ikka. Kõik need on intuitiivsed ja nende kasutamisel pole erilist vajadust treenida. Ainus, mis võib raskusi tekitada, on see, milliste sümbolitega neid tähistatakse. Kuid tabel 3.1 aitab teid selles.

Tabel 3.1. Võrdlusoperatsioonid

Kõiki selles tabelis loetletud toiminguid nimetatakse võrdlustoiminguteks. Sest nad võrdlevad kahte väärtust. Lisaks saab tehteid Võrdsed ja Mitte võrdsed rakendada mis tahes tüüpi väärtustele. Peaasi, et tüübid oleksid ühel ja teisel pool operatsiooni samad.



Kuid ülejäänud nelja toimingut (suurem/vähem) saab rakendada ainult kahele numbrile, kahele stringile või kahele kuupäevale.

Selles jaotises ei käitata võrdlustoimingutega näiteid. Kuid kui olete If-lausega tuttav, peate palju harjutama erinevate võrdlustehterite kirjutamist.

Boole'i ​​operatsioonid

Ja nüüd saate tutvuda kõige huvitavamate loogiliste toimingutega. Lisaks võrdlustoimingutele on olemas ka rühm loogilisi tehteid, mida nimetatakse Boole'i ​​operatsioonideks.

Kui võrdlustoiminguid saab teha (enamasti) numbrite, stringide ja kuupäevadega, siis Boole'i ​​toiminguid tehakse ainult Boole'i ​​tüüpi väärtustega. See tähendab väärtustega Tõene ja Vale.

Siiani on teil raske ette kujutada, miks seda vaja võib minna. Aga nüüd, mõne näite varal, saate kohe kõigest aru.

Nende näidete puhul peate kirjutama tõeväärtused otse programmi teksti, st kasutama literaale. Noh, Boole'i ​​tüüpi literaalid näevad välja väga lihtsad. Tõene väärtus on märgitud tõeseks ja Väär väärtus Väär.

Näiteks kui soovite luua muutuja, mis kirjeldab ilma teie akna taga, võite selle kirjutada järgmiselt (joonis 3.81).

Riis. 3.81. Tõeline väärtus sõnasõnaline

Ja kui soovite mõnes muus muutujas määrata, kas sajab vihma või mitte, saate selle kirjutada nii (joon. 3.82). Proovige seda ja vaadake, millega muutujad on võrdsed.

Riis. 3.82. Valeväärtus sõnasõnaline

Pange tähele, et platvorm värvib sõnad True ja False punaseks. Sest need on erilised reserveeritud sõnad. Ja see tähendab, et selle nimega muutujat, kui äkki soovite, ei saa luua.

Esimese Boole'i ​​toiminguga tutvumiseks looge kaks muutujat: ICanSwim ja ThereIsSea Nearby. Andke neile väärtused, mis nad tegelikult on. Ja näiteks raamatus annan neile väärtuse Tõene (joonis 3.83).



Riis. 3.83. Muutujad "Ma oskan ujuda" ja "lähedal on meri"

Nüüd peate kasutama loogilist operatsiooni, et teada saada, kas ujute meres või mitte.

Proovige seda kõigepealt tavaliste sõnadega öelda. Tõenäoliselt selgub midagi sellist, et "kui ma saan ujuda ja kui läheduses on meri, siis ma ujun meres."

Nüüd vaadake (joonis 3.84), kuidas sama fraas sisseehitatud keeles välja näeb.

Riis. 3.84. Operatsioon "I"

Sisseehitatud keeles sama ütlemiseks kasutatakse operaatorit AND. Kuidas see toimib, saate selles näites ise kontrollida muutujate väärtusi muutes.

Meres ujute ainult siis, kui see on läheduses ja oskate ujuda. Kui merd lähedal pole, siis pole lihtsalt kuskil ujuda. Ja kui ujuda ei oska, siis ei õnnestu ka. See on väga ohtlik, võite uppuda. Noh, kui merd pole ja te ei tea, kuidas ujuda, siis ei saa te meres ujuda.

Nüüd lahendage teine ​​probleem. Looge kaks muutujat IIAreBoat ja IIIAraft. Saate määrata neile mis tahes väärtuse. Ja näiteks raamatus annan neile väärtuse True (joonis 3.85).

Riis. 3.85. Muutujad "Mul on paat" ja "Mul on parv"

Nüüd tuleb loogilise toimingu abil välja selgitada, kas sa saad üle järve ujuda või mitte.

Proovige seda kõigepealt tavaliste sõnadega öelda. Ilmselt midagi sellist, et "kui mul on parv või paat, siis võin üle järve ujuda."

Nüüd vaadake (joonis 3.86), kuidas sama fraas sisseehitatud keeles välja näeb.

Riis. 3.86. Operatsioon "OR"

Et öelda sama asja 1C: Enterprise puhul, kasutatakse operaatorit VÕI. Kuidas see toimib, saate selles näites ise kontrollida, muutes muutujate väärtusi.

Kui teil on paat, kas saate ujuda üle järve? Jah.

Ja kui teil pole paati, vaid parv, siis saate? Jah, sa saad.

Mis siis, kui teil on nii paat kui ka parv? Kindlasti! Isegi kaks korda! Kord paadis ja kord parvel (nali naljaks)!

Ja millisel juhul ei saa te üle järve ujuda? Õige. Kui sul pole paati ega parve.

Nüüd tehke oma näide keerulisemaks ja tutvuge sellega, et ühes avaldises saab korraga kasutada mitut Boole'i ​​operatsiooni.

Looge kolm muutujat: ICanSwim, NearbyIsSea ja NearbyIsPool. Andke neile väärtused, mis nad tegelikult on. Ja raamatus jätan selle taas lihtsaks ja annan neile väärtuse Tõene (joonis 3.87).

Riis. 3.87. Muutujad "Ma oskan ujuda", "lähedal on meri" ja "lähedal on bassein"

Ja küsimus, mida kavatsete lahendada, on peaaegu sama. Mis saab muutuja IWillSwim väärtus?

Kui vastate sõnadega, siis ütlete: "Ujun, kui ujuda oskan ja läheduses on meri või bassein." Proovige see sisseehitatud keeles kirjutada (joonis 3.88).

Riis. 3.88. Muutuja "IWillSwim"

Esmapilgul tundub, et kõik on korras. Aga sa pead kontrollima.

Näiteks sa ei oska ujuda. Sel juhul pole vahet, kas läheduses on bassein või mitte: ujuda ei tohiks. Aga mida programm teile ütleb? Proovige järele (joonis 3.89).

Riis. 3.89. "IWillSwim = tõsi"

Programm ütleb teile, et hakkate ujuma. Selgub, et tegemist on mingi "ohtliku" programmeerimisega. Sellise programmeerimisega ei lähe kaua uppuma!

Mis viga? Võib-olla kirjutasite valed tehted? Ei, neil on õigus.

Sa lihtsalt ei arvestanud sellega, et kui ühes avaldises esineb mitu Boole'i ​​operatsiooni, on neil teatud täitmise järjekord. Samamoodi nagu aritmeetiliste tehtetega +, -, * ja /.

Esmalt sooritatakse AND-operatsioon ja seejärel VÕI-operatsioon. Ja kui järjest on mitu identset toimingut, tehakse need nende kirjutamise järjekorras.

Seetõttu arvutati näites avaldis sel viisil (joonis 3.90).

Riis. 3.90. Väljendi hindamise järjekord

Kõigepealt viidi läbi JA-operatsioon, mis andis tulemuseks False. Ja siis OR-operatsioon, mille tulemuseks oli True.

Tegelikult on selle väljendi puhul teie jaoks olulised kaks asja. Mida saab ujuda ja mis on koht, kus ujuda. Kas see on meri või bassein, pole nii oluline.

Seetõttu oleks õige lahendus Läheduses on meri VÕI Lähedal on sulgudes bassein (joonis 3.91). Proovi seda.

Riis. 3.91. "IWillSwim = vale"

Seejärel hindab platvorm esmalt sulgudes olevat väljendit. See tähendab, et ta saab teada, kas on, kus ujuda, või pole kuhugi ujuda. Ja siis hakkab ta huvi tundma teie ujumisoskuse vastu (joonis 3.92).

Riis. 3.92. Väljendi hindamise järjekord

Selle näite tugevdamiseks muutke veidi selle olekut. Looge kolm muutujat: ICanSwim, NearIsSea ja NearIsBath. Määrake need väärtused, mis olid eelmises näites: False, True ja True (joonis 3.93).

Riis. 3.93. Muutujad "Ma oskan ujuda", "Läheduses on meri" ja "Läheduses on vann"

Ja peate arvutama muutuja nimega IWillSwim. Olge ettevaatlik: muutuja nimi on mingil põhjusel muutunud.

Proovige kirjutada avaldis sisseehitatud keeles ja seejärel võrrelda seda joonisel 3.94 olevaga.

Riis. 3.94. "Ma pesen = tõsi"

Käivitage 1C:Enterprise silumisrežiimis ja vaadake, mis juhtub, kui muudate muutujate väärtusi.

Miks sel juhul sulgusid vaja ei läinud, kuigi näide näeb välja väga sarnane eelmisele? Sulgusid polnud vaja, sest selle väljendi loogikatehte "loomulik" täitmise järjekord sobib teile üsna hästi (joonis 3.95).

Riis. 3.95. Väljendi hindamise järjekord

Tõepoolest, ujumisoskus on oluline ainult siis, kui kavatsete merre minna. Kui tahad vannis käia, siis pole vaja ujumist osata.

Seetõttu on igati õige, et enne tehakse AND operatsioon ja selgub, kas meres ujuda saab. Ja siis kontrollitakse juba vanni olemasolu, mille kasutamiseks pole ujumisoskust vaja.

Kokkuvõtteks on vaja öelda veel ühe Boole'i ​​operatsiooni kohta - tehte EI kohta. Ta on väga lihtne. See tagastab Boole'i ​​väärtuse, mis on olemasolevale vastand.

Et näha, kuidas see toimib, võite kasutada joonisel 3.96 näidatud näidet.

Riis. 3.96. Operatsioon "EI"

Tavaliselt pole selle toimingu kasutamisel raskusi. Ainus, mida vajate, on Boole'i ​​toimingute sooritamise järjekord. Täielikult näeb see välja selline:

  • esiteks täidetakse sulgudes olev;
  • seejärel toiming EI;
  • seejärel operatsioon AND;
  • seejärel OR-operatsioon.

"Kui" avaldus

Lõpuks on aeg tutvuda veel ühe juhisega, mida kasutatakse sisseehitatud keeles.

Kui kasutaksite ainult määramislauset, näeks teie programm välja nagu sirge tee punktist "A" punkti "B". Algusest lõpuni (joon. 3.97).

Sest omistamislaused täidetakse üksteise järel nende kirjutamise järjekorras.

Kuid tegelikult näevad enamik programme teistsugused välja. Programmi alguse ja lõpu vahel on palju erinevaid teid, mida programmi täitmine võib läbida (joonis 3.98).

Riis. 3.98. Paljud viisid punktist "A" punkti "B"

Sellel on palju erinevaid põhjuseid. Näiteks sõltub see sellest, millised andmed on juba programmis. Kui kõik vajalikud andmed on olemas, läheb täitmine ühtepidi. Kui mõned andmed puuduvad, minge teisele poole.

See sõltub ka sellest, mida soovite selle tulemusel saada. Kui soovite oma elektroonilisest päevikust teada, kas homme on matemaatikatund või mitte, siis see on üks võimalus, lihtne. Ja kui soovite saada terve nädala tundide ajakava koos klassiruumide, õpetajate ja ülesandega, siis on see teistsugune, keerulisem viis. Kuna programm peab palju ringi käima erinevad kohad ja kogume teie jaoks kogu teabe, mida te küsite.

Just selleks, et suunata programmi täitmist mööda üht või teist teed, on If-lause olemas. See näeb välja väga lihtne (joonis 3.99).

Riis. 3.99. "Kui" avaldus

See võimaldab teil valida mitu käsku, mida alati ei täideta, kuid ainult siis, kui loogilise avaldise hindamise tulemus on Tõene.

Sõnad If, Then ja EndIf on selles juhendis kohustuslikud. Loogiline avaldis kirjutatakse sõnade Kui ja Siis vahele. Ja EndIf näitab, kus täidetavad laused tingimusest sõltuvad.

Et näha, kuidas see toimib, tehke väike näide. Looge muutuja ja salvestage sinna oma vanus. Seejärel looge teine ​​muutuja IGoToKindergarten ja määrake selle väärtuseks Tõene. Kuid looge see muutuja ainult siis, kui te pole veel kooliealine. Segaduste vältimiseks eeldame seda koolieas algab 7-aastaselt.

Kui olete oma näite lõpetanud, võrrelge seda joonisel 3.100 olevaga.

Riis. 3.100. Näide

Seadke real If... katkestuspunkt, käivitage 1C:Enterprise silumisrežiimis ja kontrollige avaldise MyAge väärtust< 7 (Shift + F9) (рис. 3.101).

Riis. 3.101. Väljendi "Minu Vanus< 7»

Näete, et see on võrdne valega. Ja see on õige. Teie vanus on üle 7 aasta vana.

Kui avaldis on väär, peaks platvorm vahele jätma kõik If-lause sisse kirjutatud laused. Kontrollige seda sammuga (F11). Tehke üks samm (joonis 3.102).

Riis. 3.102. Üheastmeline täitmine

Tõepoolest, platvorm hüppab EndIfi reale. Ja kui astute uuesti, peatub see EndProcedure real. Sel juhul saab muutuja IgoToKindergarten väärtuseks Undefined, kuna seda käsku ei täidetud ja sellist muutujat ei loodudki.

Ja nüüd tutvuge sellega, kuidas platvorm käitub juhul, kui väljend on tõene. Selleks ei muuda te programmi teksti. Kasutate ära võimalust muuta muutujate väärtusi kohe silumisprotsessis.

Selleks peate esmalt taaskäivitama silumise. Selleks käivitage käsk Silumine – taaskäivitamine (joonis 3.103).

Riis. 3.103. Taaskäivitage silumine

Pärast silumise taaskäivitamist peatub täitmine uuesti real If... Ava kohalikud muutujad (kui see aken on suletud).

Topeltklõpsake lahtril väärtusega 25 (joonis 3.104).

Riis. 3.104. Muutke muutuja väärtust

See läheb redigeerimisrežiimi. Tippige 6 ja vajutage sisestusklahvi.

Edaspidi on MyAge muutuja väärtuseks 6. Ja saate jätkata silumist samamoodi nagu varem.

Vaadake väljendit Minu vanus< 7. Теперь оно будет равно Истина (рис. 3.105).

Riis. 3.105. Väljendi "Minu Vanus< 7»

Astu üks samm. Täitmine läheb If-lause sisse (joonis 3.106).

Riis. 3.106. Üheastmeline täitmine

Nüüd, kui teete veel paar sammu, jõuate protseduuri lõpuni. Ja muutuja Ma lähen lasteaeda väärtus võrdub tõega.

Seni olete kõige rohkem kaalunud lihtne vorm juhised Kui. Tegelikult võib see olla keerulisem. Vaata.

Teie näites tehakse eritoiminguid ainult siis, kui teie vanus on alla 7 aasta vana. Kuid kujutage ette, et peate tegema otsuse kahe võimaluse vahel. Kui oled alla 7-aastane, lähed lasteaeda. Ja kõigil muudel juhtudel lähete kooli. Kuidas seda sisseehitatud keeles kirjutada?

Selgub, et see on väga lihtne. Selleks kasutatakse märksõna Muidu (joonis 3.107).

Riis. 3.107. Märksõna "muidu"

Muutke näidet nii, et selle töö tulemusena oleks teil kaks muutujat: IGoToKindergarten ja IGoToSchool. Ja et nad aktsepteeriksid õiged väärtused(Tõene või vale) olenevalt muutujas MyAge määratud vanusest.

Võrrelge oma tulemust joonisel fig. 3.108.

Riis. 3.108. Muudetud näide

Käivitage 1C:Enterprise silumisrežiimis ja kontrollige samm-sammult, et näide selle jaoks sobib erinevad väärtused vanus. Muutke vanust otse silumise käigus.

Väga sageli ei analüüsi If-juhendis mitte ühte, vaid mitut tingimust. Näiteks ühel ilusal hommikul ärkasite ja meenus, et teil on vaja kooli minna. Kuid te ei mäleta täpselt, kuhu: lasteaeda, kooli või kolledžisse.

Aga sa tead reegleid. Kuni 7. eluaastani on vaja käia lasteaias. Peale lasteaeda tuleb kooli minna. Nad lõpetavad kooli 18-aastaselt. Ja 19-aastaselt lähevad nad kolledžisse.

Selle algoritmi kirjutamiseks 1C:Enterprise'is vajate veel ühte märksõna ElseIf (joonis 3.109).

Riis. 3.109. Märksõna "ElseIf"

Teie näites tuleks see kirjutada märksõna Else asemel. Ja siis kirjuta, mis tingimusel pead kooli minema.

Ja näite lõppu lisate uuesti sõna Muidu ja märgite, et kõigil muudel juhtudel lähete kolledžisse. Proovige ise näidet tuua.

Tulemuse kontrollimiseks võrrelge seda joonisega 3.110.

Riis. 3.110. Näide "Ma lähen kolledžisse"

Silumisrežiimis minge läbi If-lause erinevad harud ja vaadake, kuidas see töötab.

Näete, et If-lauses määratud avaldisi hinnatakse ja sõelutakse kordamööda. Nende kirjutamise järjekorras. Niipea, kui ilmneb tõene avaldis, käivitatakse If-lause vastav haru. Pärast seda liigub täitmine EndIfi. See tähendab, et juhiseid, mis asuvad nendes harudes, kus avaldis oli vale, või nendes harudes, kuhu avaldiste kontroll ei jõudnud, lihtsalt ei täideta.

See on Ifi juhise omadus, mida tuleb meeles pidada ja millega tuleb arvestada. Kui avate jaotise Kohalikud muutujad, näete, et pärast näite käivitamist ei pruugi muutuja IIDUWIInstitute olla määratletud. Näiteks kui teie vanus on 15 (joonis 3.111).

Riis. 3.111. Muutuja „Ma lähen instituuti” ei ole määratletud

Ja kui vanus on 20, siis muutujaid, mida ma lasteaias käin ja koolis, ei määratleta (joonis 3.112).

Riis. 3.112. Muutujad "ma lähen lasteaeda" ja "ma lähen kooli" ei ole määratletud

Kuid "reaalajas" programmis loote selliseid muutujaid tõenäoliselt mitte niisama, vaid selleks, et neid tulevikus kasutada. Ja kui mõnda neist muutujatest ei kuvata, ei saa teie programm töötada.

Mis on sellest olukorrast väljapääs? Igav ja pedantne juhendi igas harus.Kui sa kirjutad ette kõikide muutujate loomise, mida sul vaja võib minna? Ei.

On palju lihtsam ja mugavam lahendus. Vahetult enne avaldust Kui loote kõik vajalikud muutujad. Ja määrake neile mingi standardväärtus – "vaikeväärtus". Näiteks vale.

Riis. 3.113. Näite teine ​​versioon

Tehke see näide oma konfiguratsioonis ja vaadake, kuidas see töötab.

Mis tahes vanuse väärtuste korral on kõik muutujad olemas. Ja neil on õiged väärtused (joonis 3.114).

Riis. 3.114. Kõik muutujad on määratletud

Ilus programm

Olen varem öelnud, et teie konfiguratsioon peaks olema ilus. Ta rääkis sellest, et muutujate nimed peaksid olema mugavad ja arusaadavad. Ta ütles, et väljendid tuleks kirjutada selgelt ja "loetavalt". Nüüd on õige aeg rääkida sellest, kuidas teie programmi tekst peaks välja nägema.

Tõenäoliselt olete juba harjunud, et platvorm ise värvib teie programmi sõnu. Ja see on mugav. Samuti olete võib-olla märganud, et platvorm teeb Ifi avalduse kirjutamisel ise taande.

Kui te pole seda märganud, tehke väike katse. Kirjutage moodulisse Kui a = 2 Siis. Ja vajutage sisestusklahvi (joonis 3.115).

Riis. 3.115. Süntaksi taane

Näete, et uuel real ei asu kursor E-tähe all, vaid mõne nihkega paremale. Seda nihet nimetatakse süntaksi taandeks. See aitab teil programmi teksti paremini ja lihtsamalt lugeda. Kuna sama haru sees asuvad "alluvad" juhised on visuaalselt esile tõstetud (joonis 3.116).

Riis. 3.116. Seal on süntaksi taane

Vaadake, milline "puder" oleks saanud, kui süntaktilist taanet poleks olnud (joon. 3.117).

Riis. 3.117. Süntaksi taanet pole

Seetõttu on süntaksi taane programmi oluline ja kohustuslik osa. Seetõttu teeb platvorm seda automaatselt, kui sisestate juhendi teksti järjestikku.

Kuid te ei tööta alati nii. Isegi oma lihtsaid näiteid esitades näete, et peate juba kirjutatut muutma. Sisestage uued read. Kopeerige ühest kohast teise. Sellistel juhtudel ei saa platvorm süntaksit automaatselt taandada. Selle tulemusena võite sellise teksti saada (joonis 3.118).

Riis. 3.118. Katkise vorminguga tekst

Kuidas temaga koos olla? Kas liigutada iga rida käsitsi, et muuta see "ilusaks"? See on igav, pikk ja ebahuvitav.

Seetõttu on platvormil käsk, mis suudab seda automaatselt teha. Aga nüüd sa ei näe seda. Tekstipaneeli, kus see käsk asub, konfiguraatori standardsätete all ei kuvata. Kuid saate selle alati sisse lülitada, nii et vormindamise käsk on teie käeulatuses.

Selleks paremklõpsake ülemises käsupaneelis paremal asuval tühjal kohal (joonis 3.119).

Riis. 3.119. Konfiguraatoripaneelide seadistamine

Ilmuvas menüüs klõpsake tekstireal. Akna allossa ilmub uus käsupaneel (joonis 3.120).

Riis. 3.120. käsupaneel Käsk "Tekst" ja "Format".

See paneel sisaldab käsku Vorming, mida vajate.

Selle käsu kasutamine on väga lihtne. Esiteks valite teksti, mida soovite vormindada. Selleks klõpsake näiteks halli riba teksti esimesel real (joonis 3.121).

Riis. 3.121. Alusta teksti valimist

Seejärel liigutage see ilma hiirenuppu vabastamata viimasele vajalikule reale (joonis 3.122).

Riis. 3.122. Vormitav tekst on esile tõstetud

Ja klõpsake nuppu Vorminda. Tekst muutub kohe ilusaks ja vormistatud (joon. 3.123).

Riis. 3.123. Vormindatud tekst

Peale süntaktilise taande on teksti arusaadavamaks muutmiseks ka teisi võimalusi. Näiteks üks hea viis on lisada programmi tekstile tühjad read. Need võimaldavad jagada teksti mitmeks eraldi semantiliseks plokiks.

Kui võtta näide käsuga If, siis sellised semantilised plokid viitavad iseendale. Iga selle juhise haru on eraldi semantiline plokk. Seega, kui lisate enne haru algust tühja rea, parandab see ainult teie programmi loetavust (joonis 3.124).

Riis. 3.124. Tühjade ridade kasutamine

Teine hea ja väga sageli kasutatav tehnika on kommentaaride loomine. Kommentaar on programmi selgitus, mis asub otse programmi tekstis (joonis 3.125).

Riis. 3.125. Kommentaar