logo

Crowdly

Browser

Додати до Chrome

Az alábbi osztály egy origó középpontú és axes.x, axes.y, axes.z fél főtengelyh...

✅ Перевірена відповідь на це питання доступна нижче. Наші рішення, перевірені спільнотою, допомагають краще зрозуміти матеріал.

Az alábbi osztály egy origó középpontú és axes.x, axes.y, axes.z fél főtengelyhosszú ellipszoidot valósít meg, amelyre a sugár metszéspontszámítást implementáltuk.  A vec3-ra az osztást GLSL stílusban, azaz koordinátánként függetlenül valósítottuk meg. Kérjük a hibás sorok sorszámát!

class

Ellipsoid 

:

public Intersectable {

   vec3 axes;

public:

   Hit

intersect(const

Ray& ray)

{

      Hit

hit;

1)      float a = dot(ray.dir/axes,

ray.dir/axes);

2)      float b = dot(ray.start/axes,

ray.dir/axes)

* 2;

3)      float

c = dot(ray.start/axes,

ray.start/axes) ;

4)      float

discr = b

* b - 4 *

a * c;

5)      if (discr

< 0) return hit;

else discr = sqrtf(discr);

6)      float

t1 = (-b

+ discr)/2/a,

t2 = (-b - discr)/2/a;

7)      if (t1

<= 0) return hit;

// t1

>= t2 for sure

8)      hit.t

= (t2 > 0) ? t2 : t1;

9)      hit.position

= ray.start

+ ray.dir

* hit.t;

10)    hit.normal

= (hit.position

- center)/radius;

      hit.material

= material;

      return

hit;

   }

};

0%
0%
100%
0%
67%
0%
0%
0%
0%
0%
Більше питань подібних до цього

Хочете миттєвий доступ до всіх перевірених відповідей на edu.vik.bme.hu?

Отримайте необмежений доступ до відповідей на екзаменаційні питання - встановіть розширення Crowdly зараз!

Browser

Додати до Chrome