JERE KUUSELA SPLINIKÄYRÄ MALLINNUSOHJELMISTOISSA. Diplomityö

Samankaltaiset tiedostot
Vektorien pistetulo on aina reaaliluku. Esimerkiksi vektorien v = (3, 2, 0) ja w = (1, 2, 3) pistetulo on

MS-A0202 Differentiaali- ja integraalilaskenta 2 (SCI) Luento 1: Parametrisoidut käyrät ja kaarenpituus

Suora 1/5 Sisältö ESITIEDOT: vektori, koordinaatistot, piste

Epäeuklidista geometriaa

9. Vektorit. 9.1 Skalaarit ja vektorit. 9.2 Vektorit tasossa


PRELIMINÄÄRIKOE PITKÄ MATEMATIIKKA

3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö

Osoita, että kaikki paraabelit ovat yhdenmuotoisia etsimällä skaalauskuvaus, joka vie paraabelin y = ax 2 paraabelille y = bx 2. VASTAUS: , b = 2 2

Tekijä Pitkä matematiikka

Tekijä Pitkä matematiikka b) Kuvasta nähdään, että b = i 4 j. c) Käytetään a- ja b-kohtien tuloksia ja muokataan lauseketta.

Tekijä Pitkä matematiikka Suoran pisteitä ovat esimerkiksi ( 5, 2), ( 2,1), (1, 0), (4, 1) ja ( 11, 4).

Luento 6: Geometrinen mallinnus

Oppimistavoitematriisi

Oppimateriaali oppilaalle ja opettajalle : GeoGebra oppilaan työkaluna ylioppilaskirjoituksissa 2016 versio 0.8

Matematiikan tukikurssi

3 Suorat ja tasot. 3.1 Suora. Tässä luvussa käsitellään avaruuksien R 2 ja R 3 suoria ja tasoja vektoreiden näkökulmasta.

Diplomi-insinööri- ja arkkitehtikoulutuksen yhteisvalinta 2017 Insinöörivalinnan matematiikan koe , Ratkaisut (Sarja A)

Solmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä:

1 2 x2 + 1 dx. (2p) x + 2dx. Kummankin integraalin laskeminen oikein (vastaukset 12 ja 20 ) antaa erikseen (2p) (integraalifunktiot

MS-A0205/MS-A0206 Differentiaali- ja integraalilaskenta 2 Luento 1: Parametrisoidut käyrät ja kaarenpituus

T Tietokoneanimaatio ja mallintaminen. Lauri Savioja Teknillinen korkeakoulu Tietoliikenneohjelmistojen ja multimedian laboratorio 02/02

Ristitulolle saadaan toinen muistisääntö determinantin avulla. Vektoreiden v ja w ristitulo saadaan laskemalla determinantti

5.3 Suoran ja toisen asteen käyrän yhteiset pisteet

MATEMATIIKAN KOE PITKÄ OPPIMÄÄRÄ

Cantorin joukon suoristuvuus tasossa

Ratkaisut vuosien tehtäviin

Jussi Klemola 3D- KEITTIÖSUUNNITTELUOHJELMAN KÄYTTÖÖNOTTO

Oppimistavoitematriisi

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 2 / vko 45

Tekijä Pitkä matematiikka Pisteen (x, y) etäisyys pisteestä (0, 2) on ( x 0) Pisteen (x, y) etäisyys x-akselista, eli suorasta y = 0 on y.

r > y x z x = z y + y x z y + y x = r y x + y x = r

Lauseen erikoistapaus on ollut kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa seuraavassa muodossa:

3D animaatio: liikekäyrät ja interpolointi. Tommi Tykkälä

Vektoreita GeoGebrassa.

MS-A0305 Differentiaali- ja integraalilaskenta 3 Luento 4: Taso- ja avaruuskäyrät

Yhtälön oikealla puolella on säteen neliö, joten r. = 5 eli r = ± 5. Koska säde on positiivinen, niin r = 5.

Taso 1/5 Sisältö ESITIEDOT: vektori, koordinaatistot, piste, suora

Selvästi. F (a) F (y) < r x d aina, kun a y < δ. Kolmioepäyhtälön nojalla x F (y) x F (a) + F (a) F (y) < d + r x d = r x

0, niin vektorit eivät ole kohtisuorassa toisiaan vastaan.

MS-A0207 Differentiaali- ja integraalilaskenta 2 (Chem) Yhteenveto, osa I

, on säännöllinen 2-ulotteinen pinta. Määrää T x0 pisteessä x 0 = (0, 1, 1).

Luku 8. Aluekyselyt. 8.1 Summataulukko

763306A JOHDATUS SUHTEELLISUUSTEORIAAN 2 Ratkaisut 2 Kevät 2017

MATEMATIIKAN KOE, LYHYT OPPIMÄÄRÄ HYVÄN VASTAUKSEN PIIRTEITÄ

RATKAISUT a + b 2c = a + b 2 ab = ( a ) 2 2 ab + ( b ) 2 = ( a b ) 2 > 0, koska a b oletuksen perusteella. Väite on todistettu.

Matematiikan tukikurssi

Johdatus tekoälyn taustalla olevaan matematiikkaan

1. Osoita, että joukon X osajoukoille A ja B on voimassa toinen ns. de Morganin laki (A B) = A B.

A B = (1, q, q 2 ) (2, 0, 2) = 2 2q q 2 = 0 q 2 = 1 q = ±1 A(±1) = (1, ±1, 1) A(1) A( 1) = (1, 1, 1) (1, 1, 1) = A( 1) A(1) A( 1) = 1

Matematiikan tukikurssi

Vanhoja koetehtäviä. Analyyttinen geometria 2016

y=-3x+2 y=2x-3 y=3x+2 x = = 6

Käyttöliittymän muokkaus

Anna jokaisen kohdan vastaus kolmen merkitsevän numeron tarkkuudella muodossa

isomeerejä yhteensä yhdeksän kappaletta.

1.1 Vektorit. MS-A0007 Matriisilaskenta. 1.1 Vektorit. 1.1 Vektorit. Reaalinen n-ulotteinen avaruus on joukko. x 1. R n. 1. Vektorit ja kompleksiluvut

4 LUKUJONOT JA SUMMAT

MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt

(iv) Ratkaisu 1. Sovelletaan Eukleideen algoritmia osoittajaan ja nimittäjään. (i) 7 = , 7 6 = = =

1.1 Vektorit. MS-A0004/A0006 Matriisilaskenta. 1.1 Vektorit. 1.1 Vektorit. Reaalinen n-ulotteinen avaruus on joukko. x 1. R n.

Lukujonon raja-arvo 1/7 Sisältö ESITIEDOT: lukujonot

Kannan vektorit siis virittävät aliavaruuden, ja lisäksi kanta on vapaa. Lauseesta 7.6 saadaan seuraava hyvin käyttökelpoinen tulos:

KJR-C1001 Statiikka ja dynamiikka. Luento Susanna Hurme

DYNAMIIKKA II, LUENTO 5 (SYKSY 2015) Arttu Polojärvi

Matematiikan tukikurssi

JAKSO 2 KANTA JA KOORDINAATIT

Suorien ja tasojen geometriaa Suorien ja tasojen yhtälöt

2 Raja-arvo ja jatkuvuus

Luento 3: 3D katselu. Sisältö

x 5 15 x 25 10x 40 11x x y 36 y sijoitus jompaankumpaan yhtälöön : b)

Ylioppilastutkintolautakunta S t u d e n t e x a m e n s n ä m n d e n

2 Pistejoukko koordinaatistossa

Preliminäärikoe Tehtävät Pitkä matematiikka / 3

F dr = F NdS. VEKTORIANALYYSI Luento Stokesin lause

l 1 2l + 1, c) 100 l=0

Lineaarinen yhtälöryhmä

Pinta-alojen ja tilavuuksien laskeminen 1/6 Sisältö ESITIEDOT: määrätty integraali

Johdatus matematiikkaan

MS-A0003/A0005 Matriisilaskenta Malliratkaisut 5 / vko 48

MAAPALLON GEOMETRIA JA SEN SELVITTÄMINEN

MATEMATIIKAN KOE, PITKÄ OPPIMÄÄRÄ HYVÄN VASTAUKSEN PIIRTEITÄ

Toisen asteen käyrien ja pintojen geometriaa Ympyrän ja pallon ominaisuuksia

Pyramidi 10 Integraalilaskenta harjoituskokeiden ratkaisut sivu 298 Päivitetty

Lieriö ja särmiö Tarkastellaan pintaa, joka syntyy, kun tasoa T leikkaava suora s liikkuu suuntansa

Tyyppi metalli puu lasi työ I II III

MATEMATIIKAN KOE, LYHYT OPPIMÄÄRÄ HYVÄN VASTAUKSEN PIIRTEITÄ

l 1 2l + 1, c) 100 l=0 AB 3AC ja AB AC sekä vektoreiden AB ja

Lineaarialgebra ja matriisilaskenta I, HY Kurssikoe Ratkaisuehdotus. 1. (35 pistettä)

Suorat ja tasot, L6. Suuntajana. Suora xy-tasossa. Suora xyzkoordinaatistossa. Taso xyzkoordinaatistossa. Tason koordinaattimuotoinen yhtälö.

4. Käyrän lokaaleja ominaisuuksia

Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

