TENTMENOPGVEN Inleiding Technische Toeassingen ècomuter Grahicsè. Voor een interactief tekenrogramma is gewenst dat een gebruiker lijnsegmenten kan aanwijzen. Geef een rocedure om te bealen of een unt x =èx; yè binnen een afstand d van een lijnsegment ligt. Het lijnsegment is gedeænieerd door zijn eindunten =è x ; y èen q =èq x ;q y è. è2 maart 2è. De afstand van het unt x tot het lijnsegment q is de afstand van x tot dat unt van q dat het dichtst bij x ligt. Laat de vector a het verschil tussen de unten q en zijn èa = q, è, en b de vector van unt naar x. Verdelen we het vlak in drie delen door twee lijnen loodrecht oq en door, res q, dan is voor x tussen de lijnen de afstand tot q gelijk aan de afstand tot de loodrechte rojectie van x o q, envoor een x buiten die lijnen is die afstand de afstand van x tot, res. q. Projectie van x o q is het unt y = + ça, waarbij ç zo is dat x, y? a, dus èb, çaè æ a = ofwel ç = b æ a=a æ a: De rojectie y ligt tussen en q als ç ç ç : De afstand is dan èx, yè æ èx, yè = èb, çaè æ èb, çaè = b æ b, 2çb æ a + ç 2 a æ a = b æ b, èb æ aè 2 =a æ a ls ç ç dan is de afstand èx, ; x, è, en als ç ç dan èx, q; x, qè. De functie wordt dan zoiets als: tye Point = record x, y: double end function IPèa,b:Pointè: double; begin IP := a.x*b.x+a.y*b.y end; function distèx,, q: Pointè: double; var ç: double; a; b: Point; begin f a := q, ; b := x, ; nog uitwerken g ç := IPè b, a èèipè a, a è; if çé then dist := sqrtèipè b, b èè else if çé then dist := sqrtèipè x-q, x-q èè else dist := sqrtèipè b, bè-sqrèipè b, a èèèipè a, a èè end; èuitdrukkingen als IPèx-q,x-qè moeten nog nader uitgewerkt worden.è Een andere olossing is een rechthoek te timmeren met q als middellijn en diameter 2d. De hoekunten van deze rechthoek zijn æ d æ a? = a æ a; q æ d æ a? = a æ a, waarin a? =èa y ;,a x è. Deze vector staat loodrecht oa en heeft dezelfde lengte. Het robleem is dan gereduceerd tot: ligt x in deze rechthoek èeen standaard-algoritmeè of in een van de cirkels om en q met straal d. 2. Een Catmull-Rom sline wordt beaald door een reeks van N controle-unten i ;i = ;:::;N. De sline bestaat uit N, 3 segmenten q i ètè, waarbij elk segment gedeænieerd is door: q i ètè = 2 èè,t3 +2t 2, tè i + è3t 3, 5t 2 +2è i+ + è,3t 3 +4t 2 + tè i+2 + èt 3, t 2 è i+3 è:
nalyseer de eigenschaen van deze sline: èaè Beaal q i èè; q èè; q i ièè en q èè. Laat zien dat de twee afgeleiden i qèè en i q èè niet i veranderen als alle controle-unten over een vector d worden getransleerd. èbè Geef een kwalitatieve beschrijving van de eigenschaen van de sline. ècè Schets de sline voor de volgende reeks unten: è,è, è,è, è,è, è2, è, è2,è, è3,è. è2 maart 2è. èaè q i èè = i+ ; q i èè = i+2 ; q èè=è i i+2, i è=2; q èè = è i i+3, i+ è=2: ls alle controleunten over een vector d verschoven worden, dan wordt bij de exressie voor q i ètè ookd ogeteld. èlle machten van t vallen weg.è De sline is translatieinvariant. Er geldt: èq dt d iètè+dè =q ètè. i èbè De sline is continu ègeen gatenè: q i èè = q i+ èè: De richting van de sline is continu ègeen knikè: q èè = i q èè. i+ De sline is interolerend: q i èè = i+ ; q i èè = i+2. De invloed van de controle-unten is lokaal: i heeft alleen invloed o q i,3ètè; q i,2ètè; q i,ètè; q i ètè: De sline is translatie-invariant èzie èaè è. De raaklijn in i+ is evenwijdig aan i i+2 Catmull-Rom.8.6.4.2 ècè.8.2.4.6.8 2 2.2 3. Voor een interactief sel is gewenst dat botsingen tussen ballen en selers kunnen worden gedetecteerd. Een bal wordt gereresenteerd door een cirkel met straal r en middelunt c =èc x ;c y è, een seler door een rechthoek met middelunt m =èm x ;m y è, breedte w en hoogte h. èaè Stel dat de assen van de rechthoek evenwijdig zijn met de horizontale en verticale as. Geef een rocedure waarin beaald wordt of de bal en de seler overlaen en licht deze toe. èbè Stel dat de as van de rechthoek in de w richting een hoek æ maakt met de horizontale as. Geef een rocedure waarin wederom beaald wordt of de bal en de seler overlaen en licht deze toe. Hoe kan het resultaat van de voorgaande vraag worden hergebruikt? è3 juli 2è.
èaè De cirkel en de rechthoek overlaen elkaar gedeeltelijk als c binnen de rechthoek ligt, of een afstand kleiner dan r tot de rand van de rechthoek heeft. Deze laatste voorwaarde valt uiteen in twee keer vier gevallen: de afstand tot een zijde is kleiner dan r, ofde afstand tot een hoekunt is kleiner dan r. De functie wordt de gedurige or van al deze mogelijkheden: overla := false; overla := overla _ èjc x, m x j éw=2è ^ èjc y, m y j éh=2+rè; overla := overla _ èjc x, m x j éw=2+rè^èjc y, m y j éh=2è; overla := overla _ IPèc, ; c, è érvoor =èmx æ w=2;m y æ h=2è: Een andere olossing is het gevalsonderscheid te verminderen door het unt c eventueel te siegelen in de symmetrieassen van de rechthoek. We krijgen dan: if c x ém x then c x := m x +èm x, c x è; if c y ém y then c y := m y +èm y, c y è; := èm x + w=2;m y + h=2è; overla := èc x é x + r ^ c y é y è _ èc x é x ^ c y é y + rè _ IPèc, ; c, è ér: èbè De vraag kan teruggebracht worden tot het vorige robleem door de rechthoek over æ terug te draaien, en c over,æ te roteren rond m. Dit doen we met c := m + Rè,æèèc, mè, waarin Rè,æè =ç cosèæè sinèæè, sinèæè cosèæè Een andere manier is de cirkel en de rechthoek arallel zo te verschuiven dat m in de oorsrong belandt, en dan c te draaien over,æ: c := Rè,æèèc, mè; m := è; è; en dan èaè toeassen. 4. We beschouwen een Bezier-curve qètè =è, tè 3 + 3è, tè 2 t 2 + 3è, tèt 2 3 + t 3 4 ;t2 ë; ë; met =è; è en 4 =è; è. De curve kan worden vastgelegd door aanvullende voorwaarden. We onderzoeken het eæect van dergelijke voorwaarden o 2 en 3. Geef in alle gevallen een duidelijke toelichting. èaè Beaal alle mogelijke osities van 2 en 3 zodanig dat de curve in de eindunten raakt aan res. de X- en Y-as. èbè Beaal de ositie van 2 en 3 zodanig dat de curve in de eindunten raakt aan res. de X- en Y-as, en dat het unt qè=2è o de oorsrong ligt. ècè Beaal de ositie van 2 en 3 zodanig dat de curve in de eindunten raakt aan res. de X- en Y-as, dat de coordinaten van alle unten van de curve niet negatief zijn en dat het unt qè=2è zo dicht mogelijk bij de oorsrong ligt. è3 juli 2è. èaè De kromme raakt in aan de X-as: de afgeleide is daar 3è 2, è, dus 2 =èæ; è met æ 6=. In 4 is de afgeleide 3è 4, 3 è, en dit is langs de Y-as als 3 =è;æè met æ 6=. èbè ls extra eis krijgen we nu qè=2è = è +3 2 +3 3 + 4 è=8 = è+3æ; +3æè=8=è; è. Dit geeft æ = æ =,=3. ècè O grond van eis a kunnen we de extra eisen formuleren in termen van æ en æ: qètè:x ç : è, tè 3 + 3è, tè 2 tæ ç ofwel + tè3æ, è ç voor ç t ç qètè:y ç : 3è, tèt 2 æ + t 3 ç ofwel 3æ + tè, 3æè ç voor ç t ç ç :
Deze voorwaarden komen neer o æ ç ; æ ç. èvul in t =, resectievelijk t =.è De eis qè=2è zo dicht mogelijk bij è,è betekent è+3æè 2 +è+3æè 2 minimaal. Samen met de andere eisen imliceert dit æ =; æ =. 5. èaè Geef een rocedure om te bealen of een lijnsegment ab, met a =èa x ;a y èenb = èb x ;b y è, en een vierkant ë,; ë æ ë,; ë elkaar geheel of gedeeltelijk overlaen en licht deze toe. èbè We beschouwen nu een willekeurige rechthoek met middelunt m =èm x ;m y è, breedte w en hoogte h, enwaarbij de as in de w richting een hoek æ maakt met de x-as. Geef een rocedure om te bealen of een lijnsegment en een rechthoek elkaar overlaen, waarin het resultaat uit vraag èaè wordt hergebruikt. Transformeer hiertoe de nieuwe situatie naar de uitgangssituatie van vraag èaè. è3 augustus 2è. èzie ook de uitwerking van de oefening van 8 feb 2.è èaè Er zijn twee gevallen: ofwel het hele lijnstuk ligt binnen het vierkant, of het lijnstuk snijdt minstens een van de zijden. Het eerste geval is simel: ja x jç ^ja y jç ^jb x jç ^jb y jç: Merk o dat het niet recies volgens voorgaand onderscheid, maar niet onjuist is om te berekenen: èja x jç ^ja y jçè _ èjb x jç ^jb y jç:è Het tweede geval is iets bewerkelijker: we onderzoeken alleen of ab de zijde è;,èè; è snijdt. Eerst snijden we de lijn door a en b met de lijn x = : Uit ça x +è, çèb x = volgt ç = b x, b x, a x : Het snijunt moet tussen a en b liggen, dus ç ç ç. Verder moet de y,coordinaat tussen en - liggen, dus snijt := è ç ç ç è ^jça y +è, çèb y jç: Voor b x = a x hebben we een uitzondering èdelen door nulè, hier wordt de voorwaarde a x = ^ èa y max b y ç,è ^ èa y min b y ç è: Evenzo voor de andere drie zijden. De voorwaarde wordt dan in geval 2: overla := snijt _ snijt2 _ snijt3 _ snijt4. Om. Gezien dit vraagstuk lijkt het de moeite waard o zoek te gaan naar een algoritme voor "ab snijdt q". èbè Om het algemene geval terug te brengen tot de stituatie in èaè, assen we drie transformaties toe: Verschuif alles over -m. Het middelunt van de rechthoek is nu è,è. Draai alles over,æ. De afmetingen van de rechthoek veranderen hierdoor niet. Verander de schaal o x,as en y,as zodat de rechthoek zijden 2 krijgt. In homogene coordinaten kan de hele oeratie beschreven worden door: @ 2=w 2=h @ cos æ sin æ, sin æ cos æ @,m x,m y Pas deze oeratie toe o a en b. Nu hebben we de situatie als in èaè.
6. Gegeven zijn twee lijnstukken ab en cd, met a =è,; è; b =è; è; c =è; è en d =è;,è. Gewenst wordt om de unten b en c van deze lijnstukken met een Bezier-curve qètè =è, tè 3 + 3è, tè 2 t 2 + 3è, tèt 2 3 + t 3 4 ;t2 ë; ë te verbinden, zodanig dat de overgangen tussen de lijnstukken en de curve glad zijn. Beantwoord de volgende vragen en licht het antwoord toe: èaè Beaal alle mogelijke osities van de stuurunten ; 2 ; 3 en 4 en licht dit toe met een schets. èbè Voor welke waarde van de arameter t is de y-coordinaat van de curve maximaal en hoe hangt dit maximum af van de stuurunten? è3 augustus 2è. èaè We nemen qèè = b en qèè = c, dus =è; è en 4 =è; è. Er geldt q èè = 3è 2, è. Voor glad aansluiten in b moet 2, dezelfde richting hebben als b, a, dus 2 =èæ; è met æé. Verder is q èè = 3è 4, 3 è, en d, c moet dezelfde richting hebben, dus 3 =è;æè met æé. èbè De maximale waarde van de y-coordinaat zal lineair afhangen van de controleunten. Onder de in aè behandelde restricties is de y-coordinaat van de curve qètè:y = 3è, tèt 2 æ: De afgeleide hiervan is,3t 2 æ, 6tè, tèæ =3tæè2, 3tè. Dit is nul voor t =en voor t =2=3, alwaar de y-coordinaat zijn maximale waarde 4 æ bereikt. Deze waarde 9 is alleen afhankelijk van 3.