logo

Crowdly

Browser

Add to Chrome

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

✅ The verified answer to this question is available below. Our community-reviewed solutions help you understand the material better.

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%
More questions like this

Want instant access to all verified answers on edu.vik.bme.hu?

Get Unlimited Answers To Exam Questions - Install Crowdly Extension Now!

Browser

Add to Chrome