Boole'i ​​operatsioonid. Pesastatud Boole'i ​​objektid

Kuid kõrgetasemeliste keelte programmeerimise terminoloogias sisaldavad bititoimingute nimed omadussõnu bittide kaupa, bittide kaupa(näiteks: "bitipõhine loogiline AND", tuntud ka kui "bitipõhine korrutamine"), bittide kaupa.

Mõnes programmeerimiskeeles on loogilistele ja bitipõhistele loogilistele operatsioonidele vastavate operaatorite nimed sarnased. Lisaks võib programmeerimiskeel lubada kaudset ülekandmist numbrilisest tüübist loogilisse tüüpi ja vastupidi. Sellistes programmeerimiskeeltes on vaja hoolikalt jälgida loogiliste ja bitioperatsioonide kasutamist, mille segamine võib põhjustada vigu. Näiteks C++-s on avaldise "2 && 1" (loogiline JA) tulemus Boole'i ​​väärtus tõsi, ja avaldise “2 & 1” (bitipõhiselt JA) tulemus on täisarv 0 .

Bitipõhine eitus (EI)[ | ]

Bitipõhine eitus(või bitti EI, või lisamine) on unaartehte, mille toime 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[ | ]

Teine nimi tuleneb sellest, et see on tõesti liitmine jääkrõngas modulo two, millest mõned tulenevad 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”, see tähendab, et algse kahendarvu bitid, mis vastavad maskis olevale 1-le, pööratakse ümber.

Muud bitipõhised loogilised operatsioonid[ | ]

Levinud programmeerimiskeeltes realiseeritakse sisseehitatud vahenditega ainult neli bitipõhist funktsiooni. loogilisi tehteid: JA, VÕI, EI ja eksklusiivne VÕI. Suvalise bitipõhise loogikatehte määramiseks piisab ülalloetletutest ja pealegi, nagu Boole'i ​​funktsioonide teooriast järeldub, saame piirduda veelgi väiksema põhitehte hulgaga. On ka programmeerimiskeeli, kus on sisseehitatud võimalus sooritada mis tahes binaarset loogilist operatsiooni bitipõhiselt. Näiteks PL/I-l on sisseehitatud BOOL-funktsioon, mille kolmas argument on mõeldud suvalise loogilise toimingu määramiseks, mida rakendatakse kahele esimesele argumendile bitipõhiselt.

Natuke nihkeid [ | ]

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

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

Loogiline nihe[ | ]

Loogilise nihke ajal kaob nihkesuuna viimase biti väärtus (kopeeritakse kandebitti) ja esimene 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.

Aritmeetilist nihet vasakule ja paremale kasutatakse kiireks korrutamiseks ja 2-ga jagamiseks.

Tsükliline vahetus[ | ]

Pööramisel kopeeritakse nihkesuuna 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 kandebitile.

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 Nihutage 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 kiiralgoritmide arvutamise valdkonnas, mis uurib algoritme antud funktsiooni arvutamiseks etteantud täpsusega, kasutades võimalikult vähe bitioperatsioone.

Seosed 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õlgendusega on bitikeeles esindatud konjunktsioonid, disjunktsioonid, implikatsioonid, eitused ja muud loogikas tuntud. Seevastu bititehinguid on lausearvutuse keeles lihtne kirjeldada.

Siiski on loogilised operatsioonid, sealhulgas programmeerimises, paremini kooskõlas matemaatilise loogika konnektiividega kui tegelikud bititehted.

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

Üksikute bittide asemel võime vaadelda kindla arvu bittide vektoreid (nimetatakse programmeerimises registriteks), näiteks baitidega. Programmeerimisel vaadeldakse registreid kui täisarvu binaarset laiendust: 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 pidamast neid registreid täpselt bitivektoriteks 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 suvalisele Boole'i ​​algebrale. Nii saame toimingud kätte bittide kaupa JA, VÕI, EI, v.a. VÕI jne Sarnaselt aritmeetikale pole ka nendel tehtetel head omadused välja arvatud bitipõhiselt EI, mis arvude puhul täienduses e 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 (komplementaarses e-s) lõpmatusse (kahe positiivsete astmete suunas) kahendregistrisse on p-adic arvude teooria loomulik objekt p = 2 (\displaystyle p=2). 2-adic täisarvude komplekti (st suvalisi lõpmatuid bitijadasid) saab vaadelda Boole'i ​​algebrana samamoodi nagu lõplike pikkuste bitiregistri väärtuste komplekti. Kõik ülaltoodud bititoimingud osutuvad pidevateks vastendusteks. Kuigi praktilisel programmeerimisel pole lõpmatu pikkusega registreid, ei takista see seda teoreetilist fakti kasutamast krüptograafias kiirete krüpteerimisalgoritmide loomiseks.

