<?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=Sz%C3%A1m%C3%ADt%C3%B3g%C3%A9pes_grafika_vizsga%2BgyakIVbr2007._01._02.</id>
	<title>Számítógépes grafika vizsga+gyakIVbr2007. 01. 02. - Laptörténet</title>
	<link rel="self" type="application/atom+xml" href="https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=Sz%C3%A1m%C3%ADt%C3%B3g%C3%A9pes_grafika_vizsga%2BgyakIVbr2007._01._02."/>
	<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Sz%C3%A1m%C3%ADt%C3%B3g%C3%A9pes_grafika_vizsga%2BgyakIVbr2007._01._02.&amp;action=history"/>
	<updated>2026-04-20T00:59:28Z</updated>
	<subtitle>Az oldal laptörténete a wikiben</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://vik.wiki/index.php?title=Sz%C3%A1m%C3%ADt%C3%B3g%C3%A9pes_grafika_vizsga%2BgyakIVbr2007._01._02.&amp;diff=138299&amp;oldid=prev</id>
		<title>Unknown user: Új oldal, tartalma: „{{GlobalTemplate|Infoalap|SzgGrafVizsga20070102}}  __TOC__  8:00-9:10. A 9:20-9:50 közötti gyakIV feladatsorát a vizsga első feladata képezte.  ==1.) Feladat (gyak…”</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Sz%C3%A1m%C3%ADt%C3%B3g%C3%A9pes_grafika_vizsga%2BgyakIVbr2007._01._02.&amp;diff=138299&amp;oldid=prev"/>
		<updated>2012-10-21T20:16:35Z</updated>

		<summary type="html">&lt;p&gt;Új oldal, tartalma: „{{GlobalTemplate|Infoalap|SzgGrafVizsga20070102}}  __TOC__  8:00-9:10. A 9:20-9:50 közötti gyakIV feladatsorát a vizsga első feladata képezte.  ==1.) Feladat (gyak…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Új lap&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{GlobalTemplate|Infoalap|SzgGrafVizsga20070102}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
8:00-9:10. A 9:20-9:50 közötti gyakIV feladatsorát a vizsga első feladata képezte.&lt;br /&gt;
&lt;br /&gt;
==1.) Feladat (gyakIV+vizsga)==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A virtuális világban két objektum van:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Gömb, melynek középpontja &amp;lt;math&amp;gt;(2, 3, 2)&amp;lt;/math&amp;gt;, sugara &amp;lt;math&amp;gt;\sqrt{12}&amp;lt;/math&amp;gt;. A gömb ideális tükör, amelynek albedója minden hullámhosszon 1.&lt;br /&gt;
* Az &amp;lt;math&amp;gt;y=4&amp;lt;/math&amp;gt; sík. A sík fényt bocsát ki oly módon, hogy a síkon lévő &amp;lt;math&amp;gt;(x, y, z)&amp;lt;/math&amp;gt; pont sugársűrűsége éppen &amp;lt;math&amp;gt;(|x|, |y|, |z|)&amp;lt;/math&amp;gt;, azaz a pont koordinátáinak abszolút értékével megegyező intenzitású a vörös, zöld és kék hullámhosszokon. A sík albedója zérus.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A kamera az origóban van, az Y tengely irányába néz, függőleges iránya a Z tengely. Milyen színű az ablak középpontjában lévő pixel (azaz milyen sugársűrűség éri a szemet az Y tengely irányából)?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Először írja le a megoldás menetét, azután végezze el a szükséges számításokat. Pontozás: Elsődleges sugár: 1p; Metszéspont: 2p; Másodlagos sugár: 3p; A másodlagos sugár metszéspontja: 2p; A sugársűrűség számítása: 2p.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
===Megoldás===&lt;br /&gt;
Az elsődleges sugárban nem vagyok biztos, úgyhogy egyelőre nem írom le.&amp;lt;br&amp;gt;&lt;br /&gt;
De a másodlagosat ami a gömbről verődik vissza azt tudom&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A Vetítősugár &amp;lt;math&amp;gt;V =(0,1,0)&amp;lt;/math&amp;gt; //az y tengely felé néz az origóból&amp;lt;br&amp;gt;&lt;br /&gt;
A vetítősugár és a gömb döféspontja:&amp;lt;br&amp;gt;&lt;br /&gt;
Gömb egyenlete: &amp;lt;math&amp;gt;(x-2)^2+(y-3)^2+(z-2)^2=12&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Az y tengelyen &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt;z=0&amp;lt;/math&amp;gt; behelyettesítve:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;(-2)^2+(y-3)^2+(-2)^2=12&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;(y-3)^2=4&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Ebből &amp;lt;math&amp;gt;y_1=1&amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt;y_2=5&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Most csak &amp;lt;math&amp;gt;y_1=1&amp;lt;/math&amp;gt; kell mert a másik eredmény a sík mögött van, tehát a döféspont &amp;lt;math&amp;gt;D=(0,1,0)&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Most ki kell még számolni a &amp;lt;math&amp;gt;cos\alpha&amp;lt;/math&amp;gt;-t (a vetítősugár és a normálvektor közötti szöget) ehez kelle a normálvektor. Mivel ez gömb, ezért minden sugár normálvektor. Tehát a normálvektor:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;-((2,3,2)-(0,1,0))=(-2, -2, -2)&amp;lt;/math&amp;gt; Ezt még le kell normálni így lesz &amp;lt;math&amp;gt;N=(-\frac{1}{\sqrt3}, -\frac{1}{\sqrt3}, -\frac{1}{\sqrt3})&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
a vetitősugár és a normálvektor közötti szög &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt;; ennek &amp;lt;math&amp;gt;cos\alpha&amp;lt;/math&amp;gt;:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;N \cdot V = -\frac{1}{\sqrt3}&amp;lt;/math&amp;gt; (skalárszorzat egységnyi hosszú vektorokkal)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A reflektált vetítősugár R: &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;R = V-2 \cdot cos\alpha \cdot N = [0,1,0] + \frac{2}{\sqrt3} \cdot [-\frac{1}{\sqrt3}, -\frac{1}{\sqrt3}, -\frac{1}{\sqrt3}] = [0,1,0] + [-\frac{2}{3}, -\frac{2}{3}, -\frac{2}{3}] = &amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;R = (-\frac{2}{3}, \frac{1}{3}, -\frac{2}{3})&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tükrözés után a vetítősugár a &amp;lt;math&amp;gt;(0,1,0)&amp;lt;/math&amp;gt; pontból az R irányba halad, hol metszi &amp;lt;math&amp;gt;y=4&amp;lt;/math&amp;gt; síkot??&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Paraméteres egyenlet rendszer:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x(t)=0-\frac{2}{3}t&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;y(t)=1+\frac{1}{3}t&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;z(t)=0-\frac{2}{3}t&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-- [[NandorG]] - 2007.01.02.&lt;br /&gt;
&lt;br /&gt;
Szerintem &amp;lt;math&amp;gt;t=9&amp;lt;/math&amp;gt; és ebből a metszéspont &amp;lt;math&amp;gt;M=(-6,4,-6)&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
A feladat szerint a sugár intenzitás &amp;lt;math&amp;gt;(6,4,6)&amp;lt;/math&amp;gt; lesz (az &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; pont koord. abszolút értéke)&amp;lt;br&amp;gt;&lt;br /&gt;
-- [[HoaiNam|nam]] - 2007.01.05.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
És pontosan ez a (6,4,6) látszódik a képernyőn, mert tökéletes visszaverődés van, és albedo=1 miatt k&amp;lt;math&amp;gt;_r&amp;lt;/math&amp;gt;=1. Nem kell koszinuszokat számolgatni, meg semmi.-- [[BergmannGabor|Baba]] - 2007.01.14.&lt;br /&gt;
&lt;br /&gt;
 A gömb felületre bejővő sugár intenzitás = (6,4,6). A szembe pedig Lamber törvény szerint kéne számolni:&amp;lt;br&amp;gt;&lt;br /&gt;
