Modelleerimine Boole'i ​​operatsioonide abil. Programmeerimiskeeltes

Modelleerimine koos Boole'i ​​operatsioonid on levinud ja sageli kasutatav tehnika. Boole'i ​​operatsioonid on väga lähedased traditsioonilistele skulptuuri- ja modelleerimismeetoditele. 3D Studio MAX muudab Boole'i ​​modelleerimise veelgi kasulikumaks, rakendades Boole'i ​​liitobjekti. Erinevalt modelleerivast modifikaatorist koosneb Boole'i ​​liitobjekt kahest objektist, mida nimetatakse operandideks ja mis esindavad Boole'i ​​toimingut. Need operandid jäävad objektideks nii kaua kui vaja ja võimaldavad juurdepääsu nende parameetritele ja modifikaatorivirnadele.

Boole'i ​​liitobjekt erineb paljudest Boole'i ​​toimingutet, kuna see ei muutu teiseks alaline alus kujundid, mis määravad operandide geomeetria. Seda geomeetriat saab hiljem teisaldada, uuesti määratleda ja vahetada. Kuna operandid jäävad objektideks, saab nendega suhelda nagu iga teise objektiga. Saate neid isegi animeerida, luues hämmastavaid efekte. Varjutatud vaateaknad 3DS MAXis võimaldavad näha Boole'i ​​operatsiooni tulemust, kui operande muudetakse. Viimane on interaktiivse töörežiimi eelis ja tekitab tunde, et ühte objekti kasutatakse teise väljalõikamiseks. Kuigi Boole'i ​​toimingud on endiselt väga kasulikud ja meelelahutuslikud, võivad Boole'i ​​operatsioonide keerukus suureneda, kui need on üksteise sees. See peatükk sisaldab teavet Boole'i ​​toimingute kasutamise hõlbustamiseks. Tähelepanu pööratakse:

  • Boole'i ​​operatsioonide põhitõed ja võimalused nende interaktiivsuse suurendamiseks
  • Pesastatud Boole'i ​​objektidega töötamine
  • Erinevate Boole'i ​​operatsioonide kasutamine skulptuuriks ja modelleerimiseks
  • Kaalutlused, mida tuleb Boole'i ​​toimingute edukaks sooritamiseks arvesse võtta

Boole'i ​​toimingute põhitõed

Nagu paljude arvutigraafika terminite puhul, pärineb mõiste "Boolean" 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, leidub see pigem paneelil Loo kui paneelil Muuda, kuna see määratleb uue objekti kahest olemasolevast (sarnaselt loft- või morfiobjekti loomisega). Boole'i ​​toiming 3D Studio MAXis teostatakse, luues kahest olemasolevast objektist Boole'i ​​liitobjekti, nn. operandid, tehakse järgmised toimingud:

  1. Valige Boole'i ​​operatsiooni algusobjekt.
  2. Valige paneeli Muuda geomeetria valikuloendist Liitobjektid ja klõpsake siis Boole'i ​​nuppu.
    Valitud objektist saab Boole'i ​​liitobjekti A-operand. Nüüd saate 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 nende kehtivuse määramiseks (tõve operatsiooni sooritamise mõttes) ja nende kehtivuse korral tehakse Boole'i ​​toiming.
    Nüüd saate muuta toimingu tüüpi ja näha erinevaid Boole'i ​​tulemusi.

Operatsioonitüübid on sarnased paljude traditsiooniliste meetoditega. Kombineerimine viib objektid kokku nagu saviga töötamine; lahutamisel lõigatakse üks objekt teisest välja, nagu skulptuuris; ristmik jätab maha selle, mis oleks tulnud 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 Võite klõpsata nuppu Vali operandi B ja valida teise operandi B nii mitu korda kui soovite. Uue operandi valimisel eemaldab B algse operandi lavalt. Kui valite B-operandiks vale objekti, klõpsake enne teise B-operandi valimist nuppu Võta tagasi.

Boole'i ​​avaldised liitobjektidena

Boole'i ​​operatsioonide äärmine paindlikkus 3DS MAXis seisneb selles, et Boole'i ​​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 Boole'i ​​objekti loomist.

3DS MAX viite- ja eksemplari arhitektuur demonstreerib oma võimsust Boole'i ​​objektidega töötamisel. Kui loote esimest korda Boole'i ​​liitobjekti, saate B-operandiks valitud objekti teisaldada, koopia luua, eksemplari luua või sellele viidata. Vaikimisi on Teisalda ja see näib loovat selgesõnalise toimingu, kuna ainult Boole'i ​​tulemus jäänused. Mõlemad Boole'i ​​operatsiooni jaoks valitud objektid on nüüd alamobjektide operandid. Ülejäänud suvandid annavad valitud objektile koopiale, eksemplarile või viitele Boole'i ​​tulemuse. Kõigil kolmel juhul jääb operandi B jaoks valitud objekt muutumatuks ja Boole'i ​​tulemus saadakse, kasutades uut objekti operandina. Sellistel juhtudel võib tunduda, et midagi pole juhtunud enne, kui liigutate või peidate ühte neist kahest objektist.

MÄRGE Operandiks B valitud objektil on kõik teisendusanimatsioonid eemaldatud, samas kui operandilt A (algne objekt) jääb teisendusanimatsioon alles. Kui operandil A on teisendusanimatsioon, kasutab uus staatiline operand kaadri praegust asukohta, asukohta ja skaalat.

Kuigi on võimalik teha koopiat, eksemplari või viidet operandist B, ei ole seda võimalust operandi A puhul (objekt valitakse pärast Booleani klõpsamist). Paindlik meetod sellest piirangust möödahiilimiseks on kloonida eksemplaridesse kõik objektid, mida peaks Boole'i ​​operatsioonides kasutama. Seejärel tuleks operandi B valimiseks kasutada vaikevalikut Teisalda, tagades, et Boole'i ​​objektis olevaid objekte saab muuta ja nende seoseid säilitada.

NÕUANNE Eksemplari loomiseks objektist, mis on juba operandiks, sisestage Track View. Kopeerige operandi objekti määratlus (mida tähistab sinine ring) 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 B-operandi asendada Boole'i ​​objekti paneelil Muuda samade valikutega, mis pakuti loomisel. Kasutage seda suvandit ettevaatlikult, sest see hävitab stseenist algselt valitud B-operandi. Originaali hävitamine võib tekitada probleemi, kui kasutate esimest korda suvandit Teisalda ja esitate geomeetria, mida enam eraldi objektina ei eksisteeri. Muu operandi valimine on sama, mis rajavaates operandi objekti määratluse asendamine, välja arvatud juhul, kui peate tegema viite, mida rajavaates pole.

Pärast Boole'i ​​objekti loomist saate naasta iga operandi Modifier Stacki juurde paneelil Muuda (vt joonis 11.3). Kui sisenete esimest korda Boole'i ​​objekti paneelile Muuda, ei valita ühtegi operandit, seega kuvatakse modifikaatorite virn ainult Boole'i ​​väärtust. Konkreetse operandi virna muutmiseks peate valima loendist Operandid. Valitud operand kuvab nüüd oma pinu. Saate seadistada mis tahes virnas olevaid modifikaatoreid või lisada uusi modifikaatoreid, et mõjutada operandi objekti enne Boole'i ​​toimingut. Animeerimise parameetritele pole täiendavaid piiranguid. Operandi teisendamiseks peate Boole'i ​​objekti jaoks aktiveerima 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 Boole'i ​​operandidele. Kui simulatsiooni ajal tekivad pausid, muutke suvandit Värskenda. Valik Käsitsi on üks kõige populaarsemaid konservatiivsed meetodid ja annab suurima kontrolli arvutustoimingute üle. See režiim sobib kõige paremini keerukate mudelite jaoks. Meetod Renderdamisel ei hinda toimingut enne, kui lõplik renderdus on lõpetatud, mille jä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 eelmiste operandi definitsioonide juurde ja suurendage nende tihedust. Kui need on juhtumid, suurendage nende raskust ja seejärel kohandage tulemust käsitsi.

NÕUANNE Pikad Boole'i ​​arvutused saab lõpule viia, vajutades ootekursori kuvamise ajal paoklahvi. Kui see on lõpetatud, lülitub värskendusrežiim automaatselt režiimile Käsitsi, nii et saate nüüd värskendusarvutuse ajastust täpsustada (kuna geomeetria on tõenäoliselt keeruline).

Interaktiivsed Boole'i ​​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 tõhusalt interaktiivset Boole'i ​​operatsiooni, kuna kummagi operandi liigutamine jätab teise paigale ja kui operandi liigutatakse, kuvatakse uuendatud Boole'i ​​tulemus. Lihtsate mudelite või kiirete masinate puhul tehakse seda sageli reaalajas.

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

Boole'i ​​toimingu kuvamisvalikute mõistmine on täitmisel võtmetähtsusega interaktiivsed muudatused. Boole'i ​​toimingu tulemust kuvatakse vaikevalikuga Tulemus. Kui valite suvandi Operandid, kuvatakse nii operandid A kui ka B, nagu poleks Boole'i ​​toimingut sooritatud. Täielikult kaardistatud operaand peidab Boole'i ​​tulemuse, seega peate mingil määral pimesi töötama. Praktikas on parim kombinatsioon valida Tulemus ja lubada suvand Show Hidden Ops. 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 Boole'i ​​objektid