Moniulotteisia todennäköisyysjakaumia

Konformigeometriaa. 5. maaliskuuta 2006

Tekijä Pitkä matematiikka a) Ratkaistaan nimittäjien nollakohdat. ja x = 0. x 1= Funktion f määrittelyehto on x 1 ja x 0.

Lineaarikombinaatio, lineaarinen riippuvuus/riippumattomuus

(b) = x cos x 1 ( cos x)dx. = x cos x + cos xdx. = sin x x cos x + C, C R.

Transkriptio:

JERE KUUSELA SPLINIKÄYRÄ MALLINNUSOHJELMISTOISSA Diplomityö

Tarkastajat: Prof. Tapio Elomaa ja TkT. Pasi Raumonen Tarkastajat ja aihe hyväksytty Luonnontieteiden tiedekunnan tiedekuntaneuvoston kokouksessa 9.12.2015

i TIIVISTELMÄ JERE KUUSELA: Splinikäyrä mallinnusohjelmistoissa Tampereen teknillinen yliopisto Diplomityö, 56 sivua, 0 liitesivua Toukokuu 2016 Teknis-luonnontieteellinen koulutusohjelma Pääaine: Matematiikka Tarkastajat: Prof. Tapio Elomaa ja TkT. Pasi Raumonen Avainsanat: splini, nurbs, mallinnus, käyrä Tämän diplomityön tavoitteena oli kehittää Vertex Systemsin suunnitteluohjelmisto Vertex G4:n muotoilutoimintoja. Vertex G4 on 3d-mallinnusohjelmisto, jota käytetään pääasiassa koneiden suunnitteluun. Vertex G4 ohjelmisto on toiminnoiltaan laaja-alainen ja sitä on kehitetty eri työntekijöiden toimesta yli 30 vuotta, joten tehtävään sisältyi myös ohjelmiston muotoiluominaisuuksien ja ohjelmakoodin rakenteen alkutilanteen kartoittamista. Alustavia ideoita ohjelmiston kehityskohteista kerättiin Vertexin asiakkailta. Ideoita saatiin paljon, joten työn aihe päätettiin rajata splinikäyrien käsittelyyn. Splinikäyrät ovat kaarevia käyriä, joita käytetään kaarevien muotojen mallinnuksessa. Työn päämenetelmänä oli Vertex G4:n vertaileminen kilpailijoiden ohjelmistoihin. Vertailussa löydettiin kehitettäviä asioita paitsi splinikäyrien toiminnasta myös yleisestä käyrän käsittelystä. Yleiseen käyränkäsittelyyn liittyen Vertex G4:ssä oli virhe kolmiulotteisten koordinaattien laskemisessa hiiren kursorin sijainnista, mikä johti myös splinikäyrien virheelliseen toimintaan. Splinikäyrien toiminnassa kehitettävää oli muun muassa splinin yleisessä käyttäytymisessä sekä tangenttikahvoissa. Tässä työssä esitellään Vertex G4:n sekä kilpailevien mallinnusohjelmistojen tapoja käsitellä splinikäyriä, todetaan havaitut kehityskohteet ja esitetään niiden korjaus sekä uusien ominaisuuksien toteutus. Tämän työn puitteissa ei ollut mahdollista toteuttaa kaikkia kehitysideoita, joten kehityskohteista toteutettiin vain tärkeimmät. Rajauksesta huolimatta työssä onnistuttiin merkittävästi kehittämään Vertex G4:n muotoilutoimintoja ja niiden käytettävyyttä. Muutokset yhdessä mahdollistavat muun muassa splinin tarkan paikoituksen. Toteutettujen muutosten seurauksena ohjelmakoodiin jouduttiin tekemään laajoja rakenteellisia muutoksia, mistä on hyötyä myös ohjelmiston myöhempää kehittämistä ajatellen.

ii ABSTRACT JERE KUUSELA: Spline curve in modelling software Tampere University of Technology Master of Science Thesis, 56 pages, 0 Appendix pages May 2016 Master s Degree Programme in Science and Engineering Major: Mathematics Examiner: Prof. Tapio Elomaa and TkT. Pasi Raumonen Keywords: spline, nurbs, modelling, curve The goal of this thesis is to improve modelling features of Vertex G4 for complex shapes. Vertex G4 is a modelling software developed by Vertex Systems and it s mostly used for designing machines. The software has been developed by different employees for over 30 years so this thesis also includes determining the initial state of both software s modelling capabilities and the code structure. Initial development ideas were gathered from Vertex s customers. Lots of ideas were acquired so the topic of this thesis had to be narrowed to the handling of spline curves. Spline curves are curved lines which are used to model curved shapes. The main method of this thesis is to compare Vertex G4 to the software of its competitors. During the comparison, shortcomings were found from both spline handling and general curve handling. The biggest error with the general curve handling was in the calculation of 3d coordinates from the cursor location which also affected spline curves. The biggest problems with spline curves were general spline behavior and lack of tangent handles. This thesis presents Vertex G4 s and its competing software s ways of handling spline curves, notices discovered issues and shows how problems were fixed and new features implemented. Discovered issues were prioritized according to their importance because it wasn t possible to implement all of them during this thesis. Still, the results significantly improved the modelling capabilities and usability of Vertex G4. The changes for example allow a precise positioning of a spline curve. Additionally the changes required wide structural changes to the code base which helps the future development of the software.

iii SISÄLLYS 1. Johdanto.................................... 1 2. Teoria...................................... 3 2.1 Mallinnusohjelmistot........................... 3 2.2 Vertex G4:n kirjastot........................... 6 2.2.1 Kolmiulotteinen avaruus....................... 6 2.2.2 Jatkuvuus.............................. 9 2.2.3 Elementtien väliset ehdot...................... 10 2.3 Splini.................................... 11 2.3.1 Bézier................................. 12 2.3.2 B-splini ja NURBS-käyrä...................... 13 3. Aiheen rajaus ja alustava selvitys....................... 17 3.1 Ideoiden kerääminen asiakkailta..................... 17 3.1.1 Asiakasyritys A............................ 18 3.1.2 Asiakasyritys B............................ 18 3.1.3 Asiakasyritys C............................ 19 3.2 Vertailtavien ohjelmistojen valinta.................... 20 4. Käyrän käsittely kolmiulotteisessa avaruudessa................ 22 4.1 Vapaa käyrän käsittely.......................... 22 4.2 Rajoitetun käyrän käsittely........................ 27 4.2.1 Rajoitukset.............................. 28 4.2.2 Ehdot................................. 31 5. Splinin käsittely................................. 33 5.1 Splinin luominen............................. 33 5.2 Splinin muokkaaminen.......................... 35 5.3 Tangentiaalisuus............................. 36

iv 5.4 Parametrisointi.............................. 38 5.5 Muu toiminnallisuus........................... 40 5.6 Kehityskohteet splinin käsittelyssä.................... 40 6. Ongelman ratkaisu............................... 42 6.1 Vapaan osoituksen epäluotettavuus................... 42 6.2 Suora- ja tasorajoituksen projisointisuunta............... 43 6.3 Splinin muokkaus............................. 45 6.4 Automaattinen tangentiaalisuus..................... 47 6.5 Splinin tangenttikahvat.......................... 50 7. Yhteenveto................................... 52 Lähteet....................................... 55

v KUVALUETTELO 2.1 Vertex G4:n historiapuun vaikutus malliin............... 5 4.1 Vertex G4:n vapaan osoituksen toimintaperiaate............ 23 4.2 Vertex G4:n vapaan osoituksen virheellinen toiminta.......... 26 4.3 Rhinoceroksen eri näkymät luonnostelussa............... 27 4.4 Tasorajoituksen toiminta......................... 29 4.5 Tasorajoituksen vaikutus osoitukseen.................. 29 4.6 Suorarajoituksen toiminta........................ 30 4.7 Suorarajoituksen vaikutus osoitukseen.................. 31 5.1 Avoimen ja suljetun splinin ero...................... 34 5.2 DesignSparkin, Rhinoceroksen, OnShapen ja Inventorin transformaatioobjektit................................... 36 5.3 SolidWorksin tangenttikahvan käyttöliittymä.............. 38 5.4 Esimerkki interpolaatiopisteiden parametriarvoista........... 39 6.1 Vertex G4:ään toteutettu tangenttikahva etäisyys- ja kulmaehdoilla. 51

vi LYHENTEET JA MERKINNÄT ACIS B-Splini CAD CAE CAM DCM NURBS PDM Spatialin kehittämän mallinnusydin Basis Splini Computer-aided Design, tietokoneavusteinen suunnittelu Computer-aided Engineering, tietokoneavusteinen simulointi Computer-aided Manufacturing, tietokoneavusteinen valmistus Dimensional Constraint Manager, ehtojen ratkaisija, Siemensin kehittämä kirjasto Non-uniform Rational Basis Spline, yleisesti käytetty splinin määritelmä Product Data Management, tuotetiedon hallinta α β γ a b B c C n d e f G n h i I j k L N n Rotaation kulma Rotaation kulma Rotaation kulma Parametriavaruuden alaraja tai apumuuttuja Parametriavaruuden yläraja tai apumuuttuja Bernstein-polynomi (Bèzier-käyrän kantafunktio) Apumuuttuja Parametrinen jatkuvuus Apumuuttuja Apumuuttuja Apumuuttuja Geometrinen jatkuvuus Korkeus Summauksen indeksi, järjestysnumero tai koordinaatiston kantavektori Sisäinen vapausaste Summauksen raja tai koordinaatiston kantavektori Koordinaatiston kantavektori tai järjestysnumero Käyrä B-splinin kantafunktio Kertaluokka, pisteiden lukumäärä, summan yläraja tai avaruuden ulottuvuus