Bitioperatsioonid kui digitaaltehnoloogia alus[ | ]

Bitioperatsioonid on digitaalse signaalitöötluse keskmes. Nimelt saame nende kaudu ühest või mitmest sisendsignaalist saada uue signaali, mida omakorda ühe või mitme sellise toimingu sisendisse sööta. Tegelikult realiseerivad just bititoimingud koos salvestuselementidega (näiteks plätud) tänapäevase digitehnoloogia kogu võimaluste rikkuse.

Praktilised rakendused[ | ]

Rakenduse seisukohast ei paku ühebitine toiming vähe huvi. Sellepärast praktiline kasutamine põhineb erinevate bitioperatsioonide kombineerimise viisidel keerukamate arvutuste teostamiseks. Võib märkida kahte aspekti:

  1. suurendades registrite suurust, milles bititoiminguid sooritatakse mitte ükshaaval, vaid mitmel 8, 16, 32, 64 bitil korraga
  2. eksperimentaalsed seadmed, mis üldistavad bitite operatsioone kahendsüsteemist ternaar- ja muudele arvusüsteemidele (näiteks on välja töötatud teooria kvaternaarsüsteemiga töötamiseks (

KURSUSE PÕHIMÕISTED

Kursuse eesmärgiks on tutvuda graafilise elektroonilise modelleerimisega, et automatiseerida tehniliste objektide projekteerimist, et oluliselt tõsta projekteerimisorganisatsiooni tootlikkust.

Tootedisaini täielikku tsüklit nimetatakse R&D-ks. See on tegevuste kogum, mis koosneb teaduslikud uuringud ning piloot- ja väikesemahuliste tootenäidiste valmistamine, mis eelneb uue toote tööstuslikku tootmisse toomisele. T&A struktuuris on geomeetrilise modelleerimise meetodite rakendusaineks arendustöö.

Teadus- ja arendustegevus toimub pärast uurimistöö lõpetamist, tingimusel et selles etapis saadakse kättesaamine positiivseid tulemusi tulevase toote eesmärkide täitmise seisukohalt.

Arendustöö peamised etapid on sätestatud standardis GOST 15.001-88 "Toote arendamise ja tootmisse käivitamise süsteem".

1. etapp. Tehniliste kirjelduste väljatöötamine, mis sisaldab nime, eesmärki, tehnilised nõuded, kvaliteedi- ja tasuvusnäitajad, samuti kliendi erinõuded arendatavale disainile.

2. etapp. Tehnilise ettepaneku väljatöötamine, mis sisaldab kinnitust projekti väljatöötamise tehnilise ja majandusliku teostatavuse kohta, võttes arvesse tootmisettevõtete võimalusi, samuti teaduse ja tehnoloogia saavutusi.

3. etapp. Eelprojekti väljatöötamine, dokumentatsiooni esitamine projektlahenduste komplekti kujul, mis annavad aimu konstruktsiooni projektist, selle tööpõhimõttest, mõõtmetest ja põhiparameetritest. Sel juhul tehakse konstruktsiooni toimivuse kohta esialgsed arvutused, mis koostatakse seletuskirja kujul.

4. etapp. Lõplikult valitud ja välja töötatud projektlahendust sisaldava tehnilise projekti väljatöötamine. Lõplikud järeldused tehakse taatlusarvutuste käigus, mille tulemusel selgitatakse või korrigeeritakse eelmises etapis saadud toote põhiparameetreid.

5. etapp. Osade ja koostesõlmede jooniseid sisaldava töödokumentatsiooni väljatöötamine, mille abil saab valmistada ja katsetada prototüüpe, samuti jälgida nende täpsust ja kvaliteeti tootmisprotsessi käigus.

6. etapp. Eeltestide läbiviimine, et kontrollida prototüübi vastavust tehniliste kirjelduste nõuetele ja teha kindlaks selle enne masstootmisse laskmist lõpptestimiseks esitamise võimalus.

Inseneride tootlikkuse tõstmiseks teadus- ja arendustegevuse etapis on vaja laialdaselt kasutada erinevaid automatiseerimisvahendeid, et lahendada mitmesuguseid projekteerimis- ja uurimisprobleeme.

Praegu kasutatakse arvutigraafikas kolme tüüpi geomeetrilist modelleerimist. Need on traatraami modelleerimine, pinna modelleerimine ja tahkete modelleerimine.

Peal selles etapis graafiliste süsteemide arendus, tahkete modelleerimine on 3D CAD/CAM/CAE projekteerimissüsteemide standard.

Kaasaegsetes masinaehitusettevõtetes lahendatavad probleemid nõuavad, et disainer looks tulevasest tootest väljamõeldud pildi mitte joonise, vaid virtuaalse tahkisruumimudeli kujul, mis ei suuda kirjeldada mitte ainult toote täielikku geomeetriat. toode, aga ka materjali mehaanilised ja füüsikalised omadused.

Sarnase hulga ülesannete rakendamiseks on ilmunud keskklassi 3D-süsteemid. Need on Solid Works, AutoDesk Inventor, SolidEdge, aga ka kodumaine Compass 3D ja T-FLEX CAD.

Joonis nendes süsteemides mängib toetavat rolli ja selle loomise meetodid põhinevad ruumimudeli kuvamise meetoditel.

Tahke geomeetrilise objekti loomise struktuur on toodud järgmisel diagrammil.



Tagasiside

Tahke modelleerimisalgoritm võimaldab luua keerukaid geomeetrilisi mudeleid Boole'i ​​toimingute järjestikuse rakendamise mehhanismi abil elementaarsete mahuliste kehade komplektile, mis moodustavad keeruka mudeli. Vaheolekud keeruka objekti moodustamisel salvestatakse automaatselt hierarhilises andmemudelis. Järelikult kuvab see mudel monitori ekraanil kogu keeruka geomeetrilise objekti kujundamise protsessi. Graafikasüsteemides nimetatakse seda hierarhilist mudelit CSG - puuks (Constructive Solid Geometry tree) või sõna otseses mõttes. soliidne kehadisainer.

CSG puu struktuuris on keerulise geomeetrilise objekti järjestikuse modelleerimise protsess esitatud järgmiste Boole'i ​​operatsioonide kujul elementaarkehad:

a) lahutamine b) liit c) ristmik.

