<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Tegning</title><link>http://activedeveloper.dk/weblogs/mrjs/category/77.aspx</link><description>Min store hobby er at tegne...</description><managingEditor>Jesper Jensen</managingEditor><dc:language>da-DK</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Jesper Jensen</dc:creator><title>3D på den nemme måde</title><link>http://activedeveloper.dk/weblogs/mrjs/archive/2005/07/22/1457.aspx</link><pubDate>Fri, 22 Jul 2005 10:50:00 GMT</pubDate><guid>http://activedeveloper.dk/weblogs/mrjs/archive/2005/07/22/1457.aspx</guid><wfw:comment>http://activedeveloper.dk/weblogs/mrjs/comments/1457.aspx</wfw:comment><comments>http://activedeveloper.dk/weblogs/mrjs/archive/2005/07/22/1457.aspx#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://activedeveloper.dk/weblogs/mrjs/comments/commentRss/1457.aspx</wfw:commentRss><trackback:ping>http://activedeveloper.dk/weblogs/mrjs/services/trackbacks/1457.aspx</trackback:ping><description>&lt;p&gt;Jeg havde den fornøjelse at arbejde med &lt;a title="DirectX Center" href="http://msdn.microsoft.com/directx/"&gt;Microsoft DirectX SDK&lt;/a&gt; for et par måneder siden, og fremstillede da et 3D view af noget vektor data. Det var forbundet med en del research, at nå ind til det væsentlige, og frembringe det ønskede resultat, men det lykkedes til sidst. SDK'en udmærker sig ved at havde en meget begrænset dokumentation, og den er mildest talt ikke for begyndere. Den forudsætter f.eks. at man ved hvad en "LookAtRH" er, og hvad den bruges til. Der er ingen forklaring hæftet på... Det lykkedes mig dog til sidst. Nu har jeg så fået endnu en opgave, som kræver en 3D fremstilling. Dog ikke den fulde shadede version, men kun en isometrisk tændstikudgave. Jeg har i den forbindelse været meget skeptisk over for at bruge Microsoft.DirectX namespacet, da jeg havde den opfattelse at det var lidt overkill på den konkrete opgave. Jeg browsede derfor rundt på nettet for at finde beskrivelser af hvordan man projekterer 3D vektore ind på en plan (det er meget længe siden jeg arbejdede med vektorer og matricer i skolen ;-) ). På den måde ville jeg så tegne iso-tegningen vha GDI+. Jeg fandt følgende: &lt;br /&gt;&lt;a title="Ryan Trudelle-Schwarz artikel om 3D projektering" href="http://authors.aspalliance.com/mamanze/articles/?p=drawing3d"&gt;Artikel der beskriver/viser projektering 3D til 2D&lt;/a&gt;&lt;br /&gt;&lt;a title="Vector Math for 3D Computer Graphics" href="http://chortle.ccsu.edu/VectorLessons/vectorIndex.html"&gt;God tutorial om 3D vektor matematik&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Der er mange flere links, men disse er efter min mening de bedste... Alle artikler, har dog en fællesnævner, og det er selvfølgelig en 4x4 matrix til at udfører selve transformeringen af koordinaterne. Alle artikler har hver deres implementering af mere eller mindre gennemførte matrix-klasser, og jeg må indrømme at jeg selv begyndte ud af den sti. Men hvorfor? Jeg synes at DirectX er overkill, og jeg ønsker i øvrigt også at viewet kan distribueres via Html, så GDI+ var løsningen til renderingen af GIF-filer. Så slog det mig: Hvorfor ikke bare udnytte Microsofts implementering af 4x4 matrix og 3D vektorer? Alle disse fede implementeringer ligger i &lt;em&gt;Microsoft.DirectX.dll&lt;/em&gt;, og de er på alle områder meget mere effektive og langt mere gennemførte end noget andet jeg har set (check evt Java implementeringen..). Vupti - jeg inkluderede namespacet, og straks havde jeg mit isometriske view renderet i GDI+.&lt;/p&gt;&lt;img src="http://www.3wp.dk/WeblogFiles/IsoView.GIF" title="Robo Visualazer Screen dump" width="672" height="529" border="0" /&gt; 
&lt;p&gt;I al sin enkelthed, så skal man blot havde en matrice der beskriver det view man ønsker:&lt;/p&gt;&lt;code&gt;Matrix view = Microsoft.DirectX.Matrix.LookAtRH(&lt;br /&gt;new Vector3(400f, 400f, 200f), // Placeringen af dit øjepunkt&lt;br /&gt;new Vector3(0.0f, 0f, 0f), // Retningen du ser imod&lt;br /&gt;new Vector3(0.0f, 0.0f, 1.0f) // Retningen du bruger som 'opad'&lt;br /&gt;); &lt;/code&gt;
&lt;p&gt;LookAtRH er en statisk metode på &lt;em&gt;Matrix&lt;/em&gt; klassen, som returnerer en matrice der beskriver: "Se på Højrehånds koordinater" (det betyder en hel del om man tolker sine koordinater som højre- eller venstrehånds koordinater). Når matricen er på plads, kan vi bare transformerer vi &lt;em&gt;Vector3&lt;/em&gt; klassens &lt;em&gt;TransformCoordinate&lt;/em&gt; metode.&lt;/p&gt;&lt;code&gt;Vector3[] points = obj.GetPoints(); // En array med 3D vektorer&lt;br /&gt;&lt;br /&gt;// Så transformerers koordinaterne&lt;br /&gt;points = Vector3.TransformCoordinate( points, view ); &lt;/code&gt;
&lt;p&gt;Her efter er det blot at tage x og y værdierne fra de enkelte vektorer, da matricen har projekteret koordinaterne ind i X - Y planen. Disse koordinater kan så plottes i et &lt;em&gt;Bitmap&lt;/em&gt; ved hjælp af GDI+&lt;/p&gt;
&lt;p&gt;Tænk at jeg overvejede at implementerer min egen Matrix-klasse... Var der ikke et ordsprog:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Gå ikke over åen efter vand.&lt;/em&gt;&lt;/p&gt;&lt;img src ="http://activedeveloper.dk/weblogs/mrjs/aggbug/1457.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p>Jeg havde den fornøjelse at arbejde med <a title="DirectX Center" href="http://msdn.microsoft.com/directx/">Microsoft DirectX SDK</a> for et par måneder siden, og fremstillede da et 3D view af noget vektor data. Det var forbundet med en del research, at nå ind til det væsentlige, og frembringe det ønskede resultat, men det lykkedes til sidst. SDK'en udmærker sig ved at havde en meget begrænset dokumentation, og den er mildest talt ikke for begyndere. Den forudsætter f.eks. at man ved hvad en "LookAtRH" er, og hvad den bruges til. Der er ingen forklaring hæftet på... Det lykkedes mig dog til sidst. Nu har jeg så fået endnu en opgave, som kræver en 3D fremstilling. Dog ikke den fulde shadede version, men kun en isometrisk tændstikudgave. Jeg har i den forbindelse været meget skeptisk over for at bruge Microsoft.DirectX namespacet, da jeg havde den opfattelse at det var lidt overkill på den konkrete opgave. Jeg browsede derfor rundt på nettet for at finde beskrivelser af hvordan man projekterer 3D vektore ind på en plan (det er meget længe siden jeg arbejdede med vektorer og matricer i skolen ;-) ). På den måde ville jeg så tegne iso-tegningen vha GDI+. Jeg fandt følgende: <br /><a title="Ryan Trudelle-Schwarz artikel om 3D projektering" href="http://authors.aspalliance.com/mamanze/articles/?p=drawing3d">Artikel der beskriver/viser projektering 3D til 2D</a><br /><a title="Vector Math for 3D Computer Graphics" href="http://chortle.ccsu.edu/VectorLessons/vectorIndex.html">God tutorial om 3D vektor matematik</a><br /></p>
<p>Der er mange flere links, men disse er efter min mening de bedste... Alle artikler, har dog en fællesnævner, og det er selvfølgelig en 4x4 matrix til at udfører selve transformeringen af koordinaterne. Alle artikler har hver deres implementering af mere eller mindre gennemførte matrix-klasser, og jeg må indrømme at jeg selv begyndte ud af den sti. Men hvorfor? Jeg synes at DirectX er overkill, og jeg ønsker i øvrigt også at viewet kan distribueres via Html, så GDI+ var løsningen til renderingen af GIF-filer. Så slog det mig: Hvorfor ikke bare udnytte Microsofts implementering af 4x4 matrix og 3D vektorer? Alle disse fede implementeringer ligger i <em>Microsoft.DirectX.dll</em>, og de er på alle områder meget mere effektive og langt mere gennemførte end noget andet jeg har set (check evt Java implementeringen..). Vupti - jeg inkluderede namespacet, og straks havde jeg mit isometriske view renderet i GDI+.</p><img src="http://www.3wp.dk/WeblogFiles/IsoView.GIF" title="Robo Visualazer Screen dump" width="672" height="529" border="0" /> 
<p>I al sin enkelthed, så skal man blot havde en matrice der beskriver det view man ønsker:</p><code>Matrix view = Microsoft.DirectX.Matrix.LookAtRH(<br />new Vector3(400f, 400f, 200f), // Placeringen af dit øjepunkt<br />new Vector3(0.0f, 0f, 0f), // Retningen du ser imod<br />new Vector3(0.0f, 0.0f, 1.0f) // Retningen du bruger som 'opad'<br />); </code>
<p>LookAtRH er en statisk metode på <em>Matrix</em> klassen, som returnerer en matrice der beskriver: "Se på Højrehånds koordinater" (det betyder en hel del om man tolker sine koordinater som højre- eller venstrehånds koordinater). Når matricen er på plads, kan vi bare transformerer vi <em>Vector3</em> klassens <em>TransformCoordinate</em> metode.</p><code>Vector3[] points = obj.GetPoints(); // En array med 3D vektorer<br /><br />// Så transformerers koordinaterne<br />points = Vector3.TransformCoordinate( points, view ); </code>
<p>Her efter er det blot at tage x og y værdierne fra de enkelte vektorer, da matricen har projekteret koordinaterne ind i X - Y planen. Disse koordinater kan så plottes i et <em>Bitmap</em> ved hjælp af GDI+</p>
<p>Tænk at jeg overvejede at implementerer min egen Matrix-klasse... Var der ikke et ordsprog:<br /><br /><em>Gå ikke over åen efter vand.</em></p><img src ="http://activedeveloper.dk/weblogs/mrjs/aggbug/1457.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Jesper Jensen</dc:creator><title>Så fik jeg min pen</title><link>http://activedeveloper.dk/weblogs/mrjs/archive/2005/07/13/1452.aspx</link><pubDate>Wed, 13 Jul 2005 11:15:00 GMT</pubDate><guid>http://activedeveloper.dk/weblogs/mrjs/archive/2005/07/13/1452.aspx</guid><wfw:comment>http://activedeveloper.dk/weblogs/mrjs/comments/1452.aspx</wfw:comment><comments>http://activedeveloper.dk/weblogs/mrjs/archive/2005/07/13/1452.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://activedeveloper.dk/weblogs/mrjs/comments/commentRss/1452.aspx</wfw:commentRss><trackback:ping>http://activedeveloper.dk/weblogs/mrjs/services/trackbacks/1452.aspx</trackback:ping><description>&lt;p&gt;Jeg har altid siddet og tegnet kruseduller, når jeg har talt i telefon, eller har skulle abstraherer fra hverdagen. Det har dog irriteret mig noget, at det er så besværligt at tegne med en mus. Har du f.eks. prøvet at skrive dig navn med musen? Nej vel det er ikke rigtigt til. Jeg havde derfor bestemt mig for at undersøge om der ikke var alternativer til musen, og det viste sig at det var der. Jeg har nok siddet i mit lille kode univers, og lukket af for alt andet. Der findes tusindvis af produkter, som tager pennen til pc'en. Jeg tog et valg, og bestilte en &lt;a href="http://www.my-volito.com/volito/intro.asp?lang=en" title="Wacom website" target="_blank"&gt;Wacom&lt;/a&gt; pen. Bare for at teste, så det var den biligste jeg kunne finde. Så kan man vel altid opgraderer, når man får bedre forudsætninger for at bedømme dette 'nye' redskab.&lt;/p&gt;
&lt;p&gt;Jeg er altså gået i gang med testfasen, og lad mig sige det med det samme: En pen er et MEGET anderledes redskab, end en mus. Man skal f.eks. vende sig til at pointeren er positioneret absolut. Det vil sige at man ikke kan cykle pennen over måtten for at nå op i hjørnet, som med musen, nej man skal bevæge hånden op i hjørnet og sætte pennen ned. Det kommer til at tage noget tid at vende sig til...&lt;/p&gt;
&lt;img src="http://www.3wp.dk/WeblogFiles/13072005_1.gif" title="Signe om AJaX" width="300" height="300" border="0" /&gt;
&lt;p&gt;Mit første skribleri - ubehjælpsomt, men det er der...&lt;/p&gt;&lt;img src ="http://activedeveloper.dk/weblogs/mrjs/aggbug/1452.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p>Jeg har altid siddet og tegnet kruseduller, når jeg har talt i telefon, eller har skulle abstraherer fra hverdagen. Det har dog irriteret mig noget, at det er så besværligt at tegne med en mus. Har du f.eks. prøvet at skrive dig navn med musen? Nej vel det er ikke rigtigt til. Jeg havde derfor bestemt mig for at undersøge om der ikke var alternativer til musen, og det viste sig at det var der. Jeg har nok siddet i mit lille kode univers, og lukket af for alt andet. Der findes tusindvis af produkter, som tager pennen til pc'en. Jeg tog et valg, og bestilte en <a href="http://www.my-volito.com/volito/intro.asp?lang=en" title="Wacom website" target="_blank">Wacom</a> pen. Bare for at teste, så det var den biligste jeg kunne finde. Så kan man vel altid opgraderer, når man får bedre forudsætninger for at bedømme dette 'nye' redskab.</p>
<p>Jeg er altså gået i gang med testfasen, og lad mig sige det med det samme: En pen er et MEGET anderledes redskab, end en mus. Man skal f.eks. vende sig til at pointeren er positioneret absolut. Det vil sige at man ikke kan cykle pennen over måtten for at nå op i hjørnet, som med musen, nej man skal bevæge hånden op i hjørnet og sætte pennen ned. Det kommer til at tage noget tid at vende sig til...</p>
<img src="http://www.3wp.dk/WeblogFiles/13072005_1.gif" title="Signe om AJaX" width="300" height="300" border="0" />
<p>Mit første skribleri - ubehjælpsomt, men det er der...</p><img src ="http://activedeveloper.dk/weblogs/mrjs/aggbug/1452.aspx" width = "1" height = "1" /></body></item></channel></rss>