Saate ühe objektiga teha 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 Boole'i ​​liitobjekti A-operandiks. Iga kord, kui objektiga tehakse Boole'i ​​toiming, luuakse tegelikult uue Boole'i ​​objekti algne operand. See määratleb "tõve puu", mis koosneb üksikutest okstest – väga lineaarsest sammudest. Igale sooritatud Boole'i ​​toimingule 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 kera, seejärel silindri ja lõpuks koonuse.

NÕUANNE Boole'i ​​puusse sügavamaks sukeldumiseks jätkake operandi A valimist ja liikuge seejärel virnas järgmise Boole'i ​​toimingu juurde. Operandi B virna kasutatakse edasiliikumiseks, kuid ainult operandi A virnaga saab redigeerimisajaloos tagasi liikuda.

Mitme Boole'i ​​toimingu üksteise järel sooritamisel peaksite olema ettevaatlik. Kui toiming on lõpule viidud ja seega komposiit Boole'i ​​objekt on lõpetatud, peate väljuma Boole'i ​​dialoogiboksist või hilisem valik kirjutab äsja tehtud toimingu üle ja eemaldab objekti stseenist. Kuigi see nõuab täiendavaid nuppude klõpsamist, peate liitobjektide loendist väljuma, valides teise geomeetria tüübi (nt teevõrgud) ja seejärel naasma jaotisesse Liitobjektid, et määrata järgmine Boole'i ​​objekt.

Track View's Boole'i ​​puus navigeerides pidage meeles, et see kuvab ainult objekte, mille parameetrid on animeeritud. Kui Boole'i ​​objekt luuakse töötlemata traatraamist või paigast, kuvatakse ainult operandi teisendusi, kuna sellel pole loomisparameetreid, mida seadistada. Kui samale objektile on määratud modifikaator, luuakse muudetud objekti jaoks uus sisend. Asjaolu, et operandil on sama silt, mis Transformil (rohelise kontrolleri kolmnurga asemel sinine modifikaatoriring), võib tekitada segadust. 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õigi teiste objektide definitsioonid sisalduvad B eelmistes operandides.

NÕUANNE Kui neid kasutatakse operandidena, loetlevad Track View primitiivid nende parameetrid üldpealkirja Operandi all. Modifikaatori primitiivi (nt materjal) määramine teisaldab loomisparameetrid muudetud objekti sfääri, mis asub operandi all, koos objekti tüüpi näitava sildiga.

Boole'i ​​omadused

Kui loote Boole'i ​​objekti, salvestatakse ü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 UVW modifikaatorite kaudu määratud projektsioon, saab selle taastada. Kui loote algse objekti või modifikaatori koopiat, kuid mitte eksemplari, määrake pärast Boole'i ​​toimingu sooritamist uus UVW vastendus ja kasutage vastenduse taastamiseks modifikaatori funktsiooni Acquire. Pange tähele, et see toiming ei tööta protseduuriliste projektsiooniülesannete puhul.

Projektsiooni koordinaadid eemaldatakse, kuna Boole'i ​​tulemuse tipud liidetakse alati. Kui aga kavatsete algsed operandid pärast Boole'i ​​toimingu sooritamist poolitada, peaksite nende eraldamiseks kasutama käsku Redigeeri võrgusilma. Kui operandil on ainulaadne materjal või silumisrühmad, aitab see oluliselt eraldamise jaoks servatasandil diskreetimist.

Materjali ID-d on tõenäoliselt kõige väärtuslikum tööriist Boole'i ​​objekti pinna lõpptulemuste haldamisel. Iga operandi määramine eraldi identifikaatoriga materjali modifikaatoriks tähendab, et see on olemas garanteeritud meetod nägude valimine pärast Boole'i ​​toimingute lõpetamist. Kuigi see on materjali määramise alamobjekti jaoks väga kasulik, on operandide salvestamine näovalikutena oluline ka tahkude valimisel silumisrühmade määramiseks ja UVW kaardistamise modifikaatorite valimisel kaotatud katvuse taastamiseks.

Mõnikord sisaldab Boole'i ​​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 kombineerimisest nii, et silumist ei saa toimuda. Kui seda tüüpi defektid on nähtavad, rakendage redigeerimise võrgusilma modifikaatorit, valige kõik tipud ja teostage Weld Selected (ühendamine valitud). Kui vead ei kao, on vaja analüüsida silumisrühma määranguid (enne või pärast Boole'i ​​operatsiooni).

Enamikul juhtudel on palju lihtsam valida kriitilisi piirkondi enne, kui need muutuvad Boole'i ​​toimingu osaks. Kui teate, milline mudeli osa vajab unikaalset silumist (näiteks filee joonisel 11.5), määrake neile tahkudele unikaalne silumisrühm või materjali ID, et pärast Boole'i ​​toimingut oleks neil õige silumine.

Viimase arutelu põhjal võib tunduda, et enne Boole'i ​​toiminguga alustamist peate palju mõtlema ja planeerima, kuigi tegelikult võimaldab modifikaatoripinn selle protsessi palju vähem struktureerituks muuta. Praktikas üldine 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

3DS MAXi Boole'i ​​kood on väga üldine ja võimaldab töötada suvaliste pindadega. Selline üldistus tähendab aga seda, et mitte iga objekt ei moodusta kehtivat Boole'i ​​objekti ja et mõnel "päris" tulemusel võib olla artefakte (nt pikad riba servad) või ebasoovitavaid tulemusi. Allpool 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. Pinna ja tulemuseks oleva Boole'i ​​objekti suuna määramisel kasutatakse näonormaale.
  • Raam peab olema õigesti ehitatud; see tähendab, et servad, mis jagavad serva, peavad jagama kahte tippu, kuid serva saab jagada ainult kahe tahuga. (Viimase reegli pöörlemisobjekti tippude sisemised aluspinnad on tüüpiline õudusunenägu.)
  • Veenduge, et kõik tipud on ühendatud. Võib osutuda vajalikuks kõik tipud käsitsi ühendada, kasutades funktsiooni Redigeeri võrgusilma, isegi järjestikuste Boole'i ​​toimingute puhul.
  • Sarnased servad, eriti sama objekti sees, on häirivad ja neid tuleks vältida. Üks hullemaid juhtumeid on samatasapinnalised näod, mis on vastamisi (seda on lihtne luua nullkõrgusega primitiivi konstrueerimisega).
  • 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 korraga edukalt töötada ainult üks element.
  • Kui toiming ebaõnnestub, lülitage väljastamise allosas välja suvand Optimeeri tulemust, et ei arvutataks viimast samatasapinnaliste tahkude kontrollimist. Lubatud suvand Optimeeri tulemust võib sageli põhjustada valesid tulemusi.
  • Kui toiming ikka ebaõnnestub või tekitab poolitatud servi, proovige operandide pisut häälestada.
  • Muutke operandi detailsust, eriti regioonis, mis on kehtiva Boole'i ​​operatsiooni jaoks lokaalne.

Ärge laske sellel kontroll-loendil hirmutada Boole'i ​​toiminguid vältima. Enamik neist valikutest töötab esimesel katsel, eriti kui geomeetria järgib kolme esimest reeglit, mis tõenäoliselt kehtib geomeetria loomisel 3DS MAXis.

Animatsioonide tegemisel Boole'i ​​toimingutega võite ühes või kahes kaadris kogeda äkilist "sähvatust" või "rappumist" – tõenäoliselt selle põhjuseks on Boole'i ​​toiming, mis ebaõnnestus või selles ühes kaadris tekkisid kummalised servad. Arvestades Boole'i ​​operatsiooni kahju ja mõju animatsioonile, tasub Boole'i ​​tulemuse analüüsimiseks kulutada aega kaadrist kaadrisse liikumiseks. Kui ilmneb olukord, kus renderdamine ebaõnnestub, kohandage tulemuse parandamiseks veidi selle kaadri geomeetriat ja jätkake tööd. Kui teil on vaja palju muudatusi teha, on parem määrata operandi asukoha rada lineaarsele kontrollerile ja kohandada peaaegu iga kaadrit.

Lõikamine Boole'i ​​lahutamisega

Boole'i ​​lahutamise toimingud on kõige sagedamini kasutatavad toimingutüübid ja seetõttu vaiketehted. Lahutustehteid võib mõelda kui "hammustada", "skulpeerida", "lõigata", "eemaldada", "puurida", "tembeldada" – mis iganes analoogia on kõige mõttekam.

Skulptuuri edukas loomine Boole'i ​​operatsiooni abil algab mõistmisest, milline peaks olema lõplik lahutav kuju. See viib ideeni, millist geomeetriat on konkreetse mustri täitmiseks vaja. Pärast lahutamistoimingute sagedast sooritamist 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 "ruuteri tükiks", mis loob esimesele objektile konkreetse "soonde". Boole'i ​​lahutamine on ka hea, kui mitte põhiline meetod olemasolevate objektide filee ja taande loomiseks.

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

Treppide loomine uutes objektides Boole'i ​​ristmiku abil

Boole'i ​​ristmik loob objekti, mis muidu "lõigataks", kasutades Boole'i ​​lahutamise operatsiooni. 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.