Boole'i ​​tehted elementaarkehadele

Mõistet "Boole'i ​​tehe" kasutatakse matemaatikas, et viidata hulkadevahelistele võrdlustehtetele. 3D Studio MAXis rakendatakse sarnaseid võrdlustoiminguid stseeni geomeetriliste objektide sobitamise või kattumise korral. Boole'i ​​toiming viiakse läbi, luues kahest olemasolevast objektist Boole'i ​​liitobjekti; neid objekte nimetatakse operandideks ja need peavad tingimata lõikuma mõnes ruumipiirkonnas. Operandid on kujutatud eraldi objektidena kogu Boole'i ​​liitobjekti redigeerimisfaasis, 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(Union) operatsiooni tulemuseks on objekt, mis saadakse kahe lähteobjekti kombineerimisel; sel juhul eemaldatakse osad objektidest, mis on ühise välismahu sees;
  • Ristmik(Ristepunkt) saadud objekt on kahe algse objekti ristumistulemus; sel juhul eemaldatakse objektide osad, mis on väljaspool üldist sisemist mahtu;
  • (Lahutamine (A-B)/Lahutamine (B-A)) tulemuseks on objekt, mis saadakse ühe objekti lahutamisel teisest, mille kõik osad lõigatakse ära esimese mahu võrra ja eemaldatakse;
  • Lõika Saadud objekti (lõikamine) tulemuseks on vastavate aukude ja avade väljalõikamine esimese objekti pinnalt ristumiskohtades 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ärgneva vajaliku Boole'i ​​operatsiooni rakendamine ning enne viimase rakendamist tuleb valida üks lähteobjektidest, vastasel juhul pole Boole'i ​​toiming saadaval .

