<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
	<id>https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=GrafikaGyakorloGeometriaiModellezes</id>
	<title>GrafikaGyakorloGeometriaiModellezes - Laptörténet</title>
	<link rel="self" type="application/atom+xml" href="https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=GrafikaGyakorloGeometriaiModellezes"/>
	<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=GrafikaGyakorloGeometriaiModellezes&amp;action=history"/>
	<updated>2026-05-17T18:13:59Z</updated>
	<subtitle>Az oldal laptörténete a wikiben</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://vik.wiki/index.php?title=GrafikaGyakorloGeometriaiModellezes&amp;diff=137333&amp;oldid=prev</id>
		<title>Unknown user: Új oldal, tartalma: „{{GlobalTemplate|Infoalap|GrafikaGyakorloGeometriaiModellezes}}  ===Mintakérdések a Számítógépes grafika és képfeldolgozás tárgy vizsgájára való felkészü…”</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=GrafikaGyakorloGeometriaiModellezes&amp;diff=137333&amp;oldid=prev"/>
		<updated>2012-10-21T19:58:46Z</updated>

		<summary type="html">&lt;p&gt;Új oldal, tartalma: „{{GlobalTemplate|Infoalap|GrafikaGyakorloGeometriaiModellezes}}  ===Mintakérdések a Számítógépes grafika és képfeldolgozás tárgy vizsgájára való felkészü…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Új lap&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{GlobalTemplate|Infoalap|GrafikaGyakorloGeometriaiModellezes}}&lt;br /&gt;