Lout = Lin * Kd * cos(alpha)&amp;lt;br&amp;gt;&lt;br /&gt;
ahol cos(alpha)= 1/gyök(3)	és Kd = (1,1,1)&amp;lt;br&amp;gt;&lt;br /&gt;
így a szembe jövő sugár sűrűség: Lout = (R,G,B) = (4/gyök(3), 6/gyök(3), 4/gyök(3))&amp;lt;br&amp;gt;&lt;br /&gt;
-- [[BuiThiKieuAnh|comay]] - 2008.01.02.&lt;br /&gt;
&lt;br /&gt;
 A Lambert diffúz felületre kell, ez viszont ideális tükör (lásd Baba kommentjét).  -- [[TothZs|Zsófi]] - 2008.01.15.&lt;br /&gt;
&lt;br /&gt;
-- Képletek: [[CsapoT|Csapszi]] - 2007.01.06. &amp;lt;br&amp;gt;&lt;br /&gt;
==2.) Feladat (vizsga)==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Mi a plakát (billboard) és mire használják (max 3 mondat) (3p)?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Alakítsa át az alábbi, Cg nyelvű  vertex shader programot úgy, hogy egy plakát (billboard) megjelenítésére alkalmas legyen. Indokolja a megoldást (7p)!*&lt;br /&gt;
&lt;br /&gt;
Segítség: az alábbi program a sztenderd OpenGL megjelenítési csővezeték csúcspontárnyalója,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  glDisable(GL_LIGHTING);&lt;br /&gt;
  glEnable(GL_TEXTURE_2D);&lt;br /&gt;
  glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