Boole'i ​​objektide loomiseks on mitu meetodit:

  • Kopeeri(Kopeeri) Boole'i ​​objekti loomisel säilitatakse algne operaand B;
  • Liiguta(Ülekandmine) Boole'i ​​objekti loomisel algset operandi B ei säilitata;
  • Näide(Sample) luuakse Boole'i ​​objekt ja samal ajal salvestatakse operandi B koopia; kui koopia muutub, muutub Boole'i ​​objekt ja kui Boole'i ​​objekt muutub, muutub koopia;
  • Viide(Link) luuakse Boole'i ​​objekt ja samal ajal salvestatakse B-operandi koopia; kui muudate originaali, muutub ka Boole'i ​​objekt; Kui muudate Boole'i ​​objekti, siis originaal ei muutu.
  • Boole'i ​​operatsiooni tulemus ei ole alati edukas, seega peavad olema täidetud mitmed tingimused:
  • 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 konarlik või ei vasta üldse kavandatule;
  • traatraamid peavad olema õigesti konstrueeritud; servad, mis jagavad serva, peavad jagama kahte tippu, kuid serva saavad jagada ainult kaks tahku. Redigeeritavate võrkude puhul peate võib-olla vastavad tipud käsitsi liitma Redigeeri võrgusilma.

Näiteks proovige luua Boole'i ​​lahutamistehte kolme kattuva sfääri näitel (joonis 2). Valige paneelil keskne sfää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 määratletakse ainult operandi A(joonis 3), nii et operandi B määramiseks klõpsake nuppu Valige Operand B(Valige operaand B) ja seejärel suunake hiir suurimale sfäärile. Selle tulemusena tekib sälk sfääri, mida kasutatakse operandina A (joonis 4). Kui operandi B määrati valesti, ä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 taastata (joonis 5). Sellistes olukordades peate esmalt tühistama eelmise operandi valiku B meeskond Võta tagasi ja alles siis tee uus valik.

Modelleerimine Boolean Unioniga

Tavaliselt kasutatakse Boole'i ​​ühendamist objektide puhul, mis peaksid näima tahked, mis tähendab, et nende pind on alati suletud ja sisemine struktuur pole lava jaoks asjakohane. Boole'i ​​liit võimaldab teil vabaneda objektide üksteisega ühendamise välimusest 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 silindrit hantli kujuliseks. Looge esialgsed objektid ja asetage need vastavalt vajadusele üksteise suhtes (joonis 6 ja 7). Valige silinder, aktiveerige Boole'i ​​toiming liit, operandi B määratlemiseks klõpsake nuppu Valige Operand B(Valige operand B) ja seejärel suunake hiir ühele sfääridest. Selle tulemusena muutuvad silinder ja kera üheks objektiks. Valige kombineeritud objekt, aktiveerige Boole'i ​​objektide loomise režiim, klõpsake nuppu Valige Operand B(Valige operand B) ja märkige teine ​​sfäär. Tulemuseks on ühe Boole'i ​​objekti vastuvõtt (joonis 8).

Modelleerimine Boole'i ​​lahutamisega

Boole'i ​​lahutamise tehteid kasutatakse modelleerimisel kõige laialdasemalt. Kõige sagedamini kasutatakse neid ümarduste ja süvendite loomiseks esimesele originaalobjektile, samuti süvendite ja läbivate aukude loomiseks 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 esemeid, eriti objekte, mis on saadud kumeratest 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 sektsiooni raadius peaks olema väiksem kui kuuli raadius ja selle pikkus peaks olema suurem kui kuuli raadius) ja joondage need üksteise suhtes piki X-, Y- ja Z-telge, kasutades toimingut Joonda(Joonda) (joonis 9). Renderdage ja kohendage objektide parameetreid nii, et need oleksid üsna siledad, eriti ristumisalal; Kui seda ei tehta, ei ole ka loodud Boole'i ​​objektil korralikku sujuvust. Sel juhul on selge (joonis 10), et sileduse astet tuleb suurendada; see saavutatakse objektide tiheduse suurendamisega: segmentide ja segmentide külgede arvu suurendamisega ning segmentide suuruse vähendamisega (joonis 10). 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 redigeerimise ajal objekti tasandil.

