source: GTP/trunk/App/Demos/Illum/pathmap/Radion.cpp @ 2197

Revision 2197, 1.2 KB checked in by szirmay, 17 years ago (diff)
Line 
1#include "dxstdafx.h"
2#include "Radion.hpp"
3#include <iostream>
4
5Radion::Radion(void)
6{
7}
8
9Radion::~Radion(void)
10{
11}
12
13double Radion::getFormFactorTo(const Radion& o) const
14{
15        Vector diff = position - o.position;
16        double dist2 = diff.norm2();
17        double cosa = o.normal * diff; // / dist
18        double cosb = - (normal * diff); // / dist
19        if(cosa < 0 || cosb < 0)
20                return 0;
21        return cosa * cosb / dist2 / dist2;
22}
23
24/*std::ostream& operator<<(std::ostream& s, const Radion& r)
25{
26        s.write((char*)&r, sizeof(Radion));
27        return s;
28}
29
30std::istream& operator>>(std::istream& s, Radion& r)
31{
32        s.read((char*)&r, sizeof(Radion));
33        return s;
34}*/
35
36std::ostream& operator<<(std::ostream& s, const Radion& r)
37{
38        s << "pos " << r.position.x << ' ' <<
39                r.position.y << ' ' <<
40                r.position.z << '\n';
41
42        s << "normal " << r.normal.x << ' ' <<
43                r.normal.y << ' ' <<
44                r.normal.z << '\n';
45
46        s << "prob " << r.radiance.sum() << '\n';
47
48        return s;
49}
50
51std::istream& operator>>(std::istream& s, Radion& r)
52{
53        char k[128];
54
55        s >> k >> r.position.x >>
56                r.position.y >>
57                r.position.z;
58        s >> k >> r.normal.x >>
59                r.normal.y >>
60                r.normal.z;
61
62        s >> k >> r.radiance.x;
63
64        r.radiance.y = r.radiance.z = 0.0;
65
66        return s;
67}
Note: See TracBrowser for help on using the repository browser.