OSDN Git Service

first
[psychlops/cpp.git] / psychlops / extension / standard / math / psychlops_math_extension.cpp
1 /*
2  *  psychlops_math_extension.cpp
3  *  Psychlops Standard Library (Universal)
4  *
5  *  Last Modified 2010/12/14 by Kenchi HOSOKAWA
6  *  (C) 2010 Kenchi HOSOKAWA, Kazushi MARUYA and Takao SATO
7  */
8
9
10 #include "psychlops_math_extension.h"
11
12 namespace Psychlops {
13         namespace Euclidean {
14                 
15                 double distance(Psychlops::Point p1, Psychlops::Point p2) {
16                         Psychlops::Point dp = p1 - p2;
17                         return sqrt(dp.x*dp.x + dp.y*dp.y);
18                 }
19                 
20                 Psychlops::Point interpolate(Psychlops::Point p1, Psychlops::Point p2, double weight_p1) {
21                         Psychlops::Point dp =  p1 - p2;
22                         dp.x *= weight_p1;
23                         dp.y *= weight_p1;
24                         dp.z *= weight_p1;
25                         return p1 + dp;
26                 }
27                 
28                 Color interpolate(Color p1, Color p2, double weight_p1) {
29                         if(p1.getB() + ( p2.getB() - p1.getB() ) * weight_p1 > 1) std::cout << "overflow";
30                         return Color(
31                                                  p1.getR() + ( p2.getR() - p1.getR() ) * weight_p1,
32                                                  p1.getG() + ( p2.getG() - p1.getG() ) * weight_p1,
33                                                  p1.getB() + ( p2.getB() - p1.getB() ) * weight_p1,
34                                                  p1.getA() + ( p2.getA() - p1.getA() ) * weight_p1
35                                                  );
36                 }
37                 
38         }       
39 }       /*      <- namespace Psycholops         */