Valige silinder, määrake Boole'i ​​objekti loomise režiim, määrake toiming Lahutamine (B-A)(lahutamine B-A), et näidata operandit B klõpsake nuppu Valige Operand B(Valige operand B) ja märkige sfäär. Selle tulemusena eemaldatakse kera sisemine osa täpselt algse silindri suuruse järgi selliselt, et kerale tekib läbiv auk (joonis 12).

Boole'i ​​lahutamise abil moodustatud augud võivad olla erineva kujuga ning 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 Boole'i ​​objektide loomise toiming Lahutamine (A-B) ja operandina B täpsustage sfäär; tulemuseks on sellesse vastava süvendi ilmumine (joonis 14) ja seejärel salvestage tulemus (seda vajame hiljem). Tühista loodud Boole'i ​​toiming ja rakenda algobjektidele Boole'i ​​lahutamist Lahutamine (A-B), kuid esimeseks operandiks määrake kera ja süvendiga kuubi asemel on tehte tulemuseks pall, mille üks veeranditest on välja lõigatud (joonis 15). Väärib märkimist, et sama tulemuse saamiseks ei olnud üldse vaja operande vahetada: sama eduga oli võimalik operatsiooni asemel Lahutamine (A-B) valige toiming Lahutamine (B-A). Selline toimingute vahetamine Lahutamine (A-B) Ja Lahutamine (B-A) väga mugav, sest kui operand on valesti valitud A ei ole vaja toimingut tühistada, vaid lihtsalt lülituda ühelt lahutamistehtelt teisele.

Nagu märgitud, määrab saadud sälgu kuju teine ​​operandi. Proovige palli asemel teiste objektidega luua süvendeid ja süvendeid. Näiteks objekti kasutamisel 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.

Boole'i ​​operatsioon Ristmik(Ristmik) on Boole'i ​​operatsioonide pöördväärtus Lahutamine (A-B)/lahutamine (B-A)(Lahutamine (A-B)/Lahutamine (B-A), kuna selle abil saadud Boole'i ​​objektid on operandide A ja B fragmendid, mis eemaldatakse Boole'i ​​lahutamise operatsiooni käigus, kui see sooritatakse samadel objektidel. Võtke sisse kuubik ja eespool käsitletud pall kui esialgsed, valige operandiks kuubik A ja seejärel sooritage Boole'i ​​toiming Ristmik(Ristmik) tulemuseks on veerand kuulist, mis operatsiooni käigus varem välja lõigati Lahutamine (B-A)(joonis 22).

Riis. 22. Lähteobjektid ja Boole'i ​​objektid lõikumis- ja lahutamisoperatsioonide ajal (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 sama kujuga nagu joonisel fig. 23 ja pärast keeramist (parameeter Keerake) 360° nagu joonisel fig. 24. Lisaks looge silinder, asetage objektid nagu näidatud joonisel fig. 25 ja Boole'i ​​toimingu sooritamisel Lahutamine (A-B) määrake operandiks silinder A tulemus on esitatud 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 lähteobjektiks eelmise Boole'i ​​toimingu käigus saadud Boole'i ​​objekt.

Näiteks võtke eelnevalt loodud ja salvestatud Boole'i ​​objekt (joonis 27), looge teine ​​silinder ja asetage see joonisel näidatud viisil. 28. Valige algne Boole'i ​​objekt (selleks peate loendist väljuma Liitobjektid(Koosobjektid), valides teist tüüpi geomeetria), aktiveerige Boole'i ​​lahutamise toiming Lahutamine (A-B) ja kasutage teist operandit, et määrata 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

Loodud Boole'i ​​objekti värvi saab muuta; objekti saab liigutada, skaleerida ja pöörata nagu tavaliselt. Vajadusel paneeli valikute alal Muutma saate kohandada operandide nimesid, määrata Boole'i ​​objekti kuvamisviisi 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), seejärel peate mudeli uuesti joonistamiseks klõpsama nuppu Värskenda(Uuendus).