beállítások esetén, feltételezve, hogy a MODELVIEW transzformációs mátrixot =modelview=, PROJECTION transzformációs mátrixot =proj= változókban tároljuk. Egy =m= mátrix elemei C szintaktika szerint =m[0][0], m[0][1], ..., m[3][2], m[3][3]=.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  struct inputs {&lt;br /&gt;
	 float4 position : POSITION;&lt;br /&gt;
	 float3 normal	: NORMAL;&lt;br /&gt;
	 float2 texcoord : TEXCOORD0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  struct outputs {&lt;br /&gt;
	 float4 hposition : POSITION;&lt;br /&gt;
	 float2 texcoord : TEXCOORD0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  outputs main(inputs IN, &lt;br /&gt;
					uniform float 4x4 modelview, &lt;br /&gt;
					uniform float4x4 proj) {&lt;br /&gt;
	 outputs OUT;&lt;br /&gt;
	 float4 campos = mul(modelview, IN.position);&lt;br /&gt;
	 OUT.hposition = mul(proj, campos);&lt;br /&gt;
	 OUT.texcoord = IN.texcoord;&lt;br /&gt;
	 return OUT;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A plakát mérete =size=, középpontja világkoordinátákban =billboard=. A szempozíció =eye=, a nézeti pont =lookat=, a preferált függőleges irány =up=. A plakátot a következő OpenGL hívásokkal szeretnénk megjeleníteni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(54, 1, 1, 1000);&lt;br /&gt;
  glMatrixMode(GL_MODELVIEW); glLoadIdentity();&lt;br /&gt;
  glLookAt(eye.x, eye.y, eye.z, lookat.x, lookat.y, lookat.z, up.x, up.y, up.z);&lt;br /&gt;
  glTranslatef(billboard.x, billboard.y, billboard.z);&lt;br /&gt;
  glBegin(GL_QUADS);&lt;br /&gt;
	 glTexCoord2f(0, 0); glVertex3f(-size, -size, 0);&lt;br /&gt;
	 glTexCoord2f(1, 0); glVertex3f(size, -size, 0);&lt;br /&gt;
	 glTexCoord2f(1, 1); glVertex3f(size, size, 0);&lt;br /&gt;
	 glTexCoord2f(0, 1); glVertex3f(-size, size, 0);&lt;br /&gt;
  glBegin();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Megoldás===&lt;br /&gt;
bmegame.ppt 52. slide alapján. &amp;lt;br&amp;gt;&lt;br /&gt;
(illetve sünis könyv 399. oldalán egy másik módszer is van) -- [[CsapoT|Csapszi]] - 2007.01.07.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  // A lényeg, hogy a megkapott pontokat úgy kell transzformálni, &lt;br /&gt;
  // hogy a négyszög pont a kamera felé nézzen (merőleges legyen a kamerára).&lt;br /&gt;
  // Megjegyzem, hogy régebben ezeket sprite-nak hívták, ez tévesztett meg engem is a vizsgában :(&lt;br /&gt;
&lt;br /&gt;
  outputs main(inputs IN, &lt;br /&gt;
					uniform float 4x4 modelview, &lt;br /&gt;
					uniform float4x4 proj) {&lt;br /&gt;
	 outputs OUT;	  &lt;br /&gt;
	 OUT.texcoord = IN.texcoord;&lt;br /&gt;
&lt;br /&gt;
	 // jó lenne, ha valaki megmagyarázná a mátrixnak miért pont ezen elemeiből jön ki up/right vektor&lt;br /&gt;
	 float3 right = float3(modelview[0], modelview[4], modelview[8]); // aki tudja hogyan lehet szépen többdimenziós tömböt indexelni cg-ben, javítsa&lt;br /&gt;
	 float3 up = float3(modelview[1], modelview[5], modelview[9]);&lt;br /&gt;
&lt;br /&gt;
	 float3 pos = (IN.position.x * right) + (IN.position.y * up);&lt;br /&gt;
&lt;br /&gt;
	 float4 campos = mul(modelview, float4(pos, 1.0));&lt;br /&gt;
	 OUT.hposition = mul(proj, campos);&lt;br /&gt;
&lt;br /&gt;
	 return OUT;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[KelényiImre|Imi]] - 2007.01.04.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Hogy miért is azok az up/right vektorok? (Tk. 193-194.old)&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gluLookAt:&amp;lt;br&amp;gt;&lt;br /&gt;
Van egy w = norm( eye - lookat ) : pont a szem felé mutató vektorunk.&amp;lt;br&amp;gt;&lt;br /&gt;
Ebből csinálunk egy u-t: u = norm( up x w ) : ez pont jobbra fog mutatni - használd az ujjaidat:) up:hüvelyk, w:mutató(feléd), eredmény:harmadik ujj.&amp;lt;br&amp;gt;&lt;br /&gt;
Majd csinálunk egy harmadikat: v = w x u : ez az előbbiek alapján pont felfelé fog mutatni.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
glTranslatef:&amp;lt;br&amp;gt;&lt;br /&gt;
e = billboard.xyz&lt;br /&gt;
&lt;br /&gt;
A transzformációs mátrix pedig (Ttr x Trot : először tolunk el, aztán koordinátatranszformálunk - OpenGL-be fordított sorrendben kell beírni):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
T =[ ux  vx  wx  0&lt;br /&gt;
	  uy  vy  wy  0&lt;br /&gt;
	  uz  vz  wz  0&lt;br /&gt;
	 -ex -ey -ez  1 ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Indexelés:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
M[y,x] = M[y][x] = M[y*4+x]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
és kijön:)&lt;br /&gt;
&lt;br /&gt;
-- [[BacsoGergely]] - 2007.01.04.&lt;br /&gt;
&lt;br /&gt;
-- A feladatokat begépelte [[KelényiImre|Imi]] - 2007.01.02.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Infoalap]]&lt;/div&gt;</summary>
		<author><name>Unknown user</name></author>
	</entry>
</feed>