-
Notifications
You must be signed in to change notification settings - Fork 0
/
ZoomEvaluator.cp
62 lines (52 loc) · 1.13 KB
/
ZoomEvaluator.cp
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "ZoomEvaluator.h"
#include "RealVariable.h"
#include <assert.h>
ZoomEvaluator::ZoomEvaluator(ExpressionEvaluator *p, RealVariable* f)
: param(retain(p)), factor(retain(f))
{
assert(p);
assert(f);
xRange = yRange = zRange = Range(-1,1); //###
}
ZoomEvaluator::~ZoomEvaluator()
{
param->DecRefCount();
}
bool ZoomEvaluator::IsComplex()
{
return param->IsComplex();
}
int ZoomEvaluator::Dimensions()
{
return param->Dimensions();
}
bool ZoomEvaluator::GetDefaultResolution(vecN3& res)
{
bool haveRes = param->GetDefaultResolution(res);
if(!haveRes)
return false;
number f = 1/factor->value;
if(f < 1)
{
res.x = (int) (res.x * f);
res.y = (int) (res.y * f);
res.z = (int) (res.z * f);
}
return true;
}
void ZoomEvaluator::EvaluateReal(vecR3 pos, int n, number values[])
{
number f = 1/factor->value;
pos.x *= (int) (pos.x * f);
pos.y *= (int) (pos.y * f);
pos.z *= (int) (pos.z * f);
param->EvaluateReal(pos,n,values);
}
void ZoomEvaluator::EvaluateComplex(vecR3 pos, int n, complex<number> values[])
{
number f = 1/factor->value;
pos.x *= f;
pos.y *= f;
pos.z *= f;
param->EvaluateComplex(pos,n,values);
}