Siin saate määrata valiku Varjatud toimingud, mis võimaldab tulemust vaadates näha ruudustikuna Boole'i ​​tehte sooritamisel kaovat operandi (joonis 32). See suvand annab teavet 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, uurides suhet operandide positsioonide vahel üksteise suhtes ja välimus tõeväärtuslik objekt. Looge algobjektidena kaks silindrit ja asetage need, nagu näidatud joonisel fig. 33. Valige objektidest väiksem, määrake Boole'i ​​lahutamise tehe Lahutamine (B-A) ja teise operandiga määrata teine ​​silinder, mille tulemusena tekib suuremasse silindrisse auk (joonis 34). See auk ei tule läbi, mis on tingitud silindrite algsest asendist.

Saadud tulemust saab muuta ja see ei nõua isegi Boole'i ​​operatsiooni tühistamist, kuna Boole'i ​​objekti operandid on teatud määral ja üksteisest sõltumatult redigeeritavad: neid saab valida, teisaldada, skaleerida ja pöörata. üksteisele, muutes seega Boole'i ​​ennast objektiks. Operandide redigeerimine toimub režiimis Alamobjekt, mille avamiseks peate avama kerimisriba, kui Boole'i ​​objekt on valitud Boolean paneelid Muutma, tõstke rida esile Operandid, ja seejärel märkige redigeeritav operandi (joonis 35) ja tehke sellega vajalikud manipulatsioonid. Operandi liigutamisel või sellega projektsioonis muul viisil manipuleerimisel Perspektiiv värskendatud Boole'i ​​tulemus kuvatakse kohe. Näiteks liikuge projektsiooniaknas Vasakule operand A liikudes vasakule, augu sügavus suureneb (joonis 36), tagasi liikudes väheneb (joonis 37). Kui jätkame operandi liigutamist A vasakule, siis lõpuks muutub auk läbi (joon. 38) ja tagurpidi liikumise ajal muutub see vaevumärgatavaks sälguks (joonis 39).

Sarnasel viisil saate mitte ainult liigutada ja pöörata operande, vaid ka muuta nende suurust. Proovige operandi A kasutage skaleerimistööriista Vali ja ühtne skaala Nii saate muuta süvendi suurust, näiteks muuta selle 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 rida Boolean pärast seda rakenduvad skaleerimise, liigutamise ja pööramise toimingud kogu Boole'i ​​objektile tervikuna.

Operande saab redigeerida ka objekti tasemel: muuta pikkust, laiust, kõrgust, segmentide arvu jne. Boole'i ​​objekti panemiseks objekti tasemel redigeerimisrežiimi paletis Muutma rida peaks olema aktiveeritud Operandid, valige soovitud operaand ja seejärel loendist Boolean klõpsake rea all oleval real Operandid, kus näiteks primitiivide kasutamise korral ilmub sisse primitiivi nimi üldine vaade(joonis 41).

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

Kauss

Loo algobjektidena kera ja rööptahukas ( Kast) ja asetage need nagu näidatud joonisel fig. 42. Pall aknas Perspektiiv pole nähtav, kuna selle ülemine osa asub rööptahuka sees ja alumine osa on peidetud. Valige rööptahukas ja rakendage sellele Boole'i ​​lahutamise tehing Lahutamine (B-A), määrates teise operandina kuuli, jääb lõpuks alles vaid kuuli alumine pool (joonis 43). Valige loodud Boole'i ​​objekt, teisendage see redigeeritavaks võrguks, valides kontekstimenüüst käsu Convert To=>Teisenda redigeeritavaks võrguks(Teisenda => Teisenda redigeeritavaks võrguks) ja minge hulknurga redigeerimisrežiimi. Kuna eesootav töö on üsna vaevarikas, minge nupule klõpsates ühe projektsiooni kuvarežiimi Min/Max lüliti(joonis 44).