vii O P p R S T u V w x y z Origo Käyrän kontrollipiste Käyrän aste Rajoitettu piste tai rotaatio Parametripiste Transformaatiomatriisi tai translaatio Käyrän parametri Vapausasteet Painokerroin, pinnan parametri tai leveys X-koordinaatti tai akseli X-koordinaatti tai akseli X-koordinaatti tai akseli

1 1. JOHDANTO Vertex Systems on 38 vuotta vanha tamperelainen yritys, joka tekee ohjelmistoja teollisuudelle [25]. Yrityksen tuotteisiin kuuluvat esimerkiksi mekaniikkasuunnittelu, laitossuunnittelu, rakennussuunnittelu, kalustesuunnittelu ja tuotetiedon hallinta. Tässä työssä keskitytään mekaniikkasuunnitteluohjelmisto Vertex G4:ään [24], jota voidaan käyttää esimerkiksi ajoneuvojen, kodinkoneiden, työkalujen ja toimistotarvikkeiden suunnitteluun. Tavoitteena oli kehittää Vertex G4:n muotoiluominaisuuksia. Tärkeä osa tätä työtä oli myös Vertex G4:ssä jo valmiina olleiden muotoiluominaisuuksien tarkan toiminnan selvittäminen, jotta kehitystyö osattiin kohdistaa oikein. Kehitystyön pohjaksi kerättiin alustavia kehitysideoita kolmelta asiakasyritykseltä. Asiakkaiden toiveet olivat laajoja, joten työn aihetta täytyi rajata. Vertexin sisäisissä palavereissa aiheeksi päätettiin splinikäyrien käsittely. Splinipintoja ei käsitellä ollenkaan, joten tässä työssä splinillä tarkoitetaan aina splinikäyrää. Myös splinikäyriin liittyviä kehityskohteita löytyi paljon, joten niistäkään kaikkia ei voitu käsitellä. Tässä työssä esiteltävät kehityskohteet ovat pääasiassa sellaisia, jotka korjattiin työn aikana. Vertex G4:n splinitoimintojen kehitys on aloitettu yli 20 vuotta sitten, eli ohjelmistossa oli jo valmiina toimintoja splinin käsittelemiseksi. Pitkän kehitysajan takia Vertexillä ei ollut kuitenkaan tarkkaa tietoa ohjelmiston ominaisuuksista ja ohjelmakoodin rakenteesta. Oletuksena oli, että muotoilutoimintojen kehittämiseksi ja uusien ominaisuuksien toteuttamiseksi Vertex G4:n splinin rakennetta täytyy muuttaa. Tästä seuraa tarve myös laajemmille ohjelmakoodin muutoksille, koska kaikki vanhat toiminnot joudutaan päivittämään. Vertex G4:ssä on ollut jo vuosia käytössä kolmannen osapuolen kirjastoja, joista löytyy matemaattinen tuki splinille. Kirjastot sisältävät myös paljon muutakin toiminnallisuutta, eikä Vertexillä ollut tarkkaa tietoa kirjastojen tarjoamista mahdollisuuksista. Samat kirjastot löytyvät useista kilpailijoiden ohjelmistoista, joten yleisimpien toimintojen voidaan olettaa löytyvän

1. Johdanto 2 suoraan kirjastoista. Matemaattisten kirjastojen ansiosta työssä ei toteuteta tai selitetä spliniin liittyvää perustoimintaa, kuten interpolaatiopisteiden siirtämistä. Jos lukija on kuitenkin tästä kiinnostunut, niin perustoimintojen toteutusta löytyy esimerkiksi NURBSkirjasta [14]. Tässä työssä esitellään splinin määritelmä, koska sitä tarvitaan kirjastojen toimintojen ymmärtämiseksi. Kirjastojen toiminnot täytyy ymmärtää, jotta voidaan päätellä, mitä kirjastojen toimintoja kilpailijoiden ohjelmistot käyttävät, vaikka ohjelmistojen tarkkoja toteutuksia tai lähdekoodeja ei olisikaan saatavilla. Splinikäyriin liittyvien ominaisuuksien kehittämiseksi Vertex G4:n toimintoja verrattiin kilpailevien yritysten vastaaviin ohjelmistoihin. Olennainen osa tätä työtä onkin kilpailevien ohjelmistojen toimintojen analysoiminen. Analysoimisen yhtenä tarkoituksena oli selvittää, miten G4 eroaa kilpailijoiden ohjelmistoista. Työssä käsitellään löytyneet eroavaisuudet ja joko osoitetaan G4:n toiminta perustelluksi tai esitellään toiminnon korjaamiseksi tehdyt muutokset. On tärkeää ymmärtää, että toiminnon oikeellisuus ei perustu pelkästään käsiteltävään toimintoon, vaan koko ohjelmiston yleiseen toiminnallisuuteen, mikä tekee ohjelmistojen vertailemisesta hankalaa. Työn alussa käsitellään tarpeellinen teoria työn ongelmien ja ratkaisujen ymmärtämiseksi. Teoria koostuu mallinnusohjelmistojen yleisen toiminnan, kolmiulotteisen avaruuden ja splinin määritelmän esittelystä. Kaikki testatut mallinnusohjelmistot käyttävät euklidista avaruutta karteesisella koordinaatistolla, jonka perusominaisuudet oletetaan työssä tunnetuiksi. Koordinaatiston ja geometrian määrittely sekä koordinaatiston kantojen vaihtaminen esitellään kertauksena. Tässä työssä splininä käytetään NURBSia (eng. non-uniform rational basis spline), minkä lyhyt historia ja määrittely esitellään teoriaosuudessa. NURBSin käyttö on perusteltua, sillä G4:n kirjastot tukevat ainoastaan sitä. Historian ja NURBSin esivaiheiden esittelyn tarkoituksena on helpottaa NURBSin ymmärtämistä. Teorian jälkeen esitellään ongelman selvittäminen, eli mitä työn alkuvaiheessa tehtiin kokonaisuuden ymmärtämiseksi ja aiheen rajaamiseksi. Neljännessä ja viidennessä luvussa analysoidaan kilpailijoiden tuotteita ja selvitetään G4:n ongelma- ja kehityskohtia. Viidennen luvun yhteenvedossa on lista kehityskohteista ja arvio kohteiden tärkeydestä. Kuudennessa luvussa on pelkistetyt ja selitetyt ohjelmakoodit G4:ään korjatuista asioista, jotka ovat pääasiassa pienten ohjelmistovirheiden perusteltua korjaamista. Viimeisessä luvussa on yhteenveto työstä ja sen tuloksista, sekä muutama jatkokehitysidea.

3 2. TEORIA Luvun alussa esitellään mallinnusohjelmistojen yleiset toimintaperiaatteet ja määritellään yleisimmin käytetyt termit. Lisäksi työn lähtötilanteen selventämiseksi käsitellään tarkemmin Vertex G4:n toimintaa. Toiminnasta esitellään käyrien käsittely, käytetyt matemaattiset kirjastot sekä geometrinen avaruus ja elementit. Ohjelmistojen käyttäjille geometrian määrittely voi vaikuttaa itsestään selvältä, koska suurin osa ohjelmistoista perustuu yleisesti tunnettuun karteesiseen koordinaatistoon. Matematiikan näkökulmasta määrittelyt ovat kuitenkin tärkeitä, koska vaihtoehtoisia avaruuksia on useita. Splineistä kerrotaan lyhyt yleiskuvaus ja tarkemmat määrittelyt Bézier-, B- ja NURBS-käyristä. Vertex G4:n mallinnusydin perustuu NURBsplineihin, joten niiden käsittely käydään läpi muita tarkemmin. 2.1 Mallinnusohjelmistot Mallinnusohjelmistoja käytetään tietokoneavusteiseen suunnitteluun (eng. CAD, Computer-aided Design). Tietokoneavusteisen suunnittelun lisäksi mallinnusohjelmistot yleensä sisältävät toimintoja myös muista osa-alueista, kuten tietokoneavusteisesta simuloinnista (eng. CAE, Computer-aided Engineering), tietokoneavusteisesta valmistuksesta (eng. CAM, Computer-aided Manufacturing) sekä tuotetiedon hallinnasta (eng. PDM, Product Data Management). Ohjelmistot ovat usein laajaalaisia, joten tarkkaa erottelua käyttötarkoituksen perusteella ei voi tehdä. Ohjelmistot keskittyvät kuitenkin yleensä yhteen osa-alueeseen, kuten esimerkiksi mekaaniseen suunnitteluun tai rakennusten suunnitteluun. Tässä työssä käsitellään vain mekaaniseen suunnitteluun tarkoitettuja mallinnusohjelmistoja. Mallinnusohjelmistot voidaan jaotella niiden yleisen toimintaperiaatteen perusteella. Vaihtoehtoina ovat:

