Size: 767 bytes.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// cs/renderer/shapes/sphere.hh
#ifndef CS_RENDERER_SHAPES_SPHERE_HH
#define CS_RENDERER_SHAPES_SPHERE_HH

#include <cmath>

#include "cs/renderer/geo/dot.hh"
#include "cs/renderer/geo/ray3.h"
#include "cs/renderer/math/constants.h"
#include "cs/renderer/shapes/shape.hh"

using r3 = ::cs::renderer::geo::Ray3;
using v3 = ::cs::renderer::geo::Vector3;
using p3 = ::cs::renderer::geo::Point3;
using ::cs::renderer::geo::dot;

namespace cs::renderer::shapes {
struct Sphere : public Shape {
  p3 center;
  float radius;

  Sphere(p3 center, float radius)
      : center(center), radius(radius) {}

  bool intersected_by(r3 ray, p3* at_point,
                      v3* at_normal) override;
};
}  // namespace cs::renderer::shapes

#endif  // CS_RENDERER_SHAPES_SPHERE_HH
v0 (commit) © 2025 @p13i.io | Load balancer proxied to: cs-code-viewer-2:8080 in 2ms.