Boole'i ​​ristmiku üks peamisi kasutusviise on Boole'i ​​lahutamise operatsiooniga "valitud" taastamine. Mõnikord võiksite animatsioonis kasutada osa, mis "põrandale kukkus". Võib osutuda vajalikuks näidata detaili, mis on tembeldatud, näiteks metalltoorist. Selleks kopeerige originaalobjektid ja tehke kaks Boole'i ​​toimingut, luues nii "lõigatud" objekti ja selle, mis "lõigati".

Modelleerimine Boolean Unioniga

Operatsioon Boole'i ​​liitühendab kaks operandi ja eemaldab kõik kattuvad geomeetriad. Enne liitumist peaksite hoolikalt kaaluma, kas peate ühenduse looma. Kui ristmik on nähtav, on liite kasutamine õige valik. Kui kahe objekti ristumiskoht on peidetud, on parem lasta objektidel lihtsalt ristuda. IN üldine juhtum Kasutage ühendust, kui peate jätkama rühmade silumist läbi vuugi. Sel juhul on Boole'i ​​liit lihtsalt esimene samm keerulisemas modelleerimisjärjestuses.

Boole'i ​​konkatenatsiooni kasutatakse kõige enam objektide puhul, mis peavad näima "tahked". Pind suletud, uurige sisemine struktuur ei ole vajalik, seega on objekt ainult ühe serva paksune. Paljudel juhtudel tehakse lahutamise efekti saavutamiseks Boole'i ​​konkatenatsioon. Üks operaand asetatakse teise peale, võimaldades viimast kasutada muudel eesmärkidel, ilma et see kahjustaks pealepandavat operandi. See toiming võib olla kasulik, kui ülekatteobjektil on konkreetne kuju, mida soovite teise objektiga seostada.

Boole'i ​​konkatenatsiooni kasutatakse ka kahe elemendi loomiseks, mida saab üksteisest eraldada, kasutades võrgusilma redigeerimise funktsiooni Detach. Kui Boole'i ​​liitumistoimingut kasutatakse objektide redigeerimiseks, mille geomeetria kattub ühe korra, siis traatraami ei looda. Kui saadud objektid on eraldatud, tekib traatraami auk, kus objektid ühinevad. Sest tõhus kasutamine Selle meetodi puhul on kõige parem määrata igale operandile kordumatu materjali ID#, et saaksite eraldamise ajal hõlpsasti valida nägusid materjali ID# järgi.

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

Lihtsaim loogiline tehe on Võrdsetehe. 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 rida.

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

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

Riis. 3.79. Tühik operatsiooni "Võrdne" jaoks

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

Seejärel kirjutage veel üks määramislause, kuid nii, et tehte Võrdsed hõlmaks erinevad numbrid. 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. Sõna "tõene" ja "vale" tähendus

Seda näete, kui neid kahte võrreldakse identsed numbrid, on tulemus Tõene. Ja kui võrreldakse erinevaid numbreid, on tulemus Vale. Lisaks on mõlemad need väärtused Boolean tüüpi (rõhuasetus tähel "y").

Sisseehitatud keeles on päris palju loogilisi tehteid, nagu elus ikka. Kõik need on intuitiivsed ja nende kasutamist pole eriti vaja harjutada. 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õrdlustoimingud

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 kui/vähem) saab rakendada ainult kahele numbrile, kahele stringile või kahele kuupäevale.

Selles jaotises ei esitata näiteid võrdlustehitajatega. Kuid kui olete If-lausega tuttavaks saanud, on teil võimalus harjutada erinevate võrdlusoperaatorite 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 Boolean tüüpi väärtustega. See tähendab väärtustega Tõene ja Vale.

Praegu 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 jaoks peate kirjutama Boole'i ​​väärtused otse programmi teksti, st kasutama literaale. Niisiis näevad Boole'i ​​tüüpi literaalid väga lihtsad välja. Väärtus True on tähistatud tõene ja väärtus Väär on 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. Sõnasõnaline väärtus "True"

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

Riis. 3.82. Literaalne väärtus "False"

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 kui te äkki soovite, ei saa te selle nimega muutujat luua.

Esimese Boole'i ​​operatsiooni tutvustamiseks looge kaks muutujat: ICan Swim ja There Is A Sea Near. Andke neile väärtused, mis tegelikult eksisteerivad. Ja näiteks raamatus annan neile väärtuse Tõene (joonis 3.83).



Riis. 3.83. Muutujad "Ma oskan ujuda" ja "Läheduses on meri"

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

Esmalt proovige seda tavaliste sõnadega öelda. Tõenäoliselt selgub, 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 AND-operatsiooni. Saate selles näites ise kontrollida, kuidas see toimib, muutes muutujate väärtusi.

Meres ujute ainult siis, kui see on läheduses ja oskate ujuda. Kui merd lähedal pole, siis pole lihtsalt kuskil ujuda. Ja kui te ei tea, kuidas ujuda, siis ei õnnestu teil ka. See on väga ohtlik ja 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 IHaveABoat ja IHaveARaft. Saate neile anda mis tahes väärtused. 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 suudad üle järve ujuda või mitte.

Esmalt proovige seda tavaliste sõnadega öelda. Tõenäoliselt selgub, et "kui mul on parv või paat, siis võin ujuda üle järve."

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

Riis. 3.86. VÕI operatsioon

Sama asja ütlemiseks manustatud keeles kasutatakse operaatorit VÕI. Selles näites saate ise kontrollida, kuidas see toimib, muutes muutujate väärtusi.

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

Aga kui teil pole paati, vaid parv, kas saate? Jah, sa saad.

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

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

Nüüd muutke oma näide keerulisemaks ja mõistke, et ühes avaldises saab kasutada mitut Boole'i ​​operaatorit.

Looge kolm muutujat: Oskan ujuda, Läheduses on meri ja Läheduses on bassein. Andke neile väärtused, mis tegelikult eksisteerivad. Ja raamatus ei tee ma jällegi asju keeruliseks ja omistan neile väärtuse Tõene (joonis 3.87).

Riis. 3.87. Muutujad "Ma oskan ujuda", "Läheduses on meri" ja "Läheduses on bassein"

Ja küsimus, mille lahendate, on peaaegu sama. Millega võrdub muutuja IWillSwim?

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

Riis. 3.88. Muutuja "I Will Swim"

Esmapilgul tundub, et kõik on korras. Aga me peame kontrollima.

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

Riis. 3.89. "Ma ujun = tõsi"

Programm ütleb teile, mida te ujute. See osutub mingiks "ohtlikuks" programmeerimiseks. Sellise programmeerimisega ei lähe uppumine kaua aega!

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

Sa lihtsalt ei võtnud arvesse, et kui ühes avaldises esineb mitu Boole'i ​​operatsiooni, on neil konkreetne täitmisjärjekord. Täpselt nagu see oli aritmeetiliste tehtetega +, -, * ja /.

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

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

Riis. 3.90. Väljendi hindamise järjekord

Kõigepealt tehti JA-operatsioon, mis andis vastuseks False. Ja siis OR-operatsioon, mille tulemuseks oli Tõde.

Tegelikult on selle väljendi puhul teie jaoks olulised kaks asja. Mida saab ujuda ja mida süüa, kus ujuda. Kuid see, kas see on meri või bassein, pole nii oluline.

Sellepärast õige otsus on lähedal Seal on meri VÕI läheduses on sulgudes bassein (joonis 3.91). Proovi.

Riis. 3.91. "Ma ujun = vale"

Seejärel hindab platvorm esmalt sulgudes olevat avaldist. See tähendab, et ta uurib, kas ujuda on kuskil või pole kuskil. Ja siis uurib ta teie ujumisoskuse kohta (joonis 3.92).

Riis. 3.92. Väljendi hindamise järjekord

Selle näite tugevdamiseks muutke tingimust veidi. Looge kolm muutujat: Oskan ujuda, Läheduses on meri ja Läheduses on vann. Andke neile väärtused, mis olid eelmises näites: Väär, Tõene ja Tõene (joonis 3.93).

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

Ja peate arvutama muutuja nimega I Will Swim. 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 ujun = tõde"

Käivitage 1C:Enterprise silumisrežiimis ja vaadake, milline on tulemus, kui muudate muutujate väärtusi.

Miks ei olnud sel juhul sulgusid vaja, kuigi näide näeb välja väga sarnane eelmisele? Sulgusid polnud vaja, sest loogikatehete “loomulik” järjekord selles avaldises sobib sulle päris hästi (joonis 3.95).

Riis. 3.95. Väljendi hindamise järjekord

Tõepoolest, ujumisoskus on oluline ainult siis, kui olete merre sisenemas. Kui soovite vannis käia, ei pea te teadma, kuidas ujuda.

Seetõttu on igati õige, et esmalt tehakse JA-operatsioon ning selgitatakse välja, kas meres ujuda saab. Ja siis kontrollitakse vanni olemasolu, mille kasutamine ei eelda ujumisoskust.

Kokkuvõtteks peame ütlema veel ühe Boole'i ​​operatsiooni kohta - EI operatsiooni. See on väga lihtne. See tagastab Boole'i ​​väärtuse, mis on vastupidine olemasolevale.

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 see, mis on sulgudes;
  • seejärel toiming EI;
  • seejärel operatsioon AND;
  • seejärel OR-operatsioon.

Juhend "Kui"

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

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

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