Nüüd peate toimingud 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 kustutage toimingu abil palli poole ülemine fragment Ekstrudeerida(joonis 46). Kandke eemaldatavale pinnale väike faasike, skaleerige uuesti ja rakendage toiming Ekstrudeerida ja tehke seda seni, kuni toorik hakkab meenutama krobelist kaussi (joonis 47). Pinna tasandamiseks kasutage modifikaatorit MeshSmooth(Silma silumine) on võimalik, et kauss hakkab lõpuks sarnanema joonisel fig. 48.

Ligikaudu sama kausi saab kätte kiiremini, aga ka Boole'i ​​tehteid kasutades. Võtke aluseks ülalpool Boole'i ​​lahutamise käigus saadud sfääri alumine pool (joonis 49), looge sellest koopia, seejärel vähendage selle suurust tööriistaga veidi Vali ja ühtne skaala, joondage X-, Y- ja Z-teljega, klõpsates nuppu Joonda(Joonis 50) ja seejärel liigutage seda veidi ülespoole. Valige väiksem poolkera ja looge Boole'i ​​lahutamise abil uus Boole'i ​​objekt Lahutamine (B-A), määrates operandiks B suur poolkera (joon. 51). Saadud kauss pärast silumist on näidatud joonisel fig. 52.

Üles

Loo koonus ( Koonus) (joonis 53). Objekti kuju Kast(Kast) ja joondage see käsuga Joonda piki koonust piki X-, Y- ja Z-telge (joonis 54). Tehke teisest objektist koopia ja asetage objektid, nagu näidatud joonisel fig. 55. Valige koonus, määrake Boole'i ​​objektide loomise toiming Lahutamine (A-B) ja operandina B osutage objektile Kast 01 (joonis 56). Seejärel korrake seda toimingut, kuid operandiga A sel juhul saab varem loodud Boole'i ​​objekt ja operandi B objektiks Kast 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 pöörake seda mööda Z-telge, et moodustada koopia, klõpsates nuppu Valitud objekti peegeldamine(Valitud objekti peegeldamine) ja konfigureerige peegeldamise parameetrid (joonis 60). Täpselt samamoodi tee koonusest peegelkoopia, saad ülaosa (joon. 61).

Võti

Proovime luua võtme imitatsiooni, moodustades esmalt kõik selle osad tõstmise teel ja seejärel kombineerides need Boole'i ​​operatsiooni abil. Looge seeria splaine, mis on sarnased joonisel fig. 62: ristkülik on mõeldud kasutamiseks katuseobjekti osana ja kõik muud splainid toimivad teekonnana. Pange tähele, et pööninguobjektide loomisel peate sel juhul valima lõigu, mitte tee määramise meetodi, vastasel juhul peate pärast nende kättesaamist kulutama palju aega pööninguobjektide soovitud viisil paigutamisele. Valige esimene ring, klõpsake nuppu Geomeetria Loo Liitobjektid Objekti tüüp(Objekti tüüp) klõpsake nuppu Pööning(Lofting), siis nupuga Hangi kuju(Määrake tee) ja valige hiirega ristkülik. Valige teine ​​ring ja looge uuesti püstitatud objekt, kasutades sama ristkülikut, mis lõiguga. 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 Boole'i ​​objekti loomisega. Valige esimene loft-objekt, aktiveerige Boole'i ​​operatsioon liit, klõpsake nuppu Valige Operand B ja määrake teine ​​pööninguobjekt. Looge uus Boole'i ​​objekt, kasutades saadud Boole'i ​​objekti A-operandina ja üht loft-objekti B-operandina, ja jätkake, kuni olete ühendanud kõik võtmefragmendid. Lõpptulemus on näidatud joonisel fig. 64.

Aknaraam

Kombineerides loftingu ja Boole'i ​​liitmise toiminguid (nagu näites võtmega), on võimalik moodustada palju seda tüüpi objekte, nagu aknaraamid, ukseavad jne, millest igaüks esindab mitut eraldiseisvat elementi, mis on omavahel ühendatud. muud. Näiteks proovige esmalt luua aken üksikute splainide seeriast (joonis 65), seejärel muuta iga splaini ülaosa elemendiks ja seejärel ühendada raami fragmendid kokku Boole'i ​​ü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 ruudustiku 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 projektsioonil 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). Kui olete endiselt valitud, aktiveerige tööriist Vali ja ühtne skaala ja skaleerige valitud ala nii, et sisemised tipud langeksid kokku vahepealse astme tippudega (joonis 70) ja kruusi sisemine õõnsus muutub nii kruusi ülemises kui ka alumises osas ühesuguse läbimõõduga.

