RobinTrace
transfer_part.h
Go to the documentation of this file.
1 
2 #ifndef TRANSFER_PART_H
3 #define TRANSFER_PART_H
4 
5 #include "lpart/lpart.h"
6 #include "poaky.h"
7 
9 class transfer_part: public lpart {
10  public:
13 
15  transfer_part ();
17  transfer_part (transfer _trf);
18 
20  virtual void apply (bun &b) override;
21 
25  virtual void intersect (bun &b) override;
27  virtual std::unique_ptr<lpart> clone () const override {
28  return std::make_unique<transfer_part>(*this);
29  };
30  virtual bool is_transfer () override {
31  return true;
32  };
33  virtual bool is_renderable () override {
34  return false;
35  };
36 
37  private:
38  virtual std::string print_str () const override;
39 };
40 
41 #endif // TRANSFER_PART_H
42 
Class for ray bundles.
Definition: bun.h:13
Virtual class for elementary optical parts which can be applied to ray bundles.
Definition: lpart.h:12
Part which applies a transfer operation to rays.
Definition: transfer_part.h:9
virtual bool is_transfer() override
Is the part a transfer?
Definition: transfer_part.h:30
transfer_part()
Default constructor.
Definition: transfer_part.cpp:4
virtual void intersect(bun &b) override
Do nothing.
Definition: transfer_part.cpp:21
virtual bool is_renderable() override
Is the part renderable?
Definition: transfer_part.h:33
virtual void apply(bun &b) override
Apply the transfer operation to ray bundle b.
Definition: transfer_part.cpp:13
transfer trf
The transfer operation to perform.
Definition: transfer_part.h:12
virtual std::unique_ptr< lpart > clone() const override
Clone.
Definition: transfer_part.h:27
virtual std::string print_str() const override
String for printing the object.
Definition: transfer_part.cpp:25
Transfer operation over a ray.
Definition: transfer.h:40