2.1. Mallinnusohjelmistot 4 Parametrinen mallinnus historiavaiheilla. Parametrinen mallinnus ilman historiavaiheita. Suoramallinnus historiavaiheilla. Suoramallinnus ilman historiavaiheita. Käytännössä jaottelu ei ole yksinkertaista, koska ohjelmistoista löytyy usein piirteitä kaikista vaihtoehdoista. Historiallisista syistä parametrisella mallinnuksella voidaan tarkoittaa lisäksi myös historiavaiheita, joten termien merkitys vaihtelee eri lähteissä [11]. Tässä työssä parametrinen mallinnus tarkoittaa mallin muokkaamista numeroarvoilla. Tämän vastakohtana on suoramallinnus, jossa mallia muokataan hiiren kursorilla. Parametrisen mallinnuksen etuna on, että mallin geometria on tarkasti määriteltyä. Tämä soveltuu hyvin mallinnuksen loppuvaiheeseen, jolloin tarkat määrittelyt ovat tiedossa. Mallinnuksen alkuvaiheessa suoramallinnus on usein parempi, koska suunnittelijalla ei ole tiedossa mallin mittoja. Tällöin parametrinen mallinnus on hidasta ja vaikeaa, koska suunnittelijan täytyy keksiä sopivat arvot. Suoramallinnuksessa suunnittelijan on helpompi arvioida muutostensa vaikutus. Nykyään ohjelmistoista löytyy molemmat mallinnustavat, mutta tapojen laajuus vaihtelee. Historiavaiheilla tarkoitetaan malliin liittyvää historialistaa. Lista koostuu mallin muokkaukseen käytetyistä toiminnoista. Yleensä toiminnosta aiheutuva vaihe lisätään listan loppuun, mutta myös muut kohdat ovat mahdollisia. Historiavaiheita voidaan poistaa ja muokata. Muokkaus voi olla esimerkiksi vaiheen siirtämistä listassa, toiminnon arvojen muuttamista parametrisesti tai suoraan tai toiminnon korvaamista toisella toiminnolla. Historiavaiheiden järjestys vaikuttaa lopputulokseen, joten ohjelmiston käyttäminen vaatii suunnitelmallisuutta. Toimintojen käyttäminen oikeassa järjestyksessä ja oikealla tavalla vähentää historiavaiheiden määrää, mikä nopeuttaa työskentelyä ja tekee mallin ylläpidosta helpompaa. Kuvassa 2.1 on kaksi mallia, joilla molemmilla on kolme samaa historiavaihetta. Ylemmässä mallissa aineen poisto on viimeisenä, joten se vaikuttaa kaikkiin aiempiin historiavaiheisiin. Alempi malli on saatu ylemmästä mallista siirtämällä yhden historiavaiheen paikkaa historiapuussa. Tällöin aineen poisto vaikuttaa vain ensimmäiseen historiavaiheeseen, joten ainetta ei poisteta koko mallista. Historiavaiheet tuovat lisää tietoa ja mahdollisuuksia mallinnukseen. Jos tätä etua ei haluta käyttää, suunnittelija voi periaatteessa sivuttaa historiatiedot. Historiavaiheiden käyttäminen on kuitenkin ohjannut ohjelmistojen kehitystä, joten näiden

2.1. Mallinnusohjelmistot 5 Kuva 2.1 Vertex G4:n historiapuun vaikutus malliin. ohjelmistojen useat toiminnot eivät toimi kunnolla ilman historiavaiheita. Tällöin historiavaiheiden käyttäminen on pakollista, mikä tekee mallinnuksesta monimutkaisempaa. Tämä vaatii suunnittelijoilta enemmän ammattitaitoa. Isoin ongelma historiavaiheiden käytössä on mallien siirtäminen toiseen ohjelmistoon. Historiavaiheiden tallennusformaatille ei ole yleistä standardia, joten tiedot eivät välity muille ohjelmistoille. Tämä rajoittaa muista ohjelmistoista tuotujen mallien käsittelyä merkittävästi. Vertex G4:n mallinnus perustuu historiavaiheisiin ja parametriseen mallinnukseen. Ohjelmistossa on myös suoramallinnukseen perustuvia toimintoja. Näitä toimintoja löytyy erityisesti luonnosten käsittelystä eli luonnostelusta. Luonnokset koostuvat käyristä ja ne määrittävät joidenkin toimintojen lopputuloksen. Esimerkiksi luonnoksella voidaan määrittää kappaleesta poistettavan osuuden muoto ja koko. Vertex G4:n mallinnuksessa käyrät kuuluvat aina johonkin luonnokseen, joten tässä työssä

2.2. Vertex G4:n kirjastot 6 käsitellään pääasiassa luonnostelua. Luonnos voi olla joko kaksi- tai kolmiulotteinen. Kaksiulotteista luonnosta kutsutaan tasoluonnokseksi. Luonnostelussa käyriä voi lisätä ja muokata suoramallinnuksella tai parametrisella mallinnuksella. Käyrä lisätään valitsemalla sen pisteille sijainnit luonnoksesta. Suoramallinnuksella sijainti osoitetaan kursorilla ja parametrisella mallinnuksella sijainti annetaan näppäimistöllä koordinaattien arvoina. Käyrää voidaan muokata vetämällä sitä kursorilla tai asettamalle sille ehtoja eli parametrisia relaatioita. Vetämisessä valitun elementin sijainti siirretään jatkuvasti kursorin osoittamaan paikkaan. Ehdot käsitellään tarkemmin luvussa 2.2.3. 2.2 Vertex G4:n kirjastot Vertex G4:n mallinnuksen matemaattinen ydin perustuu kahteen kolmannen osapuolen kirjastoon. Nämä ovat Spatialin kehittämä ACIS-mallinnusydin [2] ja Siemensin kehittämä ehtojen ratkaisija D-Cubed 3D DCM (eng. Dimensional Constraint Manager) [8]. Mallinnusytimellä voidaan tehdä geometrisia operaatioita, joihin kuuluvat esimerkiksi muotoilutoiminnot. Vertex G4:ssa ydintä käytetään vain pintojen ja tilavuuksien käsittelyyn. Ehtojen ratkaisijalla ratkaistaan geometrioiden väliset parametriset relaatiot, joita kutsutaan ehdoiksi. Lisäksi molemmissa kirjastoissa on myös toimintoja splinikäyrien ja splinipintojen käsittelemiseen. Tässä luvussa esitellään luonnostelun kannalta keskeisiä matemaattisia käsitteitä, joihin mallinnusytimen ja ehtojen ratkaisijan toiminta perustuu. Lisäksi käydään tarkemmin läpi ehtojen ratkaisijan toimintaa, koska sitä tarvitaan luonnostelussa. 2.2.1 Kolmiulotteinen avaruus Kirjastojen toiminta perustuu euklidiseen avaruuteen [9, s. 21]. Euklidinen avaruus toteuttaa ns. Hilbertin aksioomat [12, s. 57]. Nämä määrittävät alkeisgeometriset ominaisuudet, joita ovat esimerkiksi yhdensuuntaisuuden käsite ja pisteiden välinen etäisyys [13, s. 78]. Aksioomat ja alkeisgeometriset ominaisuudet oletetaan tässä työssä tunnetuiksi. Ehtojen ratkaisijan käyttämää koordinaatistoa ei ole kerrottu sen manuaalissa, mutta sen oletetaan olevan karteesinen. Karteesinen koordinaatisto on suoraviivainen koordinaatisto, jonka kannat i, j ja k ovat ortonormeerattuja ja positiivisesti suunnistettuja. Kantavektorit alkavat samasta pisteestä, jota kutsutaan origoksi. Euklidiseen avaruuteen liittyy geometrinen vektoriavaruus, kun siihen

2.2. Vertex G4:n kirjastot 7 valitaan karteesinen koordinaatisto [13, s. 80]. Geometrisella vektoriavaruudella on samanlaiset ominaisuudet kuin vektoriavaruuden R 3 pystyvektoreilla. Tämä tarkoittaa, että jokaista geometrista pistettä vastaa pystyvektori x y z, (2.1) missä x, y ja z ovat reaalilukuja [13, s. 82-83]. Seurauksena on, että geometrisessa tarkastelussa voidaan käyttää matriisialgebraa. Lisäksi pystyvektorit voidaan esittää koordinaatiston kantavektoreiden lineaariyhdistelmänä, jonka kertoimia kutsutaan pisteen koordinaateiksi. Koordinaatit ovat muotoa (x, y, z) ja niitä vastaa yhtälö P = xi + yj + zk, (2.2) missä P on avaruuden piste ja i, j sekä k ovat kantavektoreita. X-akseliksi määritellään ne pisteet, joiden koordinaatit ovat muotoa (x, 0, 0). Eli akselilla olevien pisteiden sijaintivektori on yhdensuuntainen kantavektorin i kanssa. Y - ja z-akselit määritellään vastaavasti. Näitä akseleita kutsutaan pääakseleiksi ja niiden virittämiä tasoja kutsutaan pääakselien virittämiksi tasoiksi. Esimerkiksi pisteet x- ja y-akselin virittämällä tasolla ovat muotoa (x, y, 0). Euklidisessa avaruudessa pisteiden P 0 ja P 1 välinen etäisyys määritellään pisteestä P 0 pisteeseen P 1 kulkevan suoran pituutena. Suoran pituus määritellään karteesisessa koordinaatistossa pisteiden välisen vektorin normina. Kolmiulotteisessa avaruudessa vektorin V normi lasketaan kaavalla V = x 2 + y 2 + z 2, (2.3) jossa x, y ja z ovat vektorin koordinaatit [13, s. 100]. Tällöin pisteiden P 0 ja P 1 välinen etäisyys saadaan kaavalla P 1 P 0 = (x 1 x 0 ) 2 + (y 1 y 0 ) 2 + (z 1 z 0 ) 2, (2.4) jossa x 0, y 0 ja z 0 ovat pisteen P 0 koordinaatit ja x 1, y 1 ja z 1 ovat pisteen P 1 koordinaatit [13, s. 101]. Normin laskeminen pisteelle P vastaa sen etäisyyttä origosta. Karteesisen koordinaatiston kantojen suunnat ja origon sijainti eivät ole yksiselitteisiä, vaan ne voidaan valita vapaasti. Tämä tarkoittaa, että pisteen koordinaatit