Projektsioonil Üles vali ülemise ja keskmise lõigu sisemised tipud (joonis 71) seda on mugavam teha, valides esmalt 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 nende asukoha raadius läheneb välisraadiusele ja kruusi seina paksus väheneb (joonis 72). Projektsioonil Esiosa vali ülemise lõigu tipud, mis skaleerimisel osutusid objektist väljas (joonis 73) ja liigutage need alla (joonis 74). Tehke sarnane toiming alumise sektsiooni sisemiste tippude suhtes (joonis 75).

Kruusile käepideme loomiseks aktiveerige objekti kategooria Kujundid(Vormid) käsuriba Loo(Loomine) määrake objektitüüpide loendis tüüp Splainid(Splines) ja tööriist Liin(Line) konstrueerib kõvera splaini (joonis 76), mida kasutatakse rajana tõstetud 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 suvand Liitobjektid(Koosobjektid). Kirjarullis Objekti tüüp(Objekti tüüp) klõpsake nuppu Pööning(Lofting), siis nuppu Hankige tee(Määrake tee) ja osutage hiirega eelnevalt loodud tee splainile. 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 käepide redigeeritavasse võrgurežiimi, valige lisatipud (joonis 78) ja vajutage klahvi Del.

Kruusi ja pliiatsi üheks ühendamiseks peate need Boole'i ​​toimingu abil kombineerima. Valige kruus, määrake sooritatav toiming liit, klõpsake nuppu Valige Operand B ja seejärel käepideme abil 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 renderdage; käepidet kruusiga ühendav joon muutub peaaegu nähtamatuks (joonis 80).

Pistikupesa mutrivõtme jaoks

Selle objekti tooriks on kaks erineva läbimõõduga silindrit, mis on ühendatud kombineerimise Boole'i ​​operatsiooni käigus. Nendest saadud objekti sees on vaja välja lõigata mitu erineva ristlõikega õõnsust, mis on võimalik läbi korduvate Boole'i ​​lahutamiste. Esimene lõigatud õõnsus saadakse kõrgel asuvast objektist, mis moodustub suure arvu 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 loft-objekt, määrates teekonnaks joone, reguleeri selle asukohta silindrite objekti suhtes (joonis 84). Lõika suurest silindrist välja vastav õõnsus, valides Boole'i ​​lahutamise toimingu aktiveerides mitmetahulise kõrgusega objekti Lahutamine (A-B) ja silindrite määramine operandiks B, mille tulemusena tekib suure silindri sisse mitmetahuline õõnsus (joonis 85).

Loo rööptahukas, mille laius ja kõrgus on samad ja veidi väiksemad kui lõigatud õõnsuse läbimõõt. Asetage see suurema silindri sisse ja joondage see piki X- ja Z-telge (joonis 86). Juba loodud Boole'i ​​objekti ja rööptahuka põhjal moodustada pesastatud Boole'i ​​objekt, lõigates rööptahukaga välja vastava õõnsuse suure silindri seest (joonis 87). Seejärel looge silinder, mille raadius on väiksem kui olemasoleva väiksema silindri raadius, asetage see väiksema silindri sisse ja joondage see piki X- ja Z-telge (joonis 88). Seda silindrit kasutades lõigake pesastatud Boole'i ​​objekti väiksema silindri seest õõnsus, kasutades Boole'i ​​lahutamise toimingut ja hankige joonisel fig. 89, mis on ligikaudu sama välimusega kui mutrivõtme pea.

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 kiired viisid modelleerimine 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 toeks ja teise põhjal konstrueerime uue serva, mis saab kõik vajalikku teavet. 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üklid ü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 tahk ei ulatu ristumisservast kaugemale (lõikeserv langeb osaliselt või täielikult kokku keha servaga), siis seatakse vastav vektor võrdseks nulliga (joon. 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 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. Lihtkehade andmestruktuur sisaldab minimaalselt teavet, millest saab konstrueerida keha kõik tahud. 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.