Kuid tegelikkuses näevad enamik programme teistsugused välja. Programmi käivitamise ja lõpetamise vahel võib programmi täitmine läbida palju erinevaid teid (joonis 3.98).

Riis. 3.98. Palju teid punktist A punkti B

Selle jaoks on palju erinevatel põhjustel. Näiteks sõltub see sellest, millised andmed on juba programmis. Kui kõik vajalikud andmed on olemas, toimub täitmine ühte rada. Kui mõned andmed puuduvad, valige mõni muu tee.

See sõltub ka sellest, mida soovite selle tulemusel saada. Kui soovite oma elektroonilisest päevikust teada saada, kas homme on matemaatikatund või mitte, siis see on üks võimalus, lihtne. Aga kui soovite saada tunniplaani terveks nädalaks, näidates ära klassiruumid, õpetajad ja mis on määratud, siis on see teistsugune, raske tee. Kuna programm peab palju ümber töötama erinevad kohad ja kogume teie jaoks kogu teie soovitud teabe.

Just selleks, et suunata programmi täitmine ühte või teist teed pidi, on If-käsk olemas. See näeb välja väga lihtne (joonis 3.99).

Riis. 3.99. Juhend "Kui"

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

Sõnad If, Then ja EndIf on selles juhendis kohustuslikud. Sõnade Kui ja Siis vahele kirjutatakse loogiline avaldis. Ja EndIf näitab, kus tingimusest sõltuvad juhised lõpevad.

Et näha, kuidas see toimib, tehke väike näide. Loo muutuja ja kirjuta sinna oma vanus. Seejärel looge veel üks muutuja I'mGoingToKindergarten ja määrake selle väärtuseks Tõene. Kuid looge see muutuja ainult siis, kui te pole veel kooliealine. Segaduste vältimiseks eeldame, et kooliiga algab 7-aastaselt.

Kui teete oma näite, võrrelge seda joonisel 3.100 olevaga.

Riis. 3.100. Näide

Seadke murdepunkt reale Kui..., käivitage 1C:Enterprise silumisrežiimis ja vaadake avaldise MyAge väärtust< 7 (Shift + F9) (рис. 3.101).

Riis. 3.101. Väljendi "Minu vanus" tähendus< 7»

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

Kuna avaldis on väär, peab platvorm vahele jätma kõik If-lause sisse kirjutatud laused. Kontrollige seda, kasutades samm-sammult täitmist (F11). Tehke üks samm (joonis 3.102).

Riis. 3.102. Üks täitmise samm

Tõepoolest, platvorm hüppab EndIfi reale. Ja kui astute uuesti, peatub see protseduuri lõpu real. Sel juhul on muutuja YaIduVKindergarten väärtus Undefined, kuna seda käsku ei täidetud ja sellist muutujat isegi ei loodud.

Nüüd vaadake, kuidas platvorm käitub, kui avaldis on tõene. Selleks ei muuda te programmi teksti. Kasutate silumise ajal muutujate väärtuste muutmise võimalust.