2.2. Vertex G4:n kirjastot 8 eivät ole yksiselitteisiä, vaan perustuvat käytössä olevaan koordinaatistoon. Koordinaatisto voidaan vaihtaa, jolloin pisteen koordinaatit vaihtuvat ilman, että sijainti vaihtuu. Kaava tälle on P = O 0 + T P, (2.5) jossa P on uusi koordinaattimatriisi, O 0 on origon muunnosmatriisi, T on kantojen muunnosmatriisi ja P on vanha koordinaattimatriisi. Kantojen muunnosmatriisin koko on n n ja muiden matriisien koko on 1 n, jossa n on tasolle kaksi ja avaruudelle kolme. Origon muunnosmatriisi vastaa vanhan koordinaatiston origon paikkavektoria uuden koordinaatiston suhteen ja kantojen muunnosmatriisi vastaa vanhan koordinaatiston kantoja uuden koordinaatiston suhteen. Jos molempien koordinaatistojen kantavektorit ovat ortonormeerattuja, kantojen muunnosmatriisi on ortogonaalinen, eli T 1 = T T. Tällöin koordinaatiston vaihtamisen käänteisoperaatiosta P = T 1 O 0 + T 1 P (2.6) tulee P = T T O 0 + T T P. (2.7) [13, s. 96] Kertauksena esitellään työn kannalta tärkeimpiä termejä. Piste määritellään avaruuden koordinaatteina (x, y, z), (2.8) joissa x, y ja z ovat niitä vastaavien akselien koordinaatteja. Käyrät ja pinnat voidaan matemaattisesti määritellä joko eksplisiittisesti, implisiittisesti tai parametrisesti [19, s. 2]. Näistä valitaan parametrinen määrittely, koska splinit määritellään myöhemmin samalla tavalla. Käyrä määritellään koordinaattifunktioilla (x(u), y(u), z(u)), (2.9) joissa u on reaaliparametri. Vastaavasti pinta määritellään koordinaattifunktioilla (x(u, w), u(u, w), z(u, w)), (2.10) joissa u ja w ovat reaaliparametreja. Suora määritellään äärettömän pitkänä käyränä, jonka derivaatan suunta on vakio. Derivaatta on vektori, jonka suunta määritel-