&lt;br /&gt;
===Mintakérdések a Számítógépes grafika és képfeldolgozás tárgy vizsgájára való felkészüléshez===&lt;br /&gt;
&lt;br /&gt;
====Geometriai modellezés====&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;24. Hogyan definiálható a B-spline és milyen tulajdonságai vannak?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/B-spline Wikipédia: B-spline]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;25. Mi a NURBS?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Nonuniform_rational_B-spline Wikipédia: NURBS]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;26. Bizonyítsa be, hogy a Bézier görbét érinti az első két kontrolpontokra fektetett egyenes.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Ha &amp;lt;math&amp;gt; P_0, P_1, ... P_n &amp;lt;/math&amp;gt; a kontrolpontok, akkor a t paraméterértékhez tartozó pont: &amp;lt;math&amp;gt; P(t)=\sum_{i=0}^n P_i t^i (1-t)^{n-i} {n \choose i} &amp;lt;/math&amp;gt;&lt;br /&gt;
* Ennek a t szerinti deriváltja (vagyis az érintővektor a t-hez tartozó helyen): &amp;lt;math&amp;gt; \frac{\partial P(t)}{\partial t}=\sum_{i=0}^n P_i (i t^{i-1} (1-t)^{n-i} - t^i (n-i)(1-t)^{n-i-1}) {n \choose i} &amp;lt;/math&amp;gt;&lt;br /&gt;
* Kiemelve a t=0 esetén érdekes első két tagot:&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial P(t)}{\partial t} = P_0 (0 t^{-1} (1-t)^n - t^0 n (1-t)^{n-1}) {n \choose 0} + \]\[ + P_1 (1 t^0 (1-t)^{n-1} - t^1 (n-1)(1-t)^{n-2}) {n \choose 1} + \]\[ + \sum_{i=2}^n P_i (i t^{i-1} (1-t)^{n-i} - t^i (n-i)(1-t)^{n-i-1}) {n \choose i} &amp;lt;/math&amp;gt;&lt;br /&gt;
* Rendezve:&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial P(t)}{\partial t} = P_0 (-n(1-t)^{n-1}) + \]\[ + P_1 ( (1-t)^{n-1} - t(n-1)(1-t)^{n-2})n + \]\[ + \sum_{i=2}^n P_i (i t^{i-1} (1-t)^{n-i} - t^i (n-i)(1-t)^{n-i-1}) {n \choose i} &amp;lt;/math&amp;gt;&lt;br /&gt;
* t=0 helyettesítéssel a szumma elhagyható, hiszen (mivel i=2-től szummázunk) mindegyik tagban t legalább az első hatványon szerepel. Így: &amp;lt;math&amp;gt; \frac{\partial P(t)}{\partial t} \Big |_{t=0}&lt;br /&gt;
 = P_0 (-n(1-0)^{n-1}) + P_1 ( (1-0)^{n-1} - 0(n-1)(1-0)^{n-2})n = (P_1-P_0)n&amp;lt;/math&amp;gt;&lt;br /&gt;
* Tehát tényleg párhuzamos a kezdőpontban vett érintő az első két kontrolponton átmenő egyenessel (ugyanis ennek irányvektora a két kontrolpont vektorának különbsége).&lt;br /&gt;
* [http://en.wikipedia.org/wiki/B%C3%A9zier_curve Wikipédia: Bézier görbe]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;27. Hogyan lehet előállítani egy Bézier görbét NURBS segítségével?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* A NURBS-nak speciális esete a NUBS, abból pedig előállítható a Bézier görbe. Először is, a NURBS összes kontrolpontjának súlya legyen azonos. Majd, a NURBS kontrolpontjai legyenek azonosak a kívánt Bézier görbe kontrolpontjaival, kivéve, hogy az első és az utolsó kontrolpontok háromszorosan fognak szerepelni (így egy n pontú Bézier görbe előállításához n+4 pontú NURBS-ra van szükség). Ez azért kell, hogy az első és utolsó ponton átmenjen a görbe.&lt;br /&gt;
* &amp;#039;&amp;#039;ezt még be kéne fejezni...&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;28. Adja meg a kvadratikus felületek általános definícióját. Milyen konkrét tagjai vannak ennek a családnak?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* A grafikából tanult definíció: &amp;lt;math&amp;gt; rAr^T=0 &amp;lt;/math&amp;gt;, ahol &amp;lt;math&amp;gt; r=\left[\begin{array}{cccc} x &amp;amp; y &amp;amp; z &amp;amp; 1 \end{array}\right] &amp;lt;/math&amp;gt; és A nem nullmátrix.&lt;br /&gt;
* A konkrét tagok: ellipszoid, elliptikus és hiperbolikus paraboloid, egyköpenyű és kétköpenyű hiperboloid, kúp, elliptikus, parabolikus és hiperbolikus henger, valamint egy elfajuló eset, a síkpár (ezt nem mindig sorolják ide).&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Quadric Wikipédia: kvadratikus felület]&lt;br /&gt;
 &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;29. Rajzolja fel a szárnyas él adatstruktúrát, és írjon programot, amely egy lapnak kiírja az összes csúcsát.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Az adatstruktúrával térbeli poliédereket lehet leírni. Minden él tartalmaz egy hivatkozást a két végpontjára, a két általa határolt lapra. Valamint, ha az általa határolt lapokon körbemennénk, akkor az élet mindkét lapon megelőzné és követné egy-egy él, ezekre az élekre is tárolunk hivatkozást. Ezen kívül, a lapok és a csúcsok is tartalmaznak hivatkozást egy élre, ami határolja őket, illetve aminek végpontjai.&lt;br /&gt;
* Egy lehetséges implementáció C-ben:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct Vertex {&lt;br /&gt;
  unsigned int id;&lt;br /&gt;
  struct Edge* e; /* az egyik él, aminek végpontja */&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct Face {&lt;br /&gt;
  unsigned int id;&lt;br /&gt;
  struct Edge* e; /* az egyik él, ami határolja */&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct Edge {&lt;br /&gt;
  unsigned int id;&lt;br /&gt;
  struct Face *f1, *f2; /* a két általa határolt lap */&lt;br /&gt;
  struct Vertex *v1, *v2; /* a két végpont */&lt;br /&gt;
  struct Edge *n1, *n2, *p1, *p2; /* a rákövetkező és megelőző élek a két lapon */ &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void vertices(Face* f) {&lt;br /&gt;
  Edge *current_edge=f-&amp;gt;e;&lt;br /&gt;
  Edge *temp;&lt;br /&gt;
  Vertex *current_vertex;&lt;br /&gt;
  &lt;br /&gt;
  if (current_edge-&amp;gt;f1==f) temp=current_edge-&amp;gt;n1;&lt;br /&gt;
  else temp=current_edge-&amp;gt;n2;&lt;br /&gt;
  if (current_edge-&amp;gt;v2==temp-&amp;gt;v1 || current_edge-&amp;gt;v2==temp-&amp;gt;v2) current_vertex=current_edge-&amp;gt;v2;&lt;br /&gt;
  else current_vertex=current_edge-&amp;gt;v1;&lt;br /&gt;
  &lt;br /&gt;
  do {&lt;br /&gt;
	 printf(&amp;quot;%d\n&amp;quot;, current_vertex-&amp;gt;id);&lt;br /&gt;
	 &lt;br /&gt;
	 if (current_edge-&amp;gt;f1==f) current_edge=current_edge-&amp;gt;n1;&lt;br /&gt;
	 else current_edge=current_edge-&amp;gt;n2;&lt;br /&gt;
	 &lt;br /&gt;
	 if (current_edge-&amp;gt;v1==current_vertex) current_vertex=current_edge-&amp;gt;v2;&lt;br /&gt;
	 else current_vertex=current_edge-&amp;gt;v1;&lt;br /&gt;
  } while (current_edge!=f-&amp;gt;e);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Egy ciklussal számon tartjuk, melyik élnél tartunk, és mindegyik lépésben kiírjuk az él és a következő él közös csúcsát. A következő él mindig az n1 vagy n2, attól függően, melyik határolja az f lapot. A ciklus előtt azt keressük meg, hogy melyik csúcs közös a következő lappal. Akkor állunk meg, mikor visszajutottunk a kiinduló élhez.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Winged_edge Wikipédia: szárnyas él]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;30. Mik az Euler operátorok és miért van rájuk szükség?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;31. Írjon C++ nyelven egy CSG fát megvalósító osztályt.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* A CSG fa testeket ír le. A fában a levelek egyszerű testek (gömb, kocka), ezek vannak összekombinálva geometriai transzformációkkal és halmazműveletekkel (metszet, unió, különbség). Pl. egy eltolt gömb és egy kocka unióját leíró fa gyökere egy &amp;quot;unió&amp;quot; node, az egyik gyereke egy kocka, a másik egy transzformáció, aminek egy gyereke egy gömb. A CSG fánál általában egyszerű eldönteni egy-egy pontról, hogy a testen belül van-e, de nehéz kirajzolni a testet.&lt;br /&gt;
* Itt csak az osztályok kis része van megírva, hogy látszódjon az egésznek a szerkezete, a Primitive-nek pedig jóval több leszármazottja is lehetne.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class CSG {&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class Transformed: public CSG {&lt;br /&gt;
  private:&lt;br /&gt;
	 Transformation t;&lt;br /&gt;
	 CSG* obj;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class Composite: public CSG {&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class Intersection: public Composite {&lt;br /&gt;
  private:&lt;br /&gt;
	 CSG *obj1, *obj2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class Union: public Composite {&lt;br /&gt;
  private:&lt;br /&gt;
	 CSG *obj1, *obj2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class Difference: public Composite {&lt;br /&gt;
  private:&lt;br /&gt;
	 CSG *obj1, *obj2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class Primitive: public CSG {&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class Sphere: public Primitive {&lt;br /&gt;
  private:&lt;br /&gt;
	 float r;&lt;br /&gt;
	 Vector center;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class Cube: public Primitive {&lt;br /&gt;
  private:&lt;br /&gt;
	 Vector min;&lt;br /&gt;
	 Vector max;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;32. Adott egy 9 vezérlőpontra illeszkedő 3x3-as Bézier felület. A vezérlőpontok rendre p11,...,p33. Adja meg a felület normálvektorát a (0, 0.5) paraméterértékek mellett! Hogyan változik az előző feladatban kiszámolt normálvektor, ha a vezérlőpontokat a &amp;lt;math&amp;gt; \left[ \begin{array}{rrrr} 2 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 \\ 0 &amp;amp; 3 &amp;amp; 0 &amp;amp; 0 \\ 0 &amp;amp; 0 &amp;amp; 4 &amp;amp; 0 \\ 6 &amp;amp; 7 &amp;amp; 8 &amp;amp; 1 \end{array} \right] &amp;lt;/math&amp;gt; homogén lineáris transzformációs mátrixszal megszorozzuk?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;33. Számítsa ki a harmadrendű (azaz MÁSODFOKÚ) uniform B-spline görbe bázisfüggvényeinek értékét a 0.8 értékre! Segítség: a Cox-deBoor módszert érdemes alkalmazni, és ellenőrzésképpen meg lehet nézni a konvex burok tulajdonságot.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/De_Boor%27s_algorithm Wikipédia: Cox-de Boor algoritmus]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;34. Adott egy &amp;lt;math&amp;gt; rAr^T = 0 &amp;lt;/math&amp;gt; (r=(x,y,z,1) sorvektor és A 4x4-es mátrix) kvadratikus felület, valamint azon egy p pont. Írja fel a felület normálvektorát a p pontban.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Belátható, hogy egy f(x, y, z)=0 implicit alakkal megadott felület normálvektora az (x, y, z) pontban &amp;lt;math&amp;gt; grad(f)=\left( \frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}, \frac{\partial f}{\partial z}\right) &amp;lt;/math&amp;gt; Szintén belátható, hogy mátrixszorzatot hasonló szabály szerint lehet deriválni, mint rendeset: egy n tényezős szorzat deriváltja egy n tagú összeg lesz, mindegyikben az egyik tényező deriválva, a többi békén hagyva. Itt, mivel az A mátrix konstans, ezért pl. &amp;lt;math&amp;gt; \frac{\partial f}{\partial x}=\left[\begin{array}{rrrr} 1 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 \end{array}\right]\cdot A \cdot \left[\begin{array}{rrrr} x &amp;amp; y &amp;amp; z &amp;amp; 1 \end{array}\right]^T + \left[\begin{array}{rrrr} x &amp;amp; y &amp;amp; z &amp;amp; 1 \end{array}\right]\cdot A \cdot \left[\begin{array}{rrrr} 1 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 \end{array}\right]^T = (a_{11}x+a_{12}y+a_{13}z+a_{14}) + (a_{11}x+a_{21}y+a_{31}z+a_{41}) = (a_{11}+a_{11})x+(a_{12}+a_{21})y+(a_{13}+a_{31})z+(a_{14}+a_{41}) &amp;lt;/math&amp;gt;&lt;br /&gt;
* Felírva a többi parciálist is, látható, hogy a normálvektorban r van megszorozva az A mátrixnak és transzponáltjának összegével, illetve ennek az összegnek csak a bal oldali 4x3-mas részmátrixával. Így a normálvektor (normalizálás nélkül): &amp;lt;math&amp;gt; n(r)=r(A+A^T)_{4x3} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;35. Adott egy Bézier felület c00,...,c44 vezérlőpontokkal. Írja fel a felület normálvektorát a (0.5,0.5) paraméterértékeknél.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* A Bézier felület leírása: &amp;lt;math&amp;gt; r(u, v) = \sum_{i=0}^n \sum_{j=0}^m B_{n,i}(u) B_{m,j}(v) c_{ij} &amp;lt;/math&amp;gt; ha nxm vezérlőpontunk van, és &amp;lt;math&amp;gt; B_{n,i}(t)={n \choose i} t^i (1-t)^{n-i} &amp;lt;/math&amp;gt; az i-edik n-edrendű Bézier-bázisfüggvény. A felület normálvektora a két paraméter szerinti parciális derivált vektorszorzata. Az u szerinti parciális: &amp;lt;math&amp;gt; \frac{\partial r}{\partial u} = \sum_{i=0}^n \sum_{j=0}^m {n \choose i} (iu^{i-1} (1-u)^{n-i} - u^i (n-i)(1-u)^{n-i-1}) B_{m,j}(v) c_{ij} &amp;lt;/math&amp;gt;, a v szerinti: &amp;lt;math&amp;gt; \frac{\partial r}{\partial v} = \sum_{i=0}^n \sum_{j=0}^m B_{n,i}(u) {m \choose j} (jv^{j-1} (1-v)^{m-j} - v^j (m-j)(1-v)^{m-j-1}) c_{ij} &amp;lt;/math&amp;gt;&lt;br /&gt;
* Behelyettesítve u=v=0.5-öt és n=m=4-et: &amp;lt;math&amp;gt; \frac{\partial r}{\partial u} \Big|_{u=v=0.5} = 0.5^7\sum_{i=0}^4 \sum_{j=0}^4 {4 \choose i} (2i-4) {4 \choose j} c_{ij} &amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt; \frac{\partial r}{\partial v} \Big|_{u=v=0.5} = 0.5^7\sum_{i=0}^4 \sum_{j=0}^4 {4 \choose i} (2j-4) {4 \choose j} c_{ij} &amp;lt;/math&amp;gt;&lt;br /&gt;
* Ezek vektoriális szorzata, felhasználva a vektorszorzat linearitását: &amp;lt;math&amp;gt; n=0.5^{14}\sum_{i=0}^4 \sum_{j=0}^4 \sum_{k=0}^4 \sum_{l=0}^4 {4 \choose i}{4 \choose j}{4 \choose k}{4 \choose l} (2i-4)(2l-4)  c_{ij} \times c_{kl} &amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;Megjegyzés: ez se valami egyszerű alak, de szerintem nem is lehet ennél egyszerűbben, mivel a &amp;quot;bármely két vezérlőpont vektorszorzata valamilyen súllyal&amp;quot; dolgot nem lehet belőle eltüntetni.&amp;#039;&amp;#039;&lt;br /&gt;
* [http://en.wikipedia.org/wiki/B%C3%A9zier_surface Wikipédia: Bézier felület]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Surface_normal#Calculating_a_surface_normal Wikipédia: felületi normális]&lt;br /&gt;
&lt;br /&gt;
-- [[KisGergelyG|G]] - 2008.12.25.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Infoalap]]&lt;/div&gt;</summary>
		<author><name>Unknown user</name></author>
	</entry>
</feed>