Selleks peate esmalt taaskäivitama silumise. Selleks täida käsk Debug – Restart (joon. 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 lahtrit väärtusega 25 (joonis 3.104).

Riis. 3.104. Muutuja väärtuse muutmine

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

Edaspidi on MyAge muutuja väärtus võrdne 6-ga. Ja saate jätkata silumist samamoodi nagu varem.

Otsige üles väljendi Minuvanus tähendus< 7. Теперь оно будет равно Истина (рис. 3.105).

Riis. 3.105. Väljendi "Minu vanus" tähendus< 7»

Astu üks samm. Täitmine läheb If-käsu “sisse” (joonis 3.106).

Riis. 3.106. Üks täitmise samm

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 olete alla 7-aastane. Kuid kujutage ette, et peate tegema otsuse kahe võimaluse vahel. Kui olete alla 7-aastane, lähete lasteaeda. Kõigil muudel juhtudel lähete kooli. Kuidas ma saan seda sisseehitatud keeles kirjutada?

See osutub väga lihtsaks. Selleks kasuta märksõna Else (joonis 3.107).

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

Muutke näidet nii, et selle töö tulemusena loote kaks muutujat: ma lähen lasteaeda ja ma lähen kooli. 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, kas näide töötab õigesti erinevad tähendused vanus. Muutke silumise ajal vanust.

Väga sageli juhistes Kui analüüsitakse mitte ühte, vaid mitut tingimust. Näiteks ühel ilusal hommikul ärkasite ja meenus, et peate õppima minema. Kuid te ei mäleta, kuhu täpselt: lasteaeda, kooli või kolledžisse.

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

Selle algoritmi sisseehitatud keeles kirjutamiseks vajate veel ühte märksõna - MuiduIf (joonis 3.109).

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

Teie näites tuleb 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 näitate, et kõigil muudel juhtudel lähete ülikooli. Proovige ise näidet teha.

Tulemuse kontrollimiseks võrrelge seda joonisega 3.110.

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

Silumisrežiimis minge läbi Ifi juhise erinevad harud ja vaadake, kuidas see töötab.

Näete, et If-lauses määratud avaldisi hinnatakse ja sõelutakse ükshaaval. 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 avaldise kontroll ei jõudnud, lihtsalt ei täideta.

See on If-lause omadus, mida tuleb meeles pidada ja sellega arvestada. Kui avate kohalikud muutujad, näete, et pärast näite käivitamist ei pruugi muutuja YIduVIInstitute olla defineeritud. Näiteks kui teie vanus on 15 (joonis 3.111).

Riis. 3.111. Muutuja "YaIduVInstitute" ei ole määratletud

Ja kui vanus on 20, siis muutujaid YaIduToKindergarten ja YaIduVSchool 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õni neist muutujatest puudub, ei saa teie programm töötada.

Mis on sellest olukorrast väljapääs? See on iga juhise haru tüütu ja hoolikas. Kui teete ette kõigi muutujate loomise, mida võib vaja minna? Ei.

On palju lihtsam ja mugavam lahendus. Vahetult enne avaldust Kui loote kõik vajalikud muutujad. Ja määrate neile mõne standardväärtuse - "vaikeväärtuse". Näiteks vale.

Riis. 3.113. Teine näide variant

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

Igas vanuses 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 ütles, et muutujate nimed peaksid olema mugavad ja arusaadavad. Ta ütles, et väljendid tuleks kirjutada selgelt ja "loetavalt". Nüüd on hea võimalus rääkida sellest, milline peaks teie programmi tekst välja nägema.

Tõenäoliselt olete juba harjunud, et platvorm ise värvib teie programmi sõnu. Ja see on mugav. Võib-olla märkasite ka, et platvorm ise taandub Ifi avalduse kirjutamisel.

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 ilmu kursor mitte E-tähe alla, vaid väikese nihkega paremale. Seda nihet nimetatakse süntaktiliseks taandumiseks. See aitab teil programmi teksti paremini ja lihtsamalt lugeda. Kuna ühe haru sees asuvad "alluvad" käsud on visuaalselt esile tõstetud (joonis 3.116).

Riis. 3.116. Seal on süntaksi taane

Vaata, milline jama oleks, kui süntaktilist taanet poleks (joonis 3.117).

Riis. 3.117. Süntaksi taande puudub

Seetõttu on süntaktiline taane programmi oluline ja kohustuslik osa. Seetõttu teeb platvorm seda automaatselt, kui sisestate järjestikused juhised.

Kuid te ei tööta alati nii. Isegi siis, kui teete oma lihtsaid näiteid näed, et pead muutma juba kirjutatut. Sisestage uued read. Kopeerige ühest kohast teise. Sellistel juhtudel ei saa platvorm süntaksit automaatselt taandada. Selle tulemusena võite sattuda sellise tekstini (joonis 3.118).

Riis. 3.118. Katkise vorminguga tekst

Mida temaga teha? Kas liigutada iga rida käsitsi, et see näeks "ilus" välja? See on igav, pikk ja ebahuvitav.

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

Selleks paremklõpsake ülemisel käsuribal paremal asuval tühjal alal (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"Tekst" ja "Format" käsk

See paneel sisaldab käsku Vorming, mida vajate.

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

Riis. 3.121. Alustage teksti esiletõstmist

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

Riis. 3.122. Vormindamist vajav tekst on esile tõstetud

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

Riis. 3.123. Rikkalik tekst

Lisaks süntaksi taandele on ka teisi võimalusi teksti arusaadavamaks muutmiseks. Näiteks üks neist häid viise on tühjade ridade lisamine programmi tekstile. Need võimaldavad jagada teksti mitmeks eraldi semantiliseks plokiks.

Kui võtame näiteks If-juhise, 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

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

Kogenud animaator, esmapilgul tulevase mudeli visandil, määrab, kuidas objekti modelleerida, kuid algaja kasutaja ei saa seda alati teha.

Üks mugavamaid ja kiiremaid modelleerimisviise on kolmemõõtmeliste objektide loomine Boole'i ​​operatsioonide abil.

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

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

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

Kuna 3ds max keskendub anorgaaniliste objektide modelleerimisele ehk arhitektuursele visualiseerimisele ja arvutimängude arendamisele, on Boole'i ​​toimingud asendamatu tööriist iga 3ds max kasutaja jaoks.

Teisest küljest ei sobi need enamuse orgaaniliste objektide loomiseks. Näiteks inimnägu modelleerimine Boole'i ​​operatsioonide abil on peaaegu võimatu.

Vaatame Boole'i ​​tehteid. Joonisel fig. Joonis 3.51 näitab originaalpilti. Rakenduses 3ds max 7 on saadaval nelja tüüpi Boole'i ​​toiminguid.

  • liit Kahe objekti Boole'i ​​liitmise tulemuseks on pind, mille moodustavad selles toimingus osalevate objektide pinnad (joonis 3.52).
  • Ristmik. 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 paigutamine enne Boole'i ​​toimingute sooritamist

Riis. 3.52. Objektid pärast Boole'i ​​operatsiooni Unioni sooritamist

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

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

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

Riis. 3.55. Objektid pärast Boole'i ​​operatsiooni Lõika (lahutamine) sooritamist

Boole'i ​​toimingud tehakse järgmiselt.

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

2. Minge käsupaneeli vahekaardile Loo, valige kategooriast Geometry rida Compound Objects ja klõpsake Boole'i ​​nuppu (joonis 3.56).

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

4. Kasutage nuppu Vali operand B, et valida teine ​​objekt operatsioonis osalemiseks.

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

MÄRGE

Hoolimata asjaolust, et 3ds max 7-s Boole'i ​​toiminguid kasutatakse laialdaselt kolmemõõtmeliste projektide loomisel, on neil mitmeid puudusi ja saadud mudelikesta konstrueerimine esineb sageli vigadega. Sel põhjusel kasutavad paljud 3D-graafika arendajad oma projektides Power Booleansi lisamoodulit. See võimaldab teil luua täpsema geomeetriaga mudeleid, kui standardsete tööriistade abil saab, ning genereerib 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. "Õppetund 6. Propelleri modelleerimine."

Kehadel, nagu ka muudel geomeetrilistel objektidel, saate teha operatsioone - ühe või mitme algse kehaga toimingute komplekti, mis viib uue keha sünnini. Kahe keha üks peamisi tehteid on Boole'i ​​operatsioonid.

Boole'i ​​tehteid nimetatakse kehade ühendamise, lõikumise ja lahutamise operatsioonideks, kuna need sooritavad samu tehteid kehade sisemahtudega (kehade sees asuvate ruumipunktide kogumite kohal). Kehade kombineerimise Boole'i ​​tehteid tähistatakse valemiga , kus on algkehad, S on saadud keha. Kehade ristumiskoha Boole'i ​​tehte tähistatakse valemiga. Kehade lahutamise Boole'i ​​tehteid tähistatakse valemiga. Operandikehade järjekorras nimetame neid esimeseks ja teiseks kehaks.

Riis. 6.6.1. Kaks lähtekeha

Riis. 6.6.2. Kehade ühendamine

Kahe keha ühendamise operatsiooni tulemuseks on keha, mis sisaldab kas esimese või teise keha siseruumalasse kuuluvaid punkte. Kahe keha ristumisoperatsiooni tulemuseks on keha, mis sisaldab nii esimese kui ka teise keha siseruumalasse kuuluvaid punkte.

Kahe keha lahutamise operatsiooni tulemuseks on keha, mis sisaldab punkte, mis kuuluvad esimese keha siseruumalasse, kuid ei kuulu teise keha siseruumalasse.

Joonisel fig. 6.6.1 näitab Boole'i ​​operatsiooni algkehi. Joonisel fig. 6.6.2 näitab kombineeritud kehade töö tulemust, joonisel fig. 6.6.3 näitab ristmiku operatsiooni tulemust, joonisel fig. 6.6.4 ja 6.6.5 näitavad lahutavate kehade toimimise tulemusi.

Lahutavate kehade toimimise saab taandada lõikuvate kehade tööks; Selleks tuleb keerata teine ​​keha pahupidi ja leida selle mahust punktid, mis kuuluvad samaaegselt ka esimese keha ruumalasse. Pahupidi pööratud keha S tähistatakse tähisega

Riis. 6.6.3. Kehade ületamine

Riis. 6.6.4. Keha erinevus

Riis. 6.6.5. Keha erinevus

Kere pahupidi pööramisel sisemised küljed näod muutuvad välimisteks külgedeks ja välimistest sisemised ja tsüklite suunad muutuvad vastupidiseks, mille tulemusena muutub keha siseruumala ruumi osaks, mis varem asus väljaspool keha. . Matemaatiliselt taandatakse lahutamise tehe kehade lõikumistehtele Projekteerimisel kasutab projekteerija liitmise ja lahutamise tehteid (neid võib nimetada erinevalt nt keevitus- ja puuriteheteks), matemaatiline aparaat teostab vastavalt ühenduse ja ristmiku operatsioonid. Kõik Boole'i ​​toimingud sisaldavad palju ühist ja neid teostatakse ühe algoritmi abil.

Kehade ühendamine

Vaatleme kehade kombineerimise Boole'i ​​operatsiooni. Lühidalt võib operatsiooni olemust kirjeldada järgmiselt: peate leidma kehade tahkude ristumisjooned, eemaldama esimese keha osa, mis sattus teise keha sisse ja teise keha osa, mis sattus selle sisse. esimene keha ja ehitage ülejäänutest uus keha. Tinglikult jagame operatsiooni kolmeks etapiks. Esimeses etapis konstrueerime tahkude pindade lõikejooned ja nende põhjal uued servad. Ehitatud uusi servi hakatakse nimetama ristumisservadeks ja kehade servi vanadeks servadeks. Teises etapis määrame uute servade ristumiskohad vanade servadega ja nendes punktides lõikame vanad servad mitmeks servaks. Operatsiooni kolmandas etapis ehitame ümber ristuvate tahkude tsüklid. Pärast seda lisame kehade ristuvatele tahkudele tahud, mis on nendega topoloogiliselt ühendatud. Vaatame kehaehituse etappe üksikasjalikumalt.

Alustame kehade kombineerimise toimimise esimest etappi, konstrueerides esimese keha iga külje lõikejooned teise keha iga küljega, kui neid on. Selleks kasutame näopindade lõikuvat algoritmi.

Olgu esimese keha tahud kirjeldatavad pindade abil

ja teise keha tahke kirjeldavad pinnad

Põhineb esimese ja teise keha tahkude lõikejoontel

(6.6.3)

Ehitame ristmiku servad. Sel juhul anname lõikeservadele esimese keha tahu normaalkorrutise vektorkorrutise suuna teise keha näo normaaliga: Serva suund määratakse märgiga, et ristumisjoone tuletis langeb kokku serva vajaliku suunaga. Näo normaalse positiivse suuna jaoks võtame suuna kehast väljapoole. Näo normaal võib kattuda selle pinna normaaliga või olla vastupidise suunaga, olenevalt nende kokkulangevuse märgist. Joonisel fig. 6.6.6 näitab esimese kere külje ja teise keha kahe külje lõikeservade suundi.

Ristumisservad peavad olema konstrueeritud nii, et need asetseksid täielikult algkehade tahkude tsüklite sees. Ristumisservad võivad läheneda näo servadele ainult nende otstes. Punktides A, B ja C (joonis 6.6.6) tuleb pindade vanad servad jagada kaheks servaks, kuna saadud kehasse kaasatakse ainult osa algsest näost.

Teises etapis lõikame kere vanad servad, mille külge sobivad ristumiskohad. Vana ribi lõikamine toimub ribi aluseks oleva kõvera lõikamisega. Ühest kõverast saame kaks kõverat, mis koos asendavad esialgse servakõvera. Üks neist kõveratest jääb lõikeserva geomeetriliseks kandjaks ning teise põhjal konstrueerime uue serva, mis saab kogu vajaliku info algsest servast. Nagu öeldud, on iga serv üles ehitatud pinna ristumiskõvera (6.1.1) alusel. Pinna ristumiskõver koosneb kahest pinnast ja kahest vastavast kahemõõtmelisest kõverast. Lahkamisele kuuluvad täpselt kahemõõtmelised kõverad kahel erineval pinnal. Nii enne kui ka pärast lahkamist peavad nendel kõveratel olema samad parameetrite määratlusalad ja punktide vastavus kõigi parameetriväärtuste jaoks.

Uue serva ristumispunkte näo vana servaga otsitakse neile ühisel parameetritasandil määratletud kahemõõtmeliste kõverate lõikepunktidena. Sirgete lõikepunktide valemis (4.8.6) on igast servast kaasatud üks kahemõõtmeline kõver, mis sisaldub lõikejoones.

Pinnaparameetriteks olevate servade lõikepunktide parameetrid ja kõverate endi koordinaadid tuleb määrata etteantud täpsusega.

Kui lõigatav serv põhineb üksikute punktidega määratletud lõikekõveral (kahemõõtmelised jooned on katkendlikud jooned ja langevad ruumis täpselt kokku ainult iseloomulikes punktides), siis enne sellise kõvera lõikamist tuleb mõlemasse sirgesse sisestada lisapunktid, mis vastavad kolme pinna ristumispunktidele - kaks pinda, mis asuvad mõlemal pool lõigatud serva, ja teise algse keha pinna pind. Näiteks kui lõigatakse pindade lõikejoon pinnaga, siis tuleb joontesse sisestada täiendavad kahemõõtmelised karakteristikud, mis vastavad pindade ristumiskohale. Kolme pinna ristumisülesanne taandatakse kuue skalaarvõrrandi süsteemi (4.12.5) lahendamisele kuue parameetri suhtes. Lahenduse esialgne lähendus on üsna täpselt teada.

Kuna originaalkehade iga serv on kaasatud kahe kõrvuti asetseva tahu tsüklitesse, siis pärast originaalkehade servade lõikamist on vaja neid tsükleid korrigeerida, võttes arvesse lõikeservi.

Pärast kahte esimest etappi saime teatud viisil orienteeritud lõikumisservade komplekti, mis ühinevad üksteisega ja algkehade servadega ainult tippudes. Järgmiseks peate uuesti üles ehitama ristuvate servade tsüklid.

Kolmas etapp viib Boole'i ​​operatsiooni lõpule. Selleks, et kõik joonisel fig. 6.6.6 tahud lõigatakse osadeks, peate selle tsüklid uuesti üles ehitama ja vastavalt tsüklitele muutma kontuure, mis kirjeldavad näo pinnaparameetrite määramise ala. Joonisel fig. 6.6.7 näitab kahte lõikuvat tahku (õhukesed jooned nooltega näitavad algsete kehade tahkude tsüklite suunda) ja ristumisserva. Joonisel fig. Joonis 6.6.8 näitab nägude osi, mis kaasatakse kehade liitu.

Riis. 6.6.7. Esialgsed keha näod

Riis. 6.6.8. Kärbitud servad

Nooled näitavad keha nägude rekonstrueeritud tsüklite suunda. Iga silmus on servade loend nende ilmumise järjekorras ja nende silmuse servade orientatsioonilippude loend.

Jooniselt on näha, et lõikeservade () aktsepteeritud orientatsiooni korral sisenevad nad negatiivse lipuga esimese keha tahkude tsüklitesse ja teise keha tahkude tsüklitesse positiivne lipp.

Algsete kehade vanad servad, mis säilivad saadud kehas, lähevad ümberehitatud tsüklitesse, säilitades oma lipud. Lõikuvate tahkude tsüklite ümberehitamisel kasutame järgmist algoritmi.

Vaatleme ühte kahest esimese keha juurde kuuluvast ristuvast tahust. Võtame vaadeldava näo suvalise lõikeserva ja alustame sellest tsükli servade loendi koostamist. Lõikeserv peab sisenema esimese keha näotsüklisse negatiivse lipuga, seetõttu on tsükkel esimesele servale vastupidises suunas. Tsükli jätkamiseks otsime ristumisservade ja näo vanade servade hulgast üles kõik servad, mis ühenduvad antud servaga selle algtipus. Leitud äärte hulgast valime selle, mis jääb teistest vasakule (pöörab teiste leitud äärtega võrreldes suurema nurga all vasakule, kui vaadata mööda tsiklit näost väljastpoolt). Valitud serva paneme tsüklinimekirja. Kui valitud serv on vana, siis säilitab see oma lipu tsüklis. Kui valitud serv on lõikeserv, saab see negatiivse lipu. Ristumisservadel on eelisõigus vanemate valitavate servade ees. See tähendab, et kui teistest vasakul on kaks sobivat serva, millest üks on vana ja teine ​​on ristumisserv, siis tuleb tsükli jätkamiseks valida lõikeserv.

Jätkame näotsükli taastamise protsessi kuni tsükli sulgemiseni. See lõpetab järgmise tsükli ehitamise. Kui tsükli koostamisel ei kasutatud kõiki vaadeldava näo ristumisservi, siis alustame mis tahes ülejäänud lõikeservadest teise näo tsükli ehitamist. Ehitame tsükleid ümber, kuni kasutame ära kõik ristumiskohad. Sel viisil konstrueerime üldjuhul esimese keha vaadeldavast näost mitu uut tsüklit.

Näo servade kahemõõtmeliste kõverate abil on mugav otsida ühendusservi ja määrata pöördenurka ristmikul. Sel juhul saate isegi töötada servadega, mis on kokku tõmmatud ruumipunktiks (näiteks serv koonuse tipus või sfääri poolus). Joonisel fig. 6.6.9 näitab, et mitu serva liituvad punktis A uue servaga BA. Sel juhul tuleks lõikeservast BA A alustatud tsükli jätkamiseks valida serv AC.

Sorteerime vastloodud tsüklid rühmadesse, millest igaüks koosneb välisest tsüklist ja selle sisemistest tsüklitest. Kõnealusel näol võib olla üks või mitu vana tsüklit puutumata. Me nimetame puutumatuks näo vanu tsükleid, millest rekonstrueeritud tsüklitesse ei kuulunud ühtegi serva. Vanade puutumata tsüklite hulgast valime välja need, mis tuleb lisada rekonstrueeritud näo kirjeldusse. Need on näo vanad sisemised tsüklid, mis asuvad uute väliste tsüklite sees. Samuti peame kindlaks määrama, kas vana välisserva silmus tuleb tulemusse kaasata, kui see jääb puutumata. Seda tuleb teha, kui mõne uue sisemise ahela jaoks ei leita uut välimist ahelat ja need asuvad vana välimise ahela sees. Tsükleid sorteeritakse mugavalt, kasutades igale tsüklile vastavaid kahemõõtmelisi kontuure.

Kui välimiste tsüklite sorteerimise tulemusena saadi rohkem kui üks, tähendab see, et toimingu tulemusel moodustati algsest näost mitu tahku. Joonisel fig. 6.6.10 a - 6.6.13 a näitavad esimese keha esialgsete nägude valikuid.

Joonisel fig. 6.6.10 b-6.6.13 b. kuvatakse lisatud ristumisservadega näod (ristmiku servad on esile tõstetud). Joonisel fig. 6.6.10 in - 6.6.13 in näitavad operatsiooni tulemusena tekkinud nägusid.

Riis. 6.6.10. Algne nägu (a), nägu c. lõikumisservade (b) lisamisega saadakse operatsiooni (b) tulemus

Riis. 6.6.11. Algne tahk (a), pind, millele on lisatud lõikeservad (b), toimingu tulemus (c)

Riis. 6.6.12. Algne tahk (a), pind, millele on lisatud lõikeservad (b), toimingu tulemus (c)

Riis. 6.6.13. Algne tahk (a), pind, millele on lisatud lõikeservad (b), toimingu tulemus (c)

Joonisel fig. 6.6.10 lõigati kahe tsükliga tahk, et saada üks tahk ühe tsükliga. Joonisel fig. 6.6.11 kahe tsükliga nägu andis kaks nägu. Joonisel fig. 6.6.12, oli vaja kasutada vanu välimisi ja sisemisi silmuseid. Joonisel fig. 6.6.13 ühest näost saadi kaks tahku, millest ühe jaoks oli vaja kasutada vana välissilmust.

Kirjeldatud tsüklite rekonstrueerimine viiakse läbi esimese keha iga ristuva näo jaoks.

Käsitleme teise keha ristuvaid tahke samamoodi nagu esimese keha nägudega, kuid ühe väikese erinevusega. Ristumisservad peavad sisenema teise keha tahkude ümberehitatud tsüklitesse positiivse lipuga (esimese keha tahkude ümberehitatud tsüklitesse sisenesid negatiivse lipuga). See on erinevus teise keha nägude tsüklite taastamise vahel. Kõik muud toimingud esimese ja teise liidetud keha nägudel on samad.

Oleme liidetud kehade ristuvad servad ümber paigutanud. Lisame need kõik saadud keha kesta. Saadud keha saamiseks ei jää üle muud, kui lisada nendele kehakesta tahkudele need näod, mis ei lõikunud operatsioonis, mis on topoloogiliselt seotud ristuvate tahkudega. Selleks võtame järjestikku uue keha kestas sisalduvad servad ja kaasame servade külgnevad pinnad kesta (kui neid seal pole). Jätkates neid samme kõigi lisatud tahkude servade jaoks, saame saadud keha kesta.

Kehade ületamine

Lühidalt võib kehade ristumiskoha Boole'i ​​operatsiooni olemust kirjeldada järgmiselt: peate leidma kehade lõikejooned, eemaldama esimesest kehast selle osa, mis teise sisse ei sattunud, ja selle osa kehast. teine ​​keha, mis ei pääsenud esimese sisse, ja ehitage ülejäänutest uus keha.

Sellel operatsioonil on palju ühist kehade ühendamise operatsiooniga. Pöördume tagasi joonise fig. 6.6.6. See näitab ristuvaid nägusid: esimese keha üks nägu ja teise keha kaks tahku. Näod lõikavad üksteist nii, et saadud kesta kaasatakse ainult nende nägude osad.

Kehade ristumiskoht hõlmab osa esimese keha näost, mis asub teise keha sees, ja osa teise keha näost, mis asub esimese keha sees (joonis 6.6.14) (kehade liit sisaldab osa esimese keha näoosa, mis asub väljaspool teist keha, ja osa teise keha näost, mis asub väljaspool esimest keha).

Riis. 6.6.14. Allika näod

Riis. 6.6.15. Ümberehitatud kere ristumispinnad

See on peamine erinevus kehade ühendamise ja ristumisoperatsioonide vahel.

Jagame operatsiooni kolmeks etapiks. Ristuvate kehade toimimise esimene ja teine ​​etapp langevad täielikult kokku kombineerivate kehade töö vastavate etappidega.

Kehade ristumisoperatsiooni kolmas etapp viiakse läbi sarnaselt kehade kombineerimise operatsiooni kolmanda etapiga, kuid sellel on üks erinevus lipu osas, millega ristumisservad tsüklitesse sisenevad. Ristumisservad kaasatakse esimese keha tahkude ümberehitatud tsüklitesse positiivse lipuga ja teise keha külgede ümberehitatud tsüklitesse - negatiivse lipuga (kehade ühenduses ristumiskoha lipud tsüklite servadel on vastupidine tähendus). Kõik muud toimingud mõlema keha näol on mõlema toimingu puhul samad.

Keha erinevus

Lühidalt võib kehade lahutamise Boole'i ​​operatsiooni olemust kirjeldada järgmiselt: peate leidma kehade ristumisjooned, eemaldama esimese keha osa, mis langes teise sisse, ja teise keha osa, mis seda tegi. mitte kukkuda esimese sisse ja ehitada ülejäänutest uus keha.

Kehade lahutamise Boole'i ​​tehte taandatakse Boole'i ​​operatsiooniks, mis ristub redutseeritava kehaga ja lahutatakse keha tagurpidi. Esialgsest kehast pahupidi pööratud keha saame nägude normaalide suundi ja nägude tsüklite suundi ümber orienteerides. Näonormaali suuna ümberorienteerimine toimub pinnanormaali ja selle näo normaalse kokkulangevuse märgi muutmisega. Näotsükli suuna ümberorienteerimine toimub servade loendi ümberehitamise teel (muutades vastupidises järjekorras servade järjestus loendis) ja servalippude asendamine loendites vastandlikega. Pööratud keha puhul on siseruumala ruumi osa, mis asub väljaspool selle kesta. Seetõttu sisaldab taandatud keha ja tagurpidi pööratud alamosakeha ristumiskohas saadud kest seda osa redutseeritud keha mahust, mis jääb alamkehast väljapoole.

Ristuvad ribid.

Kõige töömahukam ja teatud täpsust nõudev Boole'i ​​toimingute tegemise protsessis on ristumisservade ehitamine. Ristumisservadel ei tohi olla osi, mis ulatuvad väljapoole näo piire, need peavad tingimata liituma kas omavahel või pindade vanade servadega. Kui pinna ristumisoperatsioon on õigesti sooritatud, on need tingimused täidetud. Ristumisservad ei tohi ristuda üksteisega kaugemal kui nende äärmised punktid.

Enamasti uued servad üksteist ei ristu, kuid mõnel erijuhul on see võimalik. Joonisel fig. 6.6.16 on kujutatud kaks ühesuguse läbimõõduga silindrilist keha, mille teljed ristuvad – silindrite rist. Nende kehade Boole'i ​​ühendusega on võimalik olukord, kus konstrueeritakse ainult kaks suletud lõikeserva. Sellistel servadel on kaks lõikepunkti: A ja B, millest vähemalt üks ei lange kokku servade tippudega, vaid asub kuskil serval. Ribide ristumiskohad asuvad silindrite kokkupuutepunktides. Need servad tuleb lõigata punktides A ja B ning täpsustada nende osade orientatsiooni, kuna sel juhul pindade kokkupuutepunktist möödumisel saadakse nendele normaalsete vektorkorrutis, mida mööda uued servad on. orienteeritud, muudab oma suunda vastupidiseks. Uute servade ristumiskoha saab tuvastada ristumisjoone moodustavate pindade kõverate lõikepunktide järgi.

Riis. 6.6.16. Punktides A ja B langevad tahkude normaalid kokku

Sobivad servad.

Kirjeldatud Boole'i ​​toimingute sooritamise algoritm töötab õigesti, kui lõikumisservad ei lange kokku algkehade servadega. Vastasel juhul vajab see selgitust. Vaatame näiteid.

Boole'i ​​operatsioonides on võimalik juhtum, kui ühe keha mis tahes tahk lõikub teise kehaga piki selle serva. Samuti on võimalik, et konstrueerides ühe keha tahkude ristumiskoha servi teise keha tahkudega, saame kaks uut serva, mis ühtivad ruumiliselt üksteisega ja ühe keha servaga. Kõik servad on erinevad, kuna nendega ühinevad erinevad näod. Joonisel fig. 6.6.17 näitab kahte keha, mille puhul Boole'i ​​operatsiooni sooritamisel langevad lõikeservad kokku väiksema keha servadega. Üldist algoritmi järgides saame sel juhul kaheksa ristumisserva, millest pooled tuleks ära jätta (või mitte konstrueerida).

Reegel ristumisservade kohta.

Kui on ristumisservi, mis langevad kokku algkehade tahkude servadega ja mõnel muul juhul, teostame järgmise kontrolli. Konstrueerime mõlema lõikuva külje tasapinnal kaks vektorit, mis on lõikeservaga risti. Joonisel fig. 6.6.18 need on normaalsega näo vektorid ja normaalse näo vektorid. Vektorid pöörlevad vastavatel tasapindadel lõikeservast vasakule ja vektorid vastavatel tasapindadel lõikeservast paremale.

Riis. 6.6.17. Lõikeservade kokkulangevus väiksema keha servadega

Riis. 6.6.18. Nägude ristumiskoht

Riis. 6.6.19. Lõikuvad näod mööda serva

Kui nägu ei ulatu ristumisservast kaugemale (ristmiku serv langeb osaliselt või täielikult kokku keha servaga), siis paneme vastava vektori võrdne nulliga(joonis 6.6.19). Vektoreid ja normaalväärtusi kasutades saame määrata, kas antud lõikumisserva kasutatakse operatsioonis või tuleks see ära jätta. Pöörame tähelepanu järgmisele asjaolule.

Ühendavate kehade töös saame taastada esimese keha esikülje, kui sellel on jätk ristumisservast paremal väljaspool teist keha, ja teise keha esikülge, kui sellel on jätk kehale. ristumisservast vasakul väljaspool esimest keha.

Seega peavad kehade ühendamise Boole'i ​​operatsioonis olema täidetud ristumisserva tingimused:

Vastasel juhul ei tohiks kõnealust lõikeserva konstrueerida ühendavate kehade Boole'i ​​operatsioonis (kui see on konstrueeritud, tuleks see välja jätta).

Kehade ristumiskoha Boole'i ​​operatsioonis saame taastada esimese keha esikülje, kui sellel on jätk teise keha sees olevast lõikumisservast vasakul, ja teise keha näo, kui sellel on jätk. esimese keha sees olevast ristumisservast paremal. Seega peavad kehade ristumiskoha Boole'i ​​operatsioonis olema täidetud ristumisserva tingimused:

Vastasel juhul ei tohiks kehade ristumiskoha Boole'i ​​operatsioonis kõnealust lõikeserva konstrueerida (kui see on konstrueeritud, tuleks see välja jätta).

Nagu juba mainitud, on ristumisservadel eelisõigus kere vanade servade ees, et need ümberehitatud tsüklisse kaasata.

See punkt kuulub keha siseruumi. Muidu ei.

Kattuvad servad.

Boole'i ​​operatsioonides võib üsna sageli kohata juhtumeid, kus kahe algse keha mõned tahud langevad osaliselt kokku. Joonisel fig. Joonisel 6.6.20 on kujutatud kahte keha, mille osa tahke kattub osaliselt.

Riis. 6.6.20. Kehade kattuvad näod

Riis. 6.6.21. Kehade ühendamine

Sel juhul ei kaasata Boole'i ​​tulemusesse kõiki tahkude lõikepunktide servi; mõned servad tuleks ära jätta (või mitte ehitada). Kehade kombineerimise tulemus on näidatud joonisel fig. 6.6.21.

Sarnane olukord tekib kahe sama raadiusega koaksiaalsilindri Boole'i ​​operatsiooni sooritamisel ja paljudel muudel juhtudel. Näod võivad kattuda täielikult, osaliselt või ainult piki ühte joont. Osaliselt kattuvate tahkude normaalid peavad ühistes punktides olema samas suunas. Kattuvad näod on need, mida saab ühele üle kanda ühine pind. Selliseid nägusid võib olla rohkem kui kaks. Kui kehaoperandidel on kattuvad tahud, tuleb kontrollida nende tahkude lõikepunkti kõiki servi, et näha, kas need on Boole'i ​​tulemuses olemas. Liitvate kehade töös vajame ainult neid kattuvate tahkude lõikeservi, mille külgnevatel tahkudel on jätk väljaspool üht keha. Lõikuvate kehade töös vajame ainult neid kattuvate tahkude lõikeservi, mille külgnevad tahud ulatuvad ühte kehadest.

Kehade kattuvate tahkude tsüklid tuleb ümber ehitada, kasutades veidi teistsugust algoritmi kui teiste tahkude puhul. Esiteks tuleb nende tahkude kõik servad viia ühele ühisele toele (ühe kattuva külje pinnale). Ühendatavate kehade puhul ei kaasata saadud kehasse esimese keha kattuvate tahkude vanu servi, mis asuvad teise keha sees, ja teise keha kattuvate pindade vanu servi, mis asuvad esimese keha sees. Lõikekehade kasutamisel ei arvestata ka esimese korpuse kattuvate pindade vanu servi, mis asuvad väljaspool teist korpust, ja teise korpuse kattuvate pindade vanu servi, mis asuvad väljaspool esimest korpust. saadud keha.

Hakkame konstrueerima teatud tsüklit kattuvatest tahkudest servaga, mis peaks kindlasti olema tulemuses. Tsükli jätkamiseks leiame näo lõikeservade ja vanade allesjäänud servade hulgast kõik servad, mis ühenduvad antud servaga selle vastavas tipus. Leitud äärte hulgast valime selle, mis jääb teistest paremale (pöördub teiste leitud äärtega võrreldes paremale, kui vaadata mööda tsiklit näost väljastpoolt). Valitud serva paneme tsüklinimekirja. Algoritmi erinevus seisneb selles, et tsüklit jätkates valime kõige parempoolsema (mitte vasakpoolseima) serva.

Mitme kestaga kehad.

Kui mõnes operandi kehas on tühimikud ja vastavalt sellele kirjeldatakse seda mitme kestaga, siis tuleb operatsioonist puutumata sisemistest (välistest) kestadest kontrollida, kas Boole'i ​​tulemus sisaldub kestas. Üldiselt võib saadud kehal olla ka mitu kesta.

Kereehituse puu.

Boole'i ​​operatsioonid kehadega näitavad vajadust kaasata kehade konstrueerimiseks topoloogilised mõisted.

Eelmistes lõikudes käsitletud kehasid nimetatakse lihtsateks, erinevalt operatsioonide tulemusel saadud kehadest, mida nimetame keerukateks. Andmete struktuur lihtsad kehad sisaldab minimaalset teavet, mille põhjal saab konstrueerida kõik keha näod. Boole'i ​​operatsiooni tulemusena saadud keha andmestruktuuri paneme algkehade andmestruktuurid ja Boole'i ​​operatsiooni tüübi. Selle teabe põhjal saab alati ehitada kehakestasid. Seega sisaldab Boole'i ​​toimingute korduva täitmise tulemusel saadud keha andmestruktuur konstruktsioonipuud. Saadud keha asub puu juurtes ja selle oksad algavad lihtsatest kehadest.

Puu näide on näidatud joonisel fig. 6.6.22. Puu sõlmed sisaldavad kehasid. Puul on mitu astet. Kehadevahelised toimingud on tähistatud vastavate siltidega. Toiminguid tehakse sama tasandi kehade vahel.

Riis. 6.6.22. Kereehituse puu

Konstruktsioonipuu kujul olevat kehaandmete struktuuri saab kasutada kõikide kehade puhul - nii mõne toimingu tulemusena saadud kehade kui ka lihtkehade puhul.

BOOLE OPERATSIOON

Boole'i ​​toiming on loodud kahe või enama olemasoleva keha põhjal uue keha loomiseks. Operatsiooni tulemusena tekib uus keha, mis on kombinatsioon algsetest kehadest. Lähtekehade kombineerimiseks on kolm võimalust: liitmine, lahutamine ja lõikumine. Operatsiooni "liitmine" tulemuseks on keha, mis sisaldab osa, mis on ainult esimesel kehal, osa, mis on ainult teisel kehal, ja osa, mis on mõlema keha jaoks ühine. Lahutamise toimingu tulemuseks on keha, mis on teise keha lahutamine esimesest ja koosneb osast, mis on ainult esimesel kehal. Operatsiooni "ristmik" tulemuseks on keha, mis on kahe keha ristumiskoht ja koosneb ainult mõlema keha ühisest osast.

Boole'i ​​operatsiooni määramine

Boole'i ​​operatsiooni määramiseks kasutage käsku "3B: Looge Boole'i ​​operatsioon". Käsu kutsumine:

Pärast käsu kutsumist muutub see võimalik valiküks kahest võimalusest:

Valige mitu toimingut.

Iga suvand määrab, kuidas Boole'i ​​toiming luua. On kaks võimalust

- Kahel kehal põhineva Boole'i ​​operatsiooni loomine (valik )

- mitmel kehal põhineva Boole'i ​​operatsiooni loomine (valik )

Käsu kutsumisel on alati aktiveeritud valik “Vali esimene keha”.

Käsu kutsumiseks on veel üks võimalus: Liigutage kursor ühele mudelitoimingutest ja

klõpsake ja valige kuvatavas menüüs "Loo". Ilmub loend võimalikest käskudest, mida saab toimingu valimisel välja kutsuda. Valige "Loo Boolean Operation" ja valitud keha on käsu esimene valitud element.

3D modelleerimine

Sel juhul saate luua toimingu ainult kahe keha põhjal.

Kahe keha põhjal Boole'i ​​operatsiooni loomine

Kahel kehal põhineva Boole'i ​​toimingu sooritamisel peate tegema järgmised toimingud.

1. Valige esimene keha.

2. Valige teine ​​keha.

3. Valige tehte tüüp (liitmine, lahutamine, lõikumine).

4. Täitke sisestus.

Esimene keha valitakse suvandi abil

Valige esimene keha.

Pärast esimese keha valimist on saadaval järgmised valikud:

Valige teine ​​keha.

Tühjendage Boole'i ​​operatsiooni teise operandi valik.

Boole'i ​​operatsioon

Toodud näites on kujutatud detaili joonis, mille jaoks on tehtud vajalikud ruumilised konstruktsioonid ning ekstrusiooni- ja pööramisoperatsioonide abil on loodud kaks keha. Joonistel on kujutatud olukordi, mis tekivad siis, kui erinevatel viisidel sooritades Boole'i ​​operatsiooni. Ülaltoodud joonis (parempoolne pilt) näitab liitmistoimingu tulemust. Selle toimingu tulemus ei erine visuaalselt algsest olekust, mil oli kaks erinevat keha. Kuid Boole'i ​​toimingu sooritamine on vajalik selleks, et konstrueeritud objekt saaks ühtseks tervikuks. Siis saab arvestada erinevaid omadusi sellest kehast: maht, pindala jne. Seda saab kasutada lähtekehade jaoks mitmesugust materjali, ja saadud kehal on üksainus materjal.

Alumine joonis näitab vasakul lahutamise tulemust ja paremal ristmikku.

Tähele tuleb panna, et kui Boole'i ​​operatsiooni käsk esimest korda pärast programmi käivitamist käivitatakse, määratakse automenüüs automaatselt Boole'i ​​operatsiooni tüüp “Lisamine”. Kui Boole'i ​​toimingu loomise käsk kutsutakse uuesti, vajutatakse seda nuppu, mis vastab viimati käsu kutsumisel valitud Boole'i ​​operatsiooni tüübile.

Originaaltoimingute koopiate loomine

Ühe Boole'i ​​toimingu sooritamiseks valitud kehad muutuvad teise jaoks kättesaamatuks. Boole'i ​​operatsiooni tulemusena saadud keha muutub kättesaadavaks. Teatud juhtudel on vaja ühte keha korduvalt kasutada erinevaid operatsioone. Selle valiku pakkumiseks on võimalus

Looge algsetest tehingutest koopia.

Selle valiku aktiveerimisel kuvatakse dialoogiboks, kus peate märkima, millisest valitud kehast tahame koopia luua.

3D modelleerimine

Kui kutsuti valik "Loo koopia", siis enne Boole'i ​​toimingu käivitamist eriline tegevus. Selle toimingu tulemusena luuakse kehad – originaalkehade koopiad, mida saab edaspidi kasutada. Selgitame ülaltoodut näitega. Joonisel on kujutatud algsed 2D-konstruktsioonid ja kaks loodud Boole'i ​​operatsiooni.

Kõigepealt loodi kolm keha: kaks rööptahukat, mis põhinevad ristkülikukujulisel profiilil ja silindril. Seejärel viidi läbi Boole'i ​​operatsioon, et lahutada silindri esimesest rööptahust. Selle tulemusena tekkis auguga rööptahukas. Kuid sama toiming tuleb teha ka teise rööptahuga. Selleks kasutasime esimese Boole'i ​​toimingu sooritamise etapis teise keha (silindri) jaoks valikut „Loo koopia”. Seetõttu on pärast esimest Boole'i ​​operatsiooni alles jäänud kolm keha: auguga rööptahukas, teine ​​rööptahukas ja silindri koopia. Seejärel teostasime rööptahuka ja silindri vahel teise Boole'i ​​operatsiooni.

Boole'i ​​operatsiooni loomine mitme keha põhjal

Pärast automaatmenüüs käsu kutsumist muutub see valik kättesaadavaks

Valige mitu toimingut.

See suvand määrab mitme keha põhjal Boole'i ​​operatsiooni loomise režiimi. Samuti teeb see valiku kättesaadavaks

Seda suvandit kasutades peate vaheldumisi valima mitu Boole'i ​​operatsioonis osalevat keha. Veelgi enam, esimene valitud keha on Boole'i ​​operatsiooni esimene operand.

Näiteks: kui olete valinud mitu keha, loob süsteem mitu Boole'i ​​operatsiooni, millest esimene on tehe esimese ja teise kehaga. Järgmised kasutavad eelmises etapis loodud toimingut esimese operandi ja järgmise kehana vastavalt nende valimise järjekorrale.

Saate kõigi toimingute valiku tühistada, kasutades valikut

<К>Tühista toimingute valik.