2.2. Vertex G4:n kirjastot 9 lään kaavalla (x, y, z ) (x, y, z ), (2.11) jossa x, y ja z ovat derivaatan arvot. Jana määritellään suorana, jolla on alku- ja loppupiste. Taso määritellään äärettömän suurena pintana, jonka normaalin suunta on vakio. Esimerkiksi jana voidaan määritellä parametrisesti koordinaateilla (x 1 + (x 2 x 1 )u, (y 1 + (y 2 y 1 )u, (z 1 + (z 2 z 1 )u), (2.12) joissa u on reaaliparametri, x 1, y 1 ja z 1 ovat janan alkupisteen koordinaatit ja x 2, y 2 ja z 2 ovat janan loppupisteen koordinaatit. Tästä voi huomata, että tietyntyyppiset käyrät voidaan määritellä pisteillä. Esimerkiksi suora sekä jana voidaan määritellä kahdella pisteellä, kaari kolmella pisteellä ja taso kolmella pisteellä. 2.2.2 Jatkuvuus Jatkuvuus jaetaan parametriseen jatkuvuuteen ja geometriseen jatkuvuuteen. Parametrista jatkuvuutta merkitään kirjaimella C n, jossa n on parametrisen yhtälön suurin jatkuva derivaatta. Geometristä jatkuvuutta merkitään kirjaimella G n, jossa n on geometrisen pinnan tai käyrän tasaisuus. Jatkuvuuden aste on luvun n arvo. Esimerkiksi C 2 on toisen asteen parametrinen jatkuvuus. Jatkuvuudella on voimassa, että jos G n on voimassa, myös G n 1 on voimassa sekä jos C n on voimassa, myös C n 1. Lisäksi jos C n on voimassa, G n on voimassa, mutta ei toisinpäin. [1] G 0 : Paikan jatkuvuus. käyrän tai pinnan kaikki osat ovat kiinni toisissaan. G 1 : Tangentin jatkuvuus. käyrässä tai pinnassa ei ole teräviä kulmia. G 2 : Kaarevuuden säteen jatkuvuus. käyrän tai pinnan kaarevuus muuttuu tasaisesti. Vertex G4:n käyttämä mallinnusydin tarvitsee vähintään G 0 -jatkuvuuden toimiakseen. G 1 -jatkuvuutta suositellaan, jotta kaikki toiminnot antavat luotettavan tuloksen [1]. Tämä ei ole ongelma, koska G 0 -jatkuva käyrä voidaan muuttaa useaksi G 1 -jatkuvaksi käyräksi jakamalla se epäjatkuvuuskohdista. Käytännössä jatkuvuus yhdistetään geometrian tasaisuuteen. Korkeamman asteen jatkuvuus tarkoittaa tasaisempaa geometriaa, mutta hidastaa käyrän laskemista. Käytännössä tasaiseen lopputulokseen tarvitaan vähintään C 2 jatkuvuutta [19, s. 12].

2.2. Vertex G4:n kirjastot 10 2.2.3 Elementtien väliset ehdot Vertex G4 käyttää ehtojen ratkaisijaa mallin elementtien välisten ehtojen ratkaisemiseen. Ehto on yhteen tai useampaan elementtiin liittyvä ominaisuus, joka voi olla kvalitatiivinen tai kvantitatiivinen arvo. Kvalitatiivisia arvoja ovat esimerkiksi kohtisuoruus, tangentiaalisuus ja yhtenevyys. Kvantitatiivisia arvoja ovat esimerkiksi pituus, etäisyys ja säde. Jokaisella elementillä on tietty määrä vapausasteita, jotka määrittävät kuinka monella tavalla elementtiä voi muokata. Vapausasteiden määrä V saadaan kaavalla V = T f T s + R f R s + I s, (2.13) jossa T f on translaation vapausasteiden lukumäärä, T s on translaation symmetrioiden lukumäärä, R f on rotaation vapausasteiden lukumäärä, R s on rotaation symmetrioiden lukumäärä ja I s on sisäisten vapausasteiden lukumäärä [9, s. 21]. Kolmiulotteisessa avaruudessa translaatiolla sekä rotaatiolla on kolme vapausastetta. Esimerkiksi pisteellä on kolme vapausastetta, koska sillä on kolme rotaation symmetriaa. Ehdot vähentävät elementin vapausasteita, mikä rajoittaa sen paikkaa, rotaatiota tai kokoa. Pisteen kiinnitys johonkin paikkaan poistaa kaikki vapausasteet, joten pistettä ei voi enää muokata. Tähän pisteeseen voidaan kiinnittää toinen piste etäisyysehdolla. Tämä poistaa yhden vapausasteen, joten jälkimmäistä pistettä voi liikuttaa vain kahdessa suunnassa. Tässä tapauksessa pistettä voi liikutella pallopinnalla. Ehtojen ratkaisijan yleinen ratkaisuperiaate on 1. Analysoidaan elementtien väliset ehdot ja määritetään sopiva ratkaisumetodi. 2. Lasketaan elementtien geometriat niin, että ne toteuttavat ehdot niin hyvin kuin mahdollista ja yritetään pitää elementtien suhteellinen järjestys samana. 3. Asetetaan jokaiselle elementille tilakoodi. Tilakoodilla voi olla kolme eri arvoa; täysin määritelty, alimääritelty ja ylimääritelty. Täysin määritellyillä elementeillä ei ole yhtään vapausastetta, jolloin niiden geometrialle löytyy vain yksi ratkaisu, joka toteuttaa ehdot. Alimääritellyillä elementeillä on vapausasteita, jolloin niiden geometrialle löytyy useita ratkaisuja, jotka toteuttavat ehdot. Ylimääritellyillä elementeillä on ristiriitaisia ehtoja, jolloin niiden

2.3. Splini 11 geometrialle ei löydy ratkaisua. Esimerkiksi kaksi erisuuruista etäisyysehtoa kahden pisteen välillä ovat ristiriitaisia. [9, s. 14 16] Kirjastossa on viisi eri vaihtoehtoa ehtojen ratkaisemiseksi. Yleinen ratkaisu vastaa yleistä ratkaisuperiaatetta. Kasautuva ratkaisu käyttää aiemman ratkaisun tuloksia, joten se toimii nopeammin kuin yleinen ratkaisu. Kasautuvaa ratkaisua ei voi kuitenkaan käyttää, jos malli on muuttunut paljon. Liikuttavan ratkaisun tarkoituksena on ylläpitää elementtien suhteellista järjestystä yleistä tapaa paremmin. Liikkuvassa ratkaisussa ehtojen ratkaisijalle annetaan liikuteltavat elementit ja transformaatiomatriisi. Ratkaisun alussa ehtojen ratkaisija laskee elementtien suhteellisen järjestyksen, minkä jälkeen se liikuttaa elementtejä ja ratkaisee ehdot. Jos ratkaisuja on useita, valitaan sen, joka noudattaa parhaiten alkutilanteen suhteellista järjestystä. Loput kaksi ratkaisutapaa ovat tarkoitettu elementtien vetämiseen. Transformaatioveto toimii samalla periaatteella kuin liikuttava ratkaisu. Elementtien suhteellista järjestystä ei kuitenkaan säilytetä. Ehtojen ratkaisijalla ei ole tietoa kursorin sijainnista tai katselusuunnasta, joten ehtojen ratkaisu voi siirtää vedettävät elementit pois kursorin alta. Tätä ongelmaa on vähennetty suoravedossa, jossa ehtojen ratkaisijalle annetaan suora, jossa vedettävät elementit pyritään pitämään. Kun suora määritellään kursorin kohdalla olevina pisteinä, vedettävät elementit pysyvät paremmin kursorin kohdalla. 2.3 Splini Termi splini tulee piirtäjien käyttämästä työkalusta, jonka avulla voidaan piirtää kaarevia käyriä. Splini on joustava, pitkä ja kapea kappale, joka kiinnitetään päätepisteistä sekä halutuista pisteistä painojen avulla. Kappale kaartuu tasaisesti kiinnitettyjen pisteiden välillä minimienergian mukaisesti. Samaa periaatetta käytettiin 1950-luvun autoteollisuudessa. Autot usein suunniteltiin pieninä savimalleina, jotka skaalattiin oikean kokoisiksi. Tähän kuului useita virhealttiita työvaiheita, joiden onnistuminen perustui työntekijöiden taitoon ja arviointikykyyn. 1950-luvun lopussa tietokoneohjatut työstökoneet yleistyivät. Näillä koneilla voitiin tehdä tarkasti perusmuotoja, kuten suoria, ympyröitä ja paraabeleja. Kaarevien käyrien tekeminen ei kuitenkaan onnistunut, joten vuonna 1959 Citroën palkkasi Paul de Faget de Casteljaun kehittämään tähän matemaattisen mallin. Tulosta ei kuitenkaan julkaistu, joten Renaultin pääsuunnittelija Pierre Bézier kehitti

2.3. Splini 12 oman vastaavan mallinsa. Myöhemmin General Motorsin tutkija Carl de Boor kehitti rekursiivisen metodin B-splinien laskemiselle Schoenbergin 1940-luvun tulosten pohjalta. B-splinin huomattiin olevan yleistys Bézierin mallista. Vuonna 1983 lentokonevalmistaja Boeing kehitti NURBS-mallin 1970-luvun tutkimustulosten pohjalta. NURBS-malli on yleistys B-splinistä, joten sillä on laajempi potentiaalinen soveltuvuus. Boeing onnistui standardisoimaan NURBS-mallin, minkä takia sen käyttö yleistyi nopeasti. [23] 2.3.1 Bézier Bézier-käyrä määritellään kaavalla L(u) = n B i,n (u)p i, (2.14) i=0 jossa u on parametriavaruuden arvo, n on käyrän aste sekä kontrollipisteiden lukumäärä, B i,n on kantafunktio ja P i on kontrollipiste [14, s. 9]. Parametriavaruutena on väli [0, 1]. Kantafunktio on Bernstein-polynomi, joka määritellään kaavalla B i,n (u) = n! i!(n i)! ui (1 u) n i, (2.15) jossa u, n ja i ovat samat kuin kaavassa myös laskea rekursiivisesti kaavalla 2.14 [14, s. 10]. Kantafunktiot voidaan mikä on laskennallisesti nopeampaa. B i,n (u) = (1 u)b i,n 1 (u) + ub i 1,n 1 (u), (2.16) Rationaalisen Bézier-käyrän määritelmä on L(u) = n i=0 B i,n(u)w i P i n i=0 B i,n(u)w i, (2.17) jossa w i on painoarvo ja muut parametrit vastaavat kaavan 2.14 arvoja. Rationaalinen Bézier-käyrä on yleistys Bézier-käyrästä. Jos jokainen w:n arvo on yhtä suuri, n B i,n (u)w i = w i, (2.18) i=0

2.3. Splini 13 koska yhtälö n B i,n (u) = 1, (2.19) i=0 on voimassa jokaiselle u:n arvolle välillä [0, 1] [14, s. 16]. Tällöin painoarvo w i supistuu, jolloin kaavasta 2.17 tulee kaava 2.14. Bézier-splini koostuu Bézier-käyristä tai rationaalisista Bézier-käyristä, joiden yhdistyspisteillä on C n jatkuvuus. C 0 jatkuvuudella ainoa rajoitus on, että viereisten käyrien loppu- ja alkupisteen täytyy olla samassa paikassa. Käyrille L ja M tämä tarkoittaa, että L n = M 0, (2.20) jossa L n on käyrän viimeinen piste ja M 0 on käyrän ensimmäinen piste. C 1 jatkuvuudella viereisten käyrien loppu- ja alkupisteen tangenttivektorien suunnat ja voimakkuudet täytyvät olla samat. Tämä tarkoittaa, että n(l n L n 1 ) = m(m 1 M 0 ), (2.21) jossa n ja m ovat käyrien L ja M kontrollipisteiden lukumäärät [19, s. 31]. Jos lukumäärät ovat yhtä suuret, käyrien yhdistyspiste on pisteiden L n 1 ja M 1 puolivälissä. C 2 jatkuvuuden rajoituksena on yhtälö n(n 1)(L n 2 2L n 1 + L n ) = m(m 1)(M 0 2M 1 + M 2 ), (2.22) jossa n ja m ovat käyrien L ja M kontrollipisteiden lukumäärät [19, s. 31 32]. Tämä rajoittaa kolmannen asteen käyrien käsittelyä merkittävästi, sillä pisteiden paikat eivät ole toisistaan riippumattomia. 2.3.2 B-splini ja NURBS-käyrä B-splini määritellään vastaavasti kuin Bézier-käyrä. Kaavana on L(u) = n N i,p (u)p i, (2.23) i=0 jossa u on parametriavaruuden arvo, n on kontrollipisteiden lukumäärä, p on käyrän aste, N i,p on kantafunktio ja P i on kontrollipiste [14, s. 81]. Parametriavaruutena on väli [a, b], jossa a on solmuvektorin pienin arvo ja b on solmuvektorin suurin arvo.

2.3. Splini 14 Kantafunktio N i,n määritellään kaavoilla N i,0 (u) = { 1 jos u i u < u i+1 0 muuten (2.24) ja kaavalla N i,p (u) = u u i N i,p 1 (u) + u i+p+1 u N i+1,p 1 (u), (2.25) u i+p u i u i+p+1 u i+1 joissa u, p sekä i ovat samat kuin kaavassa 2.23 ja u i, u i+1 sekä u i+p+1 ovat solmuvektorin alkioita [14, s. 50]. Solmuvektori U on kasvava lukujono, jossa on n + p + 1 alkiota [19, s. 53]. Tasaisesti jaetussa solmuvektorissa ensimmäiset p + 1 arvoa ovat yhtä suuria kuin a ja viimeiset p + 1 arvoa ovat yhtä suuria kuin b. Muiden arvojen välit ovat yhtä suuret. Yleensä solmuvektorin arvot alkavat nollasta ja joko kasvavat yhdellä tai ovat normalisoitu välille [0, 1] [19, s. 48]. Esimerkiksi kolmannen asteen käyrällä ja viidellä kontrollipisteellä saadaan solmuvektori (0, 0, 0, 0, 1, 2, 2, 2, 2). Tämä voidaan normalisoida solmuvektoriksi (0, 0, 0, 0, 1/2, 1, 1, 1, 1). Normalisointi ei vaikuta käyrän muotoon. B-splini on suurimmaksi osaksi äärettömästi jatkuvaa. Epäjatkuvuuskohdat ovat solmuvektorin arvojen kohdalla. Solmujen jatkuvuus C(u) saadaan kaavalla C(u) = C p ku, (2.26) missä u on solmun arvo, p on käyrän aste ja k u on solmun u moninkerta [14, s. 57]. Moninkerralla tarkoitetaan, että kuinka monta kertaa sama arvo toistuu solmuvektorissa. Jos solmuvektorissa ei ole moninkertoja, splinin jatkuvuus saadaan suoraan sen asteesta. Ehtojen ratkaisijasta löytyy asetus, jolla splinille saa luotua "mukavamman parametrisoinnin"[9, s. 169]. Asetusta voi käyttää vain, jos splinin välipisteille ei ole asetettu tangentin suuntaa. Tämä rajoittaa splinin käsittelyä liian paljon, joten asetusta ei tässä työssä tutkita tarkemmin. NURBS-käyrä määritellään rationaalisena B-splininä. Kaavana on L(u) = n i=0 N i,p(u)w i P i n i=0 N i,p(u)w i, (2.27) jossa w i on painoarvo ja muut parametrit vastaavat kaavan 2.23 arvoja. Tämä voidaan muuttaa yksinkertaisempaan ei-rationaaliseen muotoon homogeenisten koor-

2.3. Splini 15 dinaattien avulla [14, s. 120]. Kaava 2.27 muuttuu muotoon L w (u) = n N i,p (u)p w i, (2.28) i=0 jossa P w i = (w i x i, w i y i, w i z y, w i ). (2.29) Rationaalinen B-splini on yleistys B-splinistä. Jos jokainen w:n arvo on yhtä suuri, n N i,p (u)w i = w i, (2.30) i=0 koska yhtälö n N i,p (u) = 1. (2.31) i=0 on voimassa jokaiselle u:n arvolle välillä [a, b]. Tällöin painoarvo w i supistuu, jolloin kaavasta 2.27 tulee kaava 2.23. Todistetaan yhtälö 2.31. Jokaiselle solmuvälille [u j, u j+1 ] on voimassa, että j p 1 i=0 N i,p (u) + n i=j+1 N i,p (u) = 0 (2.32) ja j i=j p N i,p (u) = 1, (2.33) kun u on välillä [u j, u j+1 ] [14, s. 56-57]. Jokainen välillä [a, b] oleva u kuuluu vain yhteen solmuväliin [u j, u j+1 ], koska solmuvektorin arvot ovat kasvavia. Yhtälöt 2.32 ja 2.33 ovat siis voimassa jokaiselle u:lle välillä [a, b]. Summaamalla yhtälöt puolittain saadaan yhtälö 2.31. Splinin yksi perusideoista on, että sitä voi muokata intuitiivisesti ja interaktiivisesti siirtämällä kontrollipisteitä [14, s. 9]. Määritelmän 2.27 perusteella spliniä voi muokata myös asteella, kontrollipisteiden painokertoimilla, solmuvektorin arvoilla sekä solmuvektorin moninkerroilla. Näiden vaikutusta spliniin muotoon on kuitenkin vaikea arvioida, joten mallinnusohjelmistoissa näihin arvoihin ei yleensä voi vaikuttaa. Kontrollipisteiden heikkoutena on, että spliniä on vaikea saada kulkemaan tietyn pisteen kautta, koska splinin käyrä ei kulje kontrollipisteiden kautta. Interpolaatio-

2.3. Splini 16 pisteet ratkaisevat tämän ongelman, sillä ne sijaitsevat splinin käyrällä. Interpolaatipisteiden sijainti splinin käyrällä määritellään parametrisointivektorilla. Parametrisointi käsitellään tarkemmin luvussa 5.4.

17 3. AIHEEN RAJAUS JA ALUSTAVA SELVITYS Diplomityön alussa tehtiin suunnitelma mahdollisista kehityskohteista, sillä Vertexillä ei ollut valmiina kattavaa suunnitelmaa. Ideoita kerättiin asiakaspalavereissa ja kokeilemalla kilpailevien yritysten vastaavia ohjelmistoja. Asiakasyritykset korostivat splinikäyrien, pintojen virittämisen ja reunaehtojen tärkeyttä muotoilussa. Vertexin sisäisessä kokouksessa aihe rajattiin luonnostelun ja muotoilun väliin. Myöhemmin aihe rajattiin splinikäyriin ja käyrän käsittelyyn kolmiulotteisessa avaruudessa, jotta työn laajuus säilyisi sopivan kokoisena. 3.1 Ideoiden kerääminen asiakkailta Asiakaspalautetta ja kehityskohteita kerättiin kolmelta Vertexin asiakasyritykseltä. Asiakkaat Vertex valitsi aiemman yhteistyön ja asiakkaiden oman aktiivisuuden perusteella. Olennaista oli myös, että kyseisillä asiakasyrityksillä on kokemusta Vertex G4:n lisäksi kilpailevista ohjelmistoista. Tavoitteena oli saada suoraan tietoa asioista, jotka kilpailijat ovat toteuttaneet hyvin. Lisäksi asiakaspalaverien tarkoituksena oli kerätä toiveita kokonaan uusista ominaisuuksista, jotka puuttuvat myös kilpailevista ohjelmistoista. Osa asiakaspalavereista toteutettiin GoToMeetingvideopuhelun välityksellä, jonka kautta asiakkaat myös näyttivät esimerkkejä kilpailevien ohjelmistojen toiminnallisuudesta. Puheluihin osallistui asiakasyritysten suunnittelijoita, joilla oli kokemusta kilpailijoiden tuotteista. Vertexiltä puheluihin osallistui diplomityöntekijän lisäksi diplomityönohjaaja, tuotekehityspäällikkö ja tuotekohtaisia päälliköitä. Lisäksi asiakkaisiin oltiin yhteydessä sähköpostitse. Asiakaspalaverit ja niissä nousseet kehityskohteet on kuvattu tarkemmin tässä luvussa. Kaikki kolme asiakasyritystä käyttävät Vertex G4:ää tuotteidensa suunnitteluun. Asiakasyritysten nimiä tai toimialoja ei yksilöidä tässä työssä Vertexin pyynnöstä.

3.1. Ideoiden kerääminen asiakkailta 18 3.1.1 Asiakasyritys A Asiakasyrityksen A edustaja toivoi Vertex G4:ään RS Componentsin kehittämän DesignSparkin[10] suoramallinnustoimintoja. Vastaavat toiminnot on mahdollista tehdä Vertex G4:llä, mutta historiavaiheiden seurauksena toimintojen käyttäminen on hitaampaa. Tätä havainnollistaa hiiren klikkauksien suurempi määrä. Esimerkiksi DesignSparkissa käyttäjä voi liikuttaa tasoa vetämällä sitä kursorilla. Vertex G4:ssä vastaava täytyy tehdä luonnoksen kautta, eli käyttäjän täytyy aluksi avata vanha luonnos, jotta hän voi muokata kappaleen parametreja. Joissain tapauksissa sopivaa luonnosta ei ole olemassa, jolloin käyttäjän täytyy luoda uusi luonnos. Tämä tekee Vertex G4:n käyttämisestä hankalampaa. Vertex G4:ssä on jo joitain suoramallinnustoimintoja, joissa muokattava historiavaihe valitaan automaattisesti. Esimerkiksi luonnoksen ehdot näkyvät mallitilassa ja niitä voidaan muokata ilman, että luonnosta tarvitsee erikseen avata. Edustajan mielestä DesignSparkin käyttöliittymä on yksinkertaisempi, sillä kursorilla voi vetää mitä tahansa luonnosta, pintaa, särmää tai muuta elementtiä ja luoda esimerkiksi pursotuksia, leikkauksia ja pyöristyksiä. Vertex G4:ssä jokainen näistä tehdään hieman eri tavalla. Vertex G4:ssä pursotukset tehdään luonnoksen ja toimenpiteen avulla. Esimerkiksi kuutio koostuu neliön muotoisesta luonnoksesta ja luonnoksen leveyden korkuisesta pursotuksesta. Kappaletta voi muokata luonnosta muuttamalla, uudella luonnoksella tai jollain muulla toimenpiteellä. Esimerkiksi jos kuution särmiin haluaa pyöristyksiä, ne täytyy tehdä erillisellä työkalulla. Edustaja esitteli DesignSparkista myös muita asioita. Ohjelmistossa on näkyvissä toimintoon liittyvät mitta-arvot jokaisella luonnostyökalulla. Esimerkiksi janaa piirrettäessä ohjelmistossa näkyvät pituus- ja kulmamitat. Mitan arvoa voi muuttaa manuaalisesti, jolloin arvo lukittuu automaattisesti. Lukitut arvot eivät muutu kursorilta liikuttaessa. Esimerkiksi janan pituuden lukitseminen mahdollistaa vain kulman muuttamisen kursorilla. Vertex G4:ssä käyrien mitoitus tehdään erillisellä työkalulla, mihin tarvitaan ylimääräisiä klikkauksia. 3.1.2 Asiakasyritys B Asiakasyrityksen B edustajat kertoivat yrityksensä toimintamallista. He saavat yleensä asiakkailtaan malleja muista ohjelmistoista, joita pitäisi muokata tuotantoon sopiviksi. Heille on tärkeää, että mallien tuonti muista ohjelmistoista toimisi hyvin

3.1. Ideoiden kerääminen asiakkailta 19 myös heikkolaatuisillekin malleille. Tuoduissa malleissa ei ole historiavaiheita, mikä rajoittaa Vertex G4:n toimivuutta. Malleista pitäisi pystyä poistamaan piirteitä sekä muuttamaan tasaisista pinnoista kaksoiskaarevia. Näihin liittyen Vertex G4:stä löytyy joitain toimintoja. Käytännössä toiminnot vaativat maksullisen lisätoiminnon tai ovat vaikeasti käytettäviä. Vertex G4:n muotoilutyökaluun edustajat toivoivat verkon parempaa käsittelyä sekä peilausta. Työkalussa on jo tuki peilaukselle, mutta toiminto ei ole hyvin esillä. Asiakasyrityksen suunnittelija esitteli myöhemmin Dassault Systemesin kehittämän SolidWorksin [22] toimintaa. Hän esitteli splinin piirtämistä kolmiulotteisessa luonnoksessa. Pääkohtina olivat pääakselien suuntaisten lukitustasojen helppo valinta, täysin määritettyjen käyrien eri väri sekä splinin määrittäminen tangenttikahvoilla ja pisteiden paikoituksella. Hän toivoi, että tasossa olevan splinin tason kulman voisi määrittää suoraan, sillä nyt se täytyy määrittää pisteiden avulla. Pintojen käsittelyyn hän toivoi työkaluja pinnan poistolle ja siitä syntyvän reiän poistolle, pinnan yksinkertaistamiselle ja automaattiselle pinnan rakentamiselle reunapisteillä. Reiän poistossa viereisten pintojen täytyisi yhdistyä. Pinnan yksinkertaistamisessa lommojen pitäisi hävitä. Pinnan pystyy yksinkertaistamaan Solid- Worksissa, mutta uusi pinta täytyy luoda manuaalisesti. Automaattiseen pinnan luontiin hän toivoi erityisesti pallon ja toruksen muotoisten pintojen luontia. Hän myös painotti, että toiminnoissa pitää hyvän oletustoteutuksen lisäksi olla mahdollisuus muokata lopputulosta haluamakseen. 3.1.3 Asiakasyritys C Ensimmäisessä videopuhelun välityksellä toteutetussa palaverissa asiakasyrityksen C suunnittelija painotti, että heille tärkeitä asioita ovat splinin käsittely kolmessa ulottuvuudessa, kaksoiskaarevien pintojen viritys sekä reunojen jatkuvuusehdot. Tähän liittyen hän esitteli Robert McNeelin kehittämää Rhinocerosta [18], jossa nämä asiat on toteutettu paremmin kuin Vertex G4:ssä. Hän mainitsi, että aputasojen käyttäminen hidastaa työskentelyä, joten niiden rinnalle olisi hyvä saada vaihtoehtoinen toteutus. Lisäksi hän esitteli Rhinoceroksessa toteutettua käyrän ja pinnan kaarevuuden analysointia ja käyrien yksinkertaistamista. Vertex G4:ssä käyrän kaarevuutta ei saa näkyviin eikä yksinkertaistaminen onnistu. Toinen tapaaminen oli asiakasyrityksen toimitiloissa. Siellä yrityksen suunnittelija

3.2. Vertailtavien ohjelmistojen valinta 20 esitteli tarkemmin työskentelymetodejaan sekä vastasi kysymyksiin. Työssään hän saa raakamallin, joka on luotu käsin tehdyn kappaleen pistepilvestä. Raakamalli ei ole valmistuskelpoinen, koska siinä on epätasaisia ja monimutkaisia pintoja. Suunnittelijan tehtävänä on luoda raakamallin perusteella uusi matemaattisesti yksinkertaisempi malli. Hän sovittaa raakamalliin splinikäyriä, joissa on useita kymmeniä interpolaatiopisteitä. Luodut käyrät hän korvaa yksinkertaisimmilla käyttämällä valmista työkalua. Työkalu laskee valitusta splinikäyrästä likiarvon, joka koostuu halutusta määrästä interpolaatiopisteitä. Suunnittelija yksinkertaistaa splinikäyrää, kunnes se näyttää sopivalta käyttötarkoitukseensa. Tämän arvioimiseen hän käyttää työkalua, joka visualisoi käyrän kaarevuuden muutoksen. Kun käyrät ovat valmiit, suunnittelija projisoi ne raakamallin pintaan ja poistaa pinnan käyrien väliltä. Sitten hän lisää uuden yksinkertaisemman tangentiaalisen pinnan käyrien välille. Jos pinta ei näytä sopivalta, hän käyttää ohjauskäyriä sen muodon hienosäätämiseen. 3.2 Vertailtavien ohjelmistojen valinta Eri käyttötarkoituksiin on olemassa satoja mallinnusohjelmistoja [15], joten jokaisen ohjelmiston läpikäyminen ei ollut mielekästä. Kokeiltavat ohjelmistot valittiin Vertexin suositusten perusteella. Valintakriteereinä olivat Vertex G4:ää vastaava käyttötarkoitus, ohjelmistojen markkinaosuus sekä Vertexin asiakkaiden kokemus ohjelmistoista. Ohjelmistojen markkinaosuuksia on vaikea arvioida, koska ohjelmistojen kohdekäyttäjät ja tarkoitukset vaihtelevat. CNCCookBookin kyselyssä [26] oli noin 300 vastausta, joiden perusteella suurimmat mallinnusohjelmistot ja niiden markkinaosuudet ovat SolidWorks: 22,7%, AutoCAD: 9,8%, Inventor: 8,8%, Geomagic: 8,2%, DraftSight: 6,9%, Fusion 360: 6,7% ja Rhinoceros: 5,3%.

3.2. Vertailtavien ohjelmistojen valinta 21 Vertex G4 ei ollut listauksessa. Kyselyssä oli vähän vastauksia, joten sen tulos ei todennäköisesti ole tarkka, mutta siitä saa jonkinlaisen kuvan Vertex G4:n suurimmista kilpailijoista. Taulukossa 3.1 esitellään vertailuun valittujen ohjelmistojen kehittäjät sekä käyttötarkoitukset. Melkein jokaisen ohjelmiston käyttötarkoituksena on joko mekaaninen mallinnus tai yleinen mallinnus. Käytännössä nämä eivät eroa toisistaan, vaan mekaanisen mallinnuksen tarkoituksena on erottaa ohjelmisto esimerkiksi rakennusten mallinnuksesta. Tämä on tärkeää esimerkiksi Vertex G4:n tapauksessa, koska Vertexillä on myös rakennusten mallintamisohjelmisto Vertex BD. Aspiren [3] käyttötarkoitus on muita valittuja tuotteita kapeampi, joten siinä ei ole yhtä paljon toiminnallisuutta kuin muissa ohjelmissa. Aspire otettiin kuitenkin mukaan vertailuun sen erilaisen käyrän käsittelytavan takia. Taulukko 3.1 Työssä tutkitut ohjelmistot Ohjelmisto Kehittäjä Käyttötarkoitus Aspire 8.022 Vectric Puun ja muiden materiaalien kaiverrus Creo Parametric 3.0 PTC Yleinen mallinnus [6] DesignSpark Mechanical 2015 RS Components Mekaaninen mallinnus Inventor Professional 2016 AutoDesk Mekaaninen mallinnus [4] Onshape OnShape Yleinen mallinnus [17] Rhinoceros Version 5 SR11 Robert McNeel Yleinen mallinnus Solidworks (2016 SP 0.0) Dassault Systemes Mekaaninen mallinnus Vertex G4 2015 Vertex Systems Mekaaninen mallinnus Työn tulokset perustuvat pääasiassa näiden tuotteiden ja Vertex G4:n vertailuihin. Tavoitteena on kerätä objektiivisesti tietoa ohjelmistoissa olevista toiminnoista sekä niiden toteutuksista. Tätä tietoa soveltamalla voidaan huomata puutteita Vertex G4:n toiminnassa sekä keksiä uusia Vertex G4:ään sopivia ominaisuuksia. Huomioitavaa on, että yleiset mallinnusohjelmistot ovat toiminnallisuudeltaan erittäin laajoja, joten ohjelmistoja analysoitiin vain pintapuolisesti. Tämän seurauksena on mahdollista, että kaikkia tämän työn kannalta oleellisia ominaisuuksia ei löydetty.

22 4. KÄYRÄN KÄSITTELY KOLMIULOTTEISESSA AVARUUDESSA Tässä luvussa esitellään Vertex G4:n ja kilpailijoiden ohjelmistojen yleisiä käyrän käsittelyn ominaisuuksia sekä ominaisuuksien käytettävyyttä. Käyrän käsittely voidaan jakaa kahteen osa-alueeseen, vapaan käyrän ja rajoitetun käyrän käsittelyyn. Vapaan käyrän käsittelyn haasteena on kolmen ulottuvuuden hallinta kaksiulotteisella tietokoneen ruudulla ja hiiren kursorilla. Käyttäjän täytyy pystyä arvioimaan kursorin syvyys, jotta ohjelmiston toiminta vaikuttaa loogiselta. Rajoitettu käyrä on rajoitettu esimerkiksi pinnalle tai suoralle. Tällaisen käyrän käyttäytyminen on selkeämpää, koska vapausasteita on vähemmän. Ongelmana on ohjelmiston oikea toiminnallisuus, sillä ohjelmiston täytyy pystyä laskemaan käyrälle oikea sijainti monimutkaisissakin tapauksissa. 4.1 Vapaa käyrän käsittely Ensimmäinen askel käyrän käsittelyssä on kursorin sijainnin muuttaminen ohjelmiston koordinaateiksi. Algoritmi tähän on seuraavanlainen: 1. Kursorin sijainti osoitusalueella on annettu suhteellisena x- ja y-koordinaattina väliltä 0% 100%. 2. Lasketaan kursorin sijainti pikseleinä kursorin sijainnista ja osoitusalueen korkeudesta ja leveydestä. 3. Lasketaan kursorin syvyys edellisestä pisteestä. 4. Muunnetaan osoitettu sijainti ohjelmiston koordinaateiksi. Kuvassa 4.1 havainnollistetaan tätä algoritmia. Kuva koostuu neljästä koordinaatistosta, joissa kaikissa on sama tilanne.