14 float v1 = f.Index(x+delta);
15 float v2 = f.Index(x);
113 v.
dy =
f2.Index(p.
y);
134 v.
dy =
f2.Index(p.
y);
150 std::pair<float,float> pp = std::make_pair(p.
x, p.
y);
169 for(
float xx = startx;xx<x;xx+=delta)
171 val += std::min(f.Index(xx)*delta, f.Index(xx+delta)*delta);
172 val2 += std::max(f.Index(xx)*delta, f.Index(xx+delta)*delta);
176 return (val+val2)/2.0;
182 for(
float xx = startx;xx<x;xx+=delta)
184 val += std::min(f.Index(xx)*delta, f.Index(xx+delta)*delta);
185 val2 += std::max(f.Index(xx)*delta, f.Index(xx+delta)*delta);
189 return fabs(val-val2)/2.0;
193 float delta, startx,
C;
196template<
class T,
class U,
class K>
201 K Index(
T t)
const {
return g.Index(f.Index(t)); }
204 std::vector<U> vec = g.Inverse(k);
206 int size = vec.size();
207 for(
int i=0;i<
size;i++)
209 std::vector<T> vec3 = f.Inverse(vec[i]);
210 vec2.insert(vec2.end(), vec3.begin(), vec3.end());
225template<
class U,
class V>
230 V Element()
const {
return f.Index(fa.Element()); }
250template<
class A,
class U=A>
257 return obj.Index(t)==choose;
268template<
class X,
class Y,
class U=X,
class V=Y>
285template<
class X,
class Y,
class U=X,
class V=Y>
291 return a.Index(f.Index(x));
301template<
class A,
class B>
314 return bb->
Index(
f.Index(a));
318 mutable PowerSet<B> *bb;
322template<
class Omega,
class A,
class B>
335 return bb->
Index(
f.Index(a));
339 Function<B,Omega> *bb;
347template<
class U,
class V,
class X,
class Y>
354 virtual X i(U u)
const=0;
361 virtual bool u(U
u)
const=0;
362 virtual bool v(
V v)
const=0;
363 virtual bool x(
X x)
const=0;
364 virtual bool y(
Y y)
const=0;
370 bool u(U
u)
const {
return mem.Index(r.f(r.i(
u))); }
371 bool v(
V v)
const {
return mem.Index(r.j(
v)); }
372 bool x(
X x)
const {
return mem.Index(r.f(
x)); }
373 bool y(
Y y)
const {
return mem.Index(
y); }
409template<
class U,
class X,
class Y>
435class BlurFunction :
public Function<Pixel, Env>
448 return c.
r == p.
r && c.
g == p.
g && c.
b == p.
b;
455template<
class A,
class B,
class Omega>
468 return bb->
Index(
f.Index(a));
472 mutable Function<B,Omega> *bb;
483 return m.Index(a) && m2.Index(a);
491template<
class T,
class A,
class C,
class B>
495 Intersection2(
Function<A,B> &f1,
Function<C,B> &
f2,
Function<T,A> &m1,
Function<T,C> &m2) : i1(f1), i2(
f2), im1(m1), im2(m2), mem(0) { }
522 return m.Index(a) || m2.Index(a);
538 int size = arr.Size();
539 for(
int i=0;i<
size;i++)
542 bool b = mem->
Index(a);
559 int size = arr.Size();
560 for(
int i=0;i<
size;i++)
563 bool b = mem->
Index(a);
573template<
class A,
class B>
580 return comp.Comp(f1.Index(a), f2.Index(a));
594 return std::abs(x-p) < delta;
606 return (x-p).Dist() < r;
613template<
class E,
class A,
class B>
633template<
class E,
class A,
class B>
639 if (path_from_f2) {
return f2.Index(e.Index(e)); }
640 return f1.Index(e.Index(e));
650template<
class A,
class B>
665template<
class A,
class B>
672 return std::make_pair(f.Index(a), g.Index(a));
679template<
class A,
class B>
686 return std::make_pair(a,f.Index(a));
702template<
class A,
class B,
class C>
710 std::vector<B> b = bc.Inverse(c);
728template<
class A,
class B>
733 bool Index(std::pair<A,B> &ab)
const
737 return elem->
Index(ab.first);
769class BlurFunction :
public Function<ImgSelect, int>
772 BlurFunction(Bitmap<Color> &bm,
float mult) : bm(bm) { }
774 int Index(ImgSelect p)
const
778 Color cx1 = bm.Map(x-1,y);
779 Color cx2 = bm.Map(x+1,y);
780 Color cy1 = bm.Map(x,y-1);
781 Color cy2 = bm.Map(x,y+1);
782 Color c = bm.Map(x,y);
786 val = ((cx1.
r+cx2.
r+cy1.
r+cy2.
r)*mult/4.0 + (1.0-mult)*c.
r);
790 val = ((cx1.
g+cx2.
g+cy1.
g+cy2.
g)*mult/4.0 + (1.0-mult)*c.
g);
794 val = ((cx1.
b+cx2.
b+cy1.
b+cy2.
b)*mult/4.0 + (1.0-mult)*c.
b);
819class Sharpen :
public Bitmap<Color>
822 Sharpen(
const Bitmap<Color> &c) : c(c), img(c) { }
823 int SizeX()
const {
return c.SizeX(); }
824 int SizeY()
const {
return c.SizeY(); }
825 Color
Map(
int x,
int y)
const
827 for(
int r=0;r<255;r++)
829 ConstantBitmap2 b(r,0,0);
830 BlurFunction blur(b, 0.5);
831 Equalizer3<ImgSelect, int> eq(img, blur);
836 const Bitmap<Color> &c;
842template<
class A,
class B,
class C>
850 return comp.Comp(f1.Index(p.first), f2.Index(p.second));
859template<
class P,
class A,
class B,
class C>
863 Pullback2(
Function<A,C> &f1,
Function<B,C> &f2,
Function<P,A> &p1,
Function<P,B> &p2) : f1(f1), f2(f2), p1(p1), p2(p2), mem(0) { }
882template<
class P,
class A,
class B,
class C>
886 Pullback3(
Function<A,C> &f1,
Function<B,C> &f2,
Function<P,A> &p1,
Function<P,B> &p2,
bool is_path_from_B) : is_path_from_B(is_path_from_B), f1(f1), f2(f2), p1(p1), p2(p2) { }
889 if (is_path_from_B) {
return f2.Index(p2.Index(p)); }
890 return f1.Index(p1.Index(p));
900template<
class P,
class A,
class B,
class C>
904 Pullback4I(
Function<A,C> &f1,
Function<B,C> &f2,
Function<P,A> &p1,
Function<P,B> &p2) : f1(f1), f2(f2),p1(p1), p2(p2) { }
913 return std::make_pair(c1,c2);
924 float Index(std::pair<float,float> p)
const {
return fabs(p.first - p.second); }
1013template<
class T,
class P,
class A,
class B,
class C>
1022 Function<std::pair<C,C>,
float> &pb_minus,
1024 T t_1) : t(t), pb(f1,f2,p1,p2), pb1(t,pb), pb2(pb1, pb_minus), t_0(t_0), t_1(t_1), f1(f1), f2(f2), p1(p1), p2(p2) { }
1027 T val = T::SolveWithFailure(pb2, t_0, t_1, b);
1036 return std::make_pair(f1.Index(
get_A()), f2.Index(
get_B()));
1052template<
class P,
class A,
class B>
1062 float t_1) : t_0a(t_0), t_1a(t_1),
FloatPullbackGeneric<
Float,
P,
A,
B,float>(f1,f2,p1,p2,t,minus,t_0a,t_1a) { }
1071 float Index(std::pair<Point,Point> p)
const
1074 Vector v = p.first - p.second;
1082 float Index(std::pair<Point2d,Point2d> p)
const
1090template<
class P,
class A,
class B>
1100 FloatPair t_1) :
FloatPullbackGeneric<
FloatPair,
P,
A,
B,
Point>(f1,f2,p1,p2,t,dist,t_0,t_1) { }
1105template<
class P,
class A,
class B>
1115 FloatPair t_1) :
FloatPullbackGeneric<
FloatPair,
P,
A,
B,
Point2d>(f1,f2,p1,p2,t,dist,t_0,t_1) { }
1120template<
class P,
class A,
class B>
1130 FloatPoint t_1) :
FloatPullbackGeneric<
FloatPoint,
P,
A,
B,
Point>(f1,f2,p1,p2,t,dist,t_0,t_1) { }
1139template<
class T,
class K>
1143 T Index(std::pair<T,K> p)
const {
return p.first; }
1146template<
class T,
class K>
1150 K Index(std::pair<T,K> p)
const {
return p.second; }
1169template<
class P,
class A,
class B,
class C>
1173 Pullback4(
Function<A,C> &f1,
Function<B,C> &f2,
Function<P,A> &p1,
Function<P,B> &p2,
bool is_path_from_B) : is_path_from_B(is_path_from_B), f1(f1), f2(f2), p1(p1), p2(p2) { }
1179 bool is_path_from_B;
1188template<
class A,
class C>
1204 bool Comp(
float t1,
float t2)
const
1206 return fabs(t1-t2) < 0.001;
1215 return sqrt(p.
x*p.
x+p.
y*p.
y);
1224 return sqrt(p.
x*p.
x+p.
y*p.
y+p.
z*p.
z);
1235 int s = coll.Size();
1236 for(
int i=0;i<s;i++)
1238 Point c = coll.Index(i);
1254 Vector dist(0.0, 0.0, 0.0);
1255 int s = coll.Size();
1257 for(
int i=0;i<s;i++)
1259 Point c = coll.Index(i);
1262 if (
d >= dist1 &&
d <= dist2)
1277 Range2(
float start,
float end) : start(start), end(end) { }
1280 return x >= start && x <=end;
1289 Step(
float x,
bool flip) : x(x), flip(flip) { }
1311 return atan2(p.
y,p.
x);
1371 return mem.Index(t);
1379template<
class A,
class T>
1400 return mem->
Index(p);
1413 return bm.Map(p.
x, p.
y);
1440 return bm.Map(p.
x, p.
y);
1470 return x_mem->
Index(x);
1490 int s = points.Size();
1493 if (count == num)
break;
1498 int s2 = points.Size();
1499 for(;i2<s2;i2++,i3++)
1509 int s = points.Size();
1512 if (count == num)
break;
1518 Point2d p2 = points.Map(pos+1);
1533 PolygonFill(
float sx,
float sy, Line2dCollection &coll) : sx(sx), sy(sy), coll(coll), swapped(coll) { }
1534 void Collect(CollectVisitor &vis)
1540 float SizeX()
const {
return sx; }
1541 float SizeY()
const {
return sy; }
1542 bool Map(
float x,
float y)
const
1545 FilterLines
filter(swapped, y);
1547 int size = coll.Size();
1548 for(
int i=0;i<
size;i++)
1554 Line2d l = coll.Index(i);
1556 LineIn2dScanLine line(l.
p1,l.
p2,y);
1558 bool b = line.Index(x);
1559 if (line.Index(0)==
true && line.Index(sx-1)==
false) b = !b;
1572 Line2dCollection &coll;
1573 mutable SwapLine2dCollection swapped;
1606 : grad(float(sx), float(sy), p1, p2, c1,c2),
1607 sample(grad, sx, sy),
1608 hole(sample, points) { }
1611 int SizeX()
const {
return hole.SizeX(); }
1612 int SizeY()
const {
return hole.SizeY(); }
1613 Color Map(
int x,
int y)
const {
return hole.Map(x,y); }
1636 return f.Index(x) - g.Index(x);
1658 float Index(
float x)
const {
return val; }
1666 float Index(
float x)
const {
return x*x; }
1669 std::vector<float> v;
1670 float val = sqrt(x);
1681 float Index(
float x)
const {
return x*c; }
1684 std::vector<float> v;
1693template<
class X,
class Y>
1707template<
class X,
class Y,
class Z>
1712 Function< std::pair<Y,Z>,
float> &g,
1713 Function< std::pair<Y,Z> ,
float > &h)
1715 std::vector<X>
Index(std::pair<Y,Z> p)
const
1726 float Size()
const {
return 2.0*3.14159; }
1730 p.
x = (2.0*cos(3*t))*cos(2.0*t);
1731 p.
y = (2.0+cos(3*t))*sin(2.0*t);
1741 float Index(
float x)
const {
return f.Index(x).x; }
1750 float Index(
float x)
const {
return f.Index(x).y; }
1759 for(
int i=0;i<20;i++)
1761 x = x -
f.Index(x)/df.
Index(x);
1769 for(
int i=0;i<20;i++)
1828 virtual Expr *
Child(
int i)
const {
if (i==0)
return &
t;
else return &
k; }
1857 virtual Expr *
Child(
int i)
const {
if (i==0)
return &
t;
else return &
k; }
1863template<
class T,
class K>
1914 FloatSpaceY(
float start_y,
float end_y) : start_y(start_y), end_y(end_y) { }
1917 if (p.
y < start_y)
return 0.0;
1918 if (p.
y > end_y)
return 1.0;
1919 return (p.
y-start_y)/(end_y-start_y);
1942 float val = orig.Get(p);
1943 bool b = v.Inside(p);
1944 if (val < value && b)
1962 float val = orig.Get(p);
1963 bool b = v.Inside(p);
1964 if (val > value && b)
1982 float val = orig.Get(p, time);
1983 bool b = v.Inside(p, time);
1984 if (val < value && b)
1997class DowngradeTimedFloatSpace :
public FloatSpace
2000 DowngradeTimedFloatSpace(TimedFloatSpace &orig, TimedVolumeObject &v,
float value) : v(v), value(value), orig(orig) { }
2001 float Get(Point p,
float time)
const
2003 float val = orig.
Get(p, time);
2004 bool b = v.Inside(p, time);
2005 if (val > value && b)
2012 TimedVolumeObject &v;
2014 TimedFloatSpace &orig;
2023 return std::min(s1.Get(p), s2.Get(p));
2036 return std::max(s1.Get(p), s2.Get(p));
2049 return std::min(s1.Get(p, time), s2.Get(p, time));
2062 return std::max(s1.Get(p, time), s2.Get(p, time));
2075 return 1.0-s1.Get(p);
2087 return 1.0-s1.Get(p, time);
2136template<
class T,
class K>
2144 return std::make_pair(k,k);
2154 RaySphereIntersection(Point center,
float radius,
2155 Function<float, Point> &ray,
2156 float t_0,
float t_1)
2157 : dist(center), dist_f(dist), surf(
radius), surf_f(surf),
2158 diag(ray), pb(dist_f, surf_f, fst, snd, diag, t_0, t_1) { }
2161 DistanceFloatSpace dist;
2162 FloatSpaceFunction dist_f;
2163 ConstantFloatSpace surf;
2164 FloatSpaceFunction surf_f;
2165 Fst<Point,Point> fst;
2166 Snd<Point,Point> snd;
2167 Diagonal<float, Point> diag;
2168 FloatPullback<std::pair<Point,Point>, Point, Point> pb;
2178 return f.Index(x,y);
2191 return f.Index(x,y);
2253class FunctionPlaneIntersection :
public Function2<float, float, std::pair<Point2d, Point2d> >
2258 std::pair<Point2d,Point2d>
Index(
float x,
float y)
const
2260 XProdFunction xprod(y);
2261 YProdFunction yprod(x);
2262 FloatPullback xpb(fa,fb, pxf, pyf, xprod, rx.
start, rx.
end);
2263 FloatPullback ypb(fa,fb, pxf, pyf, yprod, rz.
start, rz.
end);
2270 return std::make_pair(r1,r2);
2286 float Index(std::pair<Point2d,Point2d> p)
const
2289 d.x = p.first.x-p.second.x;
2290 d.y = p.first.y-p.second.y;
2291 return sqrt(
d.x*
d.x+
d.y*
d.y);
2295class IsSpecialPoint :
public Function2<float,float, bool>
2298 IsSpecialPoint(Function2<float,float,float> &
f, Range rx,Range ry,
float dist_required) : sect(
f,rx,ry), dist_required(dist_required) { }
2299 bool Index(
float x,
float y)
const
2301 std::pair<Point2d, Point2d> p = sect.Index(x,y);
2302 float d = dist.Index(p);
2303 return d<dist_required;
2306 FunctionPlaneIntersection sect;
2307 Point2dDistance dist;
2308 float dist_required;
2336template<
class T,
class K>
2337class GraphOfFunction :
public Function<T, std::pair<T,K> >
2340 GraphOfFunction(Function<T,K> &
f) :
f(
f) { }
2341 std::pair<T,K>
Index(T t)
const
2343 return std::make_pair(t,
f.Index(t));
2349class Graph3d :
public GraphOfFunction<Point,float>
2353template<
class S,
class K>
2356 GraphPair(Function<T,K> &f1, Function<T,K> &
f2) : gf1(f1), gf2(
f2) { }
2357 std::pair<T,K> f1(S t)
const {
return gf1.Index(t); }
2358 std::pair<T,K>
f2(S t)
const {
return gf2.Index(t); }
2360 GraphOfFunction gf1, gf2;
2363template<
class T,
class S>
2367 virtual S get_1(T t)
const=0;
2368 virtual S get_2(T t)
const=0;
2370 std::pair<T,K> getA(T t)
const {
return f1(get_1(t)); }
2371 std::pair<T,K> getB(T t)
const {
return f2(get_2(t)); }
2374 bool IsRoot(T t)
const {
2375 return fabs(getA(t).second-getB(t).second)<0.001;
2382 Sphere(Point center,
float radius) : center(center), radius(radius) { }
2383 Point get_p(
float x,
float y)
2388class EqSolver3d :
public Function<std::pair<float,float>, float>
2391 EqSolver3d(Function<Point, float> &
f) :
f(
f) { }
2392 LineIn3d line(
float x,
float y)
const
2394 Point p1 = tiny.get_p(x,y);
2395 Point p2 = large.get_p(x,y);
2398 float Index(std::pair<float,float> p)
const
2402 Point p1 = tiny.get_p(x,y);
2403 Point p2 = large.get_p(x,y);
2405 FunctionCompose<float,float,float> comp(
ln,
f);
2406 float s =
::Solve(comp, 0.0, 1.0);
2412 Function<Point,float> &
f;
2421 virtual bool Value(T t)
const=0;
2424template<
class A,
class B>
2428 virtual OpValue<A> *OpMap(OpValue<B> *value)
const=0;
2455 Point2d l2p1, Point2d l2p2)
2456 : l1p1(l1p1), l1p2(l1p2), l2p1(l2p1), l2p2(l2p2) { }
2469 float xupper =(x1*y2-y1*x2)*(x3-x4)-(x1-x2)*(x3*y4-y3*x4);
2470 float xlower = (x1-x2)*(y3-y4)-(y1-y2)*(x3-x4);
2471 float xx = xupper/xlower;
2472 float yupper = (x1*y2-y1*x2)*(y3-y4)-(y1-y2)*(x3*y4-y3*x4);
2473 float ylower = (x1-x2)*(y3-y4)-(y1-y2)*(x3-x4);
2474 float yy = yupper/ylower;
2487class SquareWithTriangle
2504template<
template<>
class Container,
class A,
class B>
2508 virtual B Func(A a)
const=0;
2509 virtual Container<std::vector<A> > BackwardFunc(Container<B> cont)
const=0;
2512template<
template<>
class Container1,
template<>
class Container2,
class A,
class B>
2516 virtual Container2<B> Conv2(Container1<A> cont);
2517 virtual Container1<A> Conv1(Container2<B> cont);
2520template<
template<>
class Container1,
template<>
class Container2,
template<>
class Container12,
class A,
class B,
class C>
2524 virtual std::pair<Container1<A>, Container2<B> > Separate(Container12<C> c)
const=0;
2525 virtual Container12<C> Combine(std::pair<Container1<A>, Container2<B> > p)
const=0;
2529class CATSingleElemPair
2532 virtual Container<A> SingleElem(A a)
const=0;
2535template<
template<>
class Container,
class A,
class I>
2539 virtual A ChooseElem(Container<A> cont, I elem)
const=0;
2546 virtual void SetContainer(Container<T> &cont)=0;
2547 virtual int NumItems()
const=0;
2555 virtual Container<A> Identity(Container<A> cont)
const=0;
2558class TriangleComposition
2561 CatArrow<C1, A,B> *Composition(CATArrow<C1, A,C> *c1, CATArrow<C1,C,B> *c2)
const=0;
2564class SquareComposition
2569 CATArrow<C1,A,C> *Intersection(CATARrow<C1,A,B> *c1, CATArrow<C1,B,C> *c2,
2570 CATArrow<C1,A,B2> *d1, CATArrow<C1,B2,C> *d2)
2576class CATIntersection
2579 virtual CatArrow<C1,A,B> *
Intersect(CATArrow<C1,A,B> *a1, CATArrow<C1,A,B> *a2)
const=0;
2582class CATIntersectionArrow :
public CATArrow<C1,A,B>
2585 CATIntersectionArrow(CATArrow<C1,A,B> *a1, CATArrow<C1,A,B> *a2) : a1(a1), a2(a2) : a1(a1), a2(a2)
2589 virtual B Func(A a)
const
2593 virtual C1<std::vector<A> > BackwardFunc(C1<B> cont)
const
2597 CATArrow<C1,A,B> *a1;
2598 CATArrow<C1,A,B> *a2;
2605template<
template<>
class Container,
class A,
class B,
class C>
2606class CATIntersection :
public CATCombinePair<Container, Container, Container, A,B,C>,
private CATArrow<Container, C,bool>
2609 CATIntersection(
bool (*fptrA)(A),
bool (*fptrB)(B),
2610 CATArrow<Container, A, C> &fA,
2611 CATArrow<Container, B,C> &fB,
2612 CATSingleElemPair<Container, C> &singleelem,
2613 CATChooseElem<Container,C,int> &choose,
2614 CATCount<Container, bool> &count,
2615 CATChooseElem<Container,A,int> &chooseA,
2616 CATChooseElem<Container,B,int> &chooseB,
2617 CATCount<Container,A> &countA,
2618 CATCount<Container,B> &countB)
2620 fptrA(fptrA), fptrB(fptrB), fA(fA), fB(fB), singleelem(singleelem), choose(choose),
2621 count(
count), chooseA(chooseA), chooseB(chooseB), countA(countA), countB(countB)
2623 virtual std::pair<Container<A>, Container<B> > Separate(Container<C> c)
const=0;
2624 virtual Container<C> Combine(std::pair<Container<A>, Container<B> > p)
const
2626 Container<A> cA = p.first;
2627 countA.SetContainer(cA);
2628 int na = countA.NumItems();
2630 for(
int i1=0;i1<na;i1++)
2632 A a1 = chooseA.ChooseElem(cA, i1);
2639 Container<B> cB = p.second;
2640 countB.SetContainer(cB);
2641 int nb = countB.NumItems();
2642 for(
int i2=0;i2<nb;i2++)
2644 A a2 = chooseA.ChooseElem(cA, i2);
2651 virtual bool Func(C c)
const
2653 Container<C> cc = singleelem.SingleElem(c);
2654 Container<A> a = fA.BackwardFunc(cc);
2655 Container<B> b = fB.BackwardFunc(cc);
2656 countA.SetContainer(a);
2657 int na = countA.NumItems();
2659 for(
int i1=0;i1<na;i1++)
2661 A a1 = chooseA.ChooseElem(a,i1);
2662 bool aa = fptrA(a1);
2665 countB.SetContainer(b);
2666 int nb = countB.NumItems();
2668 for(
int i2=0;i2<nb;i2++)
2670 B b1 = chooseB.ChooseElem(b,i2);
2671 bool bb = fptrB(b1);
2676 virtual Container<std::vector<C> > BackwardFunc(Container<bool> cont)
const
2678 count.SetContainer(cont);
2679 int n =
count.NumItems();
2680 for(
int i=0;i<n;i++)
2682 bool b = choose.ChooseElem(cont,i);
2691 CATArrow<Container, A,C> &fA;
2692 CATArrow<Container, B,C> &fB;
2693 CATSingleElemPair<Container,C> &singleelem;
2694 CATChooseElem<Container,C,int> &choose;
2695 CATCount<Container> &
count;
2696 CATChooseElem<COntainer,A,int> &chooseA;
2697 CATChooseElem<Container,B,int> &chooseB;
2698 CATCount<Container> &countA;
2699 CATCount<Container> &countB;
2703template<
class Container,
class T>
2704class CATVector :
public CATChooseElem<Container, T, int>,
public CATCount<Container, T>
2707 CATVector(std::vector<T> &vec) : vec(vec) { }
2708 virtual T ChooseElem(Container<T> cont,
int elem)
const
2714 virtual void SetContainer(Container<T> &cont) { }
2715 virtual int NumItems()
const {
return vec.count(); }
2719 std::vector<T> &vec;
2722template<
class Container,
class T>
2726 CATVector2(std::vector<T> &vec) : vec(vec) { }
2729 std::vector<T> &vec;
2737template<
class T,
class A,
class B,
class K>
2738class Intersection3 :
public Function<T,std::pair<K,K> >
2742 Intersection3(Function<T,A> &ta,
2745 Function<B,K> &bk) : ta(ta), tb(tb), ak(ak), bk(bk) { }
2751 k1 = ak.Index(ta.Index(t));
2752 k2 = bk.Index(tb.Index(t));
2753 return std::make_pair(k1,k2);
2763template<
class P,
class A,
class B,
class K>
2764class pullback3 :
public Intersection3<std::pair<P,K>, std::pair<P,K>, std::pair<P,K>, std::pair<P,K> >
2768class SphereIntersectionTexture :
public Bitmap<bool>
2771 SphereIntersectionTexture(Point center1,
float radius1,
2772 Point center2,
float radius2,
2773 int sx,
int sy) : center1(center1), radius1(radius1),
2774 center2(center2), radius2(radius2)
2776 virtual int SizeX()
const {
return sx; }
2777 virtual int SizeY()
const {
return sy; }
2778 virtual bool Map(
int x,
int y)
const
2780 float xx = float(x)/float(sx);
2781 float yy = float(y)/float(sy);
2782 SphericalPoint point(center1);
2784 point.alfa = xx*2.0*3.14159;
2785 point.beta = yy*2.0*3.14159;
2786 Point pos = point.ToPoint();
2788 float d = Vector(pos).
Dist();
2795class Occupied :
public Function<A, bool>
2798 virtual B
f(A a)
const=0;
2799 virtual B
g(A a)
const=0;
2800 bool Index(A x)
const {
return f(x)==
g(x); }
2804template<
class T,
class C>
2805class PullbackMinus :
public Function<T,C>
2808 PullbackMinus(Function<T,C> &c1, Function<T,C> &c2) : c1(c1),c2(c2)
2811 C
Index(T t)
const {
return c1.Index(t)-c2.Index(t); }
2820template<
class T,
class A,
class B,
class C>
2824 Pullback(Function<A,C> &f1, Function<B,C> &f2,
2825 Function<T,A> &p1, Function<T,B> &p2) : f1(f1), f2(f2),p1(p1),p2(p2), compose1(p1,f1), compose2(p2,f2),
minus(compose1, compose2) { }
2826 T
Solve(T t_0, T t_1,
bool &success)
const
2830 if (success)
return val;
2839 FunctionCompose<T,A,C> compose1;
2840 FunctionCompose<T,B,C> compose2;
2841 PullbackMinus<T,C>
minus;
2848 float Index(Point p)
const { p-=center;
return sqrt(p.
x*p.
x+p.
y*p.
y+p.
z*p.
z); }
2856 float Index(
void)
const {
return val; }
2858class PointIdentity :
public Function<float,Point>
2861 PointIdentity(Point p1, Vector v) : p1(p1), v(v) { }
2862 Point
Index(
float p)
const {
return p1+v*p; }
2867class PointExclam :
public Function<Point, void>
2870 void Index(Point p)
const { }
2872class SpherePullback :
public Pullback<float, Point, void, float>
2875 SpherePullback(Point ray_p1, Vector ray_v, Point center,
float val) : Pullback<float,Point,void,float>(dist, cx, id, exc), dist(center), id(ray_p1,ray_v), cx(val) { }
2876 float Solve(
float p1,
float p2,
bool &success)
const
2878 return Pullback<float,Point,void,float>::Solve(p1,p2,success);
2882 ConstantFunction cx;
2887class BlobPullback :
public Pullback<float, Point, Point, float>
2893 PointIdentity ray1, ray2;
2901class VolumeToSurface :
public Function<Point2d, float>
2904 VolumeToSurface(Function<Point2d, Point> &surface,
2905 Function<Point, T> &
object) : surface(surface),
object(
object)
2908 float Index(Point2d p)
const
2910 return object.Index(surface.Index(p));
2913 Function<Point2d, Point> &surface;
2914 Function<Point,T> &
object;
2917class XYPlane :
public Function<Point2d, Point>
2920 XYPlane(
float z) : z(z) { }
2921 Point
Index(Point2d p)
const {
return Point(p.
x,p.
y,z); }
2936struct RadiusPointCalc
2938 Vector pos(Point p)
const
2943 Point2d p2d = { pl.CoordsX(p), pl.CoordsY(p) };
2944 Point2d p2d2 = { pl.CoordsX(p1), pl.CoordsY(p1) };
2945 Point2d p2d3 = { pl.CoordsX(p2), pl.CoordsY(p2) };
2947 Vector2d v2 = p2d2-p2d;
2948 Vector2d v3 = p2d3-p2d;
2952 Point2d intersectpoint = intersect.IntersectionPoint();
2953 Point px = pl.Navigate(intersectpoint);
2960class IntersectableCurve2d
2963 virtual Point2d Curve(
float val)
const=0;
2964 virtual float Dist(Point2d p)
const=0;
2966void Intersection(IntersectableCurve &c1, IntersectableCurve &c2)
2972class ConstantMinus :
public Function<float,float>
2975 ConstantMinus(Function<float,float> &
f,
float c) :
f(
f), c(c) { }
2976 float Index(
float x)
const
2978 return f.Index(x)-c;
2981 Function<float,float> &
f;
2989 Pullback_c(Function<float,float> &f1, Function<float,float> &
f2,
float b) :
f(
f),
g(
g), b(b), cons1(
f,b), cons2(
g,b) { }
2990 std::pair<float,float> solve(
float s1,
float s2)
const
2992 float val =
Solve(cons1, s1, s2);
2993 float val2 =
Solve(cons2, s1, s2);
2994 return std::make_pair(val, val2);
2997 Function<float,float> &
f;
2998 Function<float,float> &
g;
3000 ConstantMinus cons1;
3001 ConstantMinus cons2;
3004template<
class A,
class B>
3005class Pullback_int_d :
public Function<std::pair<A,B>, bool>
3008 Pullback_d(Function<A,int> &
f, Function<B,int> &g) :
f(
f),
g(
g) { }
3009 bool Index(std::pair<A,B> &p)
const
3011 int c =
f.Index(p.first);
3012 int c2 =
g.Index(p.second);
3020template<
class A,
class B,
class C>
3021class Pullback_d :
public Function<std::pair<A,B>, bool>
3024 Pullback_d(Function<A,C> &
f, Function<B,C> &g) :
f(
f),
g(
g) { }
3025 bool Index(std::pair<A,B> &p)
const
3027 C c =
f.Index(p.first);
3028 C c2 =
g.Index(p.second);
3036template<
class T,
class A,
class B,
class C>
3037class Pullback_full :
public Function<T,std::pair<A,B> >,
public Function<std::pair<A,B>, bool>
3040 Pullback_full(Function<T,A> &ta,
3049 std::pair<A,B>
Index(T t)
const
3053 return std::make_pair(a,b);
3055 bool Index(std::pair<A,B> p)
const
3057 return ac.Index(p.first)==bc.Index(p.second);
3067template<
class X,
class Y>
3068class Exists :
public Function<Function<std::pair<X,Y>,bool>*,Function<X,bool>* >,
private Function<X,bool>
3071 Exists(std::vector<Y> &vec) : vec(vec) { }
3072 Function<X,bool> *Index(Function<std::pair<X,Y>,
bool> &f)
3075 return const_cast<Exists*
>(
this);
3077 bool Index(X x)
const
3081 for(
int i=0;i<s;i++)
3083 bool b = ff->Index(std::make_pair(x, vec[i]));
3089 Function<std::pair<X,Y>,
bool> *ff;
3090 std::vector<Y> &vec;
3093template<
class I,
class A,
class B>
3097 virtual std::pair<A,B> FindMap(I i)
const=0;
3100template<
class I,
class I1,
class I2,
class T,
class A,
class B,
class V>
3101class InverseImageOnArrows :
public Arrow<I,T,A>
3104 InverseImage(Arrow<I1,V,B> &
part, Arrow<I2,A,B> &
f) :
part(
part),
f(
f) { }
3105 virtual std::pair<T,A> FindMap(I i)
const
3109 std::pair<V,B> p1 =
part.FindMap(i1);
3110 std::pair<A,B> p2 =
f.FindMap(i2);
3111 if (p1.second == p2.second)
3115 return std::make_pair(t,a);
3119 return std::make_pair(T(),A());
3124 Arrow<I1,V,B> &
part;
3136 int Map(
int x,
int y)
const {
return x*y; }
3143 float Map(
float x,
float y)
const {
return x*y; }
3169 bool vecempty = vec.size()==0;
3176 bool b = bool_property(vec[i]);
P func(int c, EveryApi &ev)
Definition test.cpp:59
Env e
Definition Common.cc:2
float Solve(const Function< float, float > &func, float t_0, float t_1)
Definition Effect.cc:1836
FunctionImpl0< VectorCollection *, FloatArray *, Distance > DistanceFunction
Definition Effect.hh:3075
Color ColorCombine(Color c1, Color c2, float val)
Definition Equalizer.cc:2
float FindMinMaxPoint(Function< float, float > &f, float x)
Definition Equalizer.hh:1765
Vector Reflect(Point ray_pos, Vector ray_dir, Point hit_pos, Vector normal)
Definition Equalizer.cc:3
ExprType
Definition Equalizer.hh:1781
@ EPow2
Definition Equalizer.hh:1786
@ EY
Definition Equalizer.hh:1783
@ EPlus
Definition Equalizer.hh:1785
@ ENum
Definition Equalizer.hh:1784
@ EPow3
Definition Equalizer.hh:1787
@ EMul
Definition Equalizer.hh:1788
@ EX
Definition Equalizer.hh:1782
float FindRoot(Function< float, float > &f, float x)
Definition Equalizer.hh:1756
ObjectProperties ToObj(SphereProperties &sp)
Definition Equalizer.cc:9
Point2d SolveWithFailure(const Function< Point2d, float > &func, Point2d tl, Point2d br, bool &error)
GameApi::ML part(GameApi::EveryApi &ev, GameApi::ML ml, float x_trans, float y_rot, int x, int y, int mode=0)
Definition GameApi.cc:38016
Complex ln(Complex z)
Definition GameApi_pl.cc:31431
Complex minus(Complex x, Complex y)
Definition GameApi_pl.cc:31437
Point IntersectionPoint(LinePlaneIntersection &c, Point line_p1, Point line_p2)
Definition Intersect.cc:30
Power< subset< P > * > * Intersect(Power< T > *left_p, Power< K > *right_p)
void use(T)
Definition boxed_cast_test.cpp:8
void error(std::string err, std::string fail_reason)
Definition check.cc:18
AFunction(Function2< float, float, float > &f, float y)
Definition Equalizer.hh:2175
float Index(float x) const
Definition Equalizer.hh:2176
Definition compiled_tests.cpp:1189
Definition Equalizer.hh:1307
float Index(Point2d p) const
Definition Equalizer.hh:1309
float Index(float y) const
Definition Equalizer.hh:2189
BFunction(Function2< float, float, float > &f, float x)
Definition Equalizer.hh:2188
Definition compiled_tests.cpp:1200
bool Index(T t) const
Definition Equalizer.hh:1424
BitmapInverseImage(Bitmap< bool > &bm, Function< T, Pos > &f)
Definition Equalizer.hh:1423
Definition Equalizer.hh:1408
BitmapPowerSet(Bitmap< bool > &bm)
Definition Equalizer.hh:1410
bool Index(Pos p) const
Definition Equalizer.hh:1411
virtual int SizeY() const =0
virtual int SizeX() const =0
virtual C Map(int x, int y) const =0
Definition Equalizer.hh:720
bool Index(T a_) const
Definition Equalizer.hh:723
ChooseElem(T a)
Definition Equalizer.hh:722
ChooseX2d(Function< float, Point2d > &f)
Definition Equalizer.hh:1740
float Index(float x) const
Definition Equalizer.hh:1741
float Index(float x) const
Definition Equalizer.hh:1750
ChooseY2d(Function< float, Point2d > &f)
Definition Equalizer.hh:1749
virtual void Collect(CollectVisitor &vis)=0
Definition GameApi.cc:43596
virtual void HeavyPrepare()=0
Definition VectorTools.hh:380
int r
Definition VectorTools.hh:744
int g
Definition VectorTools.hh:744
int b
Definition VectorTools.hh:744
CombineFunctions(Function< A, B > &f, Function< A, B > &g)
Definition Equalizer.hh:669
std::pair< B, B > Index(A a) const
Definition Equalizer.hh:670
Definition Equalizer.hh:245
virtual bool Comp(T t1, T t2) const =0
Color Map(int x, int y) const
Definition Equalizer.hh:810
int SizeX() const
Definition Equalizer.hh:808
int SizeY() const
Definition Equalizer.hh:809
ConstantBitmap2(int sx, int sy, int r, int g, int b)
Definition Equalizer.hh:807
ConstantFloatSpace(float val)
Definition Equalizer.hh:1929
float Get(Point p) const
Definition Equalizer.hh:1930
Definition Equalizer.hh:1655
ConstantFunction(float val)
Definition Equalizer.hh:1657
float Index(float x) const
Definition Equalizer.hh:1658
Definition Containment.hh:34
bool Index(T t) const
Definition Equalizer.hh:1451
ContinuousBitmapInverseImage(ContinuousBitmap< bool > &bm, Function< T, Point2d > &f)
Definition Equalizer.hh:1450
Definition Equalizer.hh:1435
ContinuousBitmapPowerSet(ContinuousBitmap< bool > &bm)
Definition Equalizer.hh:1437
bool Index(Point2d p) const
Definition Equalizer.hh:1438
Definition GraphI.hh:1164
virtual float SizeY() const =0
virtual C Map(float x, float y) const =0
virtual float SizeX() const =0
Definition GraphI.hh:1188
Definition Equalizer.hh:9
DerivateFunction(Function< float, float > &f, float delta)
Definition Equalizer.hh:11
float Index(float x) const
Definition Equalizer.hh:12
Diagonal(Function< T, K > &f)
Definition Equalizer.hh:2140
std::pair< K, K > Index(T t) const
Definition Equalizer.hh:2141
Definition Equalizer.hh:1211
float Index(Point2d p) const
Definition Equalizer.hh:1213
Distance2dPullback(Function< A, Point2d > &f1, Function< B, Point2d > &f2, Function< P, A > &p1, Function< P, B > &p2, Function< FloatPair, P > &t, FloatPair t_0, FloatPair t_1)
Definition Equalizer.hh:1109
Distance3dPullback(Function< A, Point > &f1, Function< B, Point > &f2, Function< P, A > &p1, Function< P, B > &p2, Function< FloatPoint, P > &t, FloatPoint t_0, FloatPoint t_1)
Definition Equalizer.hh:1124
Definition Equalizer.hh:1220
float Index(Point p) const
Definition Equalizer.hh:1222
virtual float Get(Point p) const
Definition Equalizer.hh:1902
DistanceFloatSpace(Point center)
Definition Equalizer.hh:1901
bool Index(float x) const
Definition Equalizer.hh:592
DistanceFloat(float p, float delta)
Definition Equalizer.hh:591
DistancePoint2d(Point2d p, float r)
Definition Equalizer.hh:603
bool Index(Point2d x) const
Definition Equalizer.hh:604
DistancePullback(Function< A, Point > &f1, Function< B, Point > &f2, Function< P, A > &p1, Function< P, B > &p2, Function< FloatPair, P > &t, FloatPair t_0, FloatPair t_1)
Definition Equalizer.hh:1094
DowngradeFloatSpace(FloatSpace &orig, VolumeObject &v, float value)
Definition Equalizer.hh:1959
float Get(Point p) const
Definition Equalizer.hh:1960
Definition Equalizer.hh:384
A Index(Singleton s) const
Definition Equalizer.hh:387
ElementSingleton(A a)
Definition Equalizer.hh:386
Expr & k
Definition Equalizer.hh:1869
Eq(Expr &t, Expr &k)
Definition Equalizer.hh:1867
Expr & t
Definition Equalizer.hh:1868
Definition Equalizer.hh:615
PowerSet< E > * Index(PowerSet< B > *b) const
Definition Equalizer.hh:618
Equalizer2(Function< A, B > &f1, Function< A, B > &f2, Function< E, A > &e)
Definition Equalizer.hh:617
Equalizer3(Function< A, B > &f1, Function< A, B > &f2)
Definition Equalizer.hh:732
bool Index(std::pair< A, B > &ab) const
Definition Equalizer.hh:733
Equalizer(Compare< B > &comp, Function< A, B > &f1, Function< A, B > &f2)
Definition Equalizer.hh:577
bool Index(A a) const
Definition Equalizer.hh:578
EquivalenceRelation(Compare< C > &comp, Function< A, C > &f)
Definition Equalizer.hh:1192
bool Index(std::pair< A, A > p) const
Definition Equalizer.hh:1193
Definition Equalizer.hh:227
V Element() const
Definition Equalizer.hh:230
Exists(Forall< U > &fa, Function< U, V > &f)
Definition Equalizer.hh:229
Definition Equalizer.hh:1792
virtual int ChildCount() const =0
virtual int Type() const =0
virtual Expr * Child(int i) const =0
Definition Equalizer.hh:411
InverseImageSquare< U, X, Singleton, Y >::Req Req
Definition Equalizer.hh:413
InverseImageSquare< U, X, Singleton, Y >::ResImpl ResImpl
Definition Equalizer.hh:415
InverseImageSquare< U, X, Singleton, Y >::Res Res
Definition Equalizer.hh:414
bool Index(PowerSet< A > *mem) const
Definition Equalizer.hh:397
Fiber(A a)
Definition Equalizer.hh:396
Definition Equalizer.hh:1202
bool Comp(float t1, float t2) const
Definition Equalizer.hh:1204
Definition Equalizer.hh:957
FloatFunction(Function< FloatPair, float > &f)
Definition Equalizer.hh:959
float Index(Point2d x) const
Definition Equalizer.hh:960
Definition Equalizer.hh:983
FloatFunction(const Function< FloatPoint, float > &f)
Definition Equalizer.hh:985
float Index(Point x) const
Definition Equalizer.hh:986
bool Success() const
Definition Equalizer.hh:1030
P get_P() const
Definition Equalizer.hh:1031
std::pair< C, C > get_pair() const
Definition Equalizer.hh:1034
FloatPullbackGeneric(Function< A, C > &f1, Function< B, C > &f2, Function< P, A > &p1, Function< P, B > &p2, Function< T, P > &t, Function< std::pair< C, C >, float > &pb_minus, T t_0, T t_1)
Definition Equalizer.hh:1017
T Elem() const
Definition Equalizer.hh:1025
B get_B() const
Definition Equalizer.hh:1033
A get_A() const
Definition Equalizer.hh:1032
FloatPullback(Function< A, float > &f1, Function< B, float > &f2, Function< P, A > &p1, Function< P, B > &p2, Function< float, P > &t, float t_0, float t_1)
Definition Equalizer.hh:1056
float Index(Point p) const
Definition Equalizer.hh:1887
FloatSpaceFunction(FloatSpace &sp)
Definition Equalizer.hh:1886
FloatSpaceY(float start_y, float end_y)
Definition Equalizer.hh:1914
virtual float Get(Point p) const
Definition Equalizer.hh:1915
Definition Equalizer.hh:1877
virtual float Get(Point p) const =0
float Index(Point p) const
Definition Equalizer.hh:1879
Definition Equalizer.hh:932
FloatFunction(Function< Float, float > &f)
Definition Equalizer.hh:934
float Index(float x) const
Definition Equalizer.hh:935
Definition Equalizer.hh:3150
ForAllExists forallexists_detection(bool(*bool_property)(A a), std::vector< A > vec, int &pos)
Definition Equalizer.hh:3166
State
Definition Equalizer.hh:3153
@ ETrue
Definition Equalizer.hh:3154
@ EUnknownButProbablyTrue
Definition Equalizer.hh:3157
@ EUnknownButProbablyFalse
Definition Equalizer.hh:3158
@ EUnknown
Definition Equalizer.hh:3156
@ EFalse
Definition Equalizer.hh:3155
Definition Equalizer.hh:220
virtual T Element() const =0
Definition Equalizer.hh:1141
T Index(std::pair< T, K > p) const
Definition Equalizer.hh:1143
C Index(const std::pair< A, B > &p)
Definition Effect.hh:522
FunctionCall(Function< A, T > &f, A a)
Definition Equalizer.hh:1383
T Elem() const
Definition Equalizer.hh:1384
FloatArray * Index(VectorCollection *a) const
Definition Effect.hh:417
virtual B Index(A a) const =0
Vector Index(Point p) const
Definition Equalizer.hh:124
Gradient3d(Function< Point, float > &f)
Definition Equalizer.hh:123
int SizeY() const
Definition Equalizer.hh:1612
int SizeX() const
Definition Equalizer.hh:1611
GradientWithHole(int sx, int sy, Point2d p1, Point2d p2, Color c1, Color c2, PointCollection2d &points)
Definition Equalizer.hh:1604
Color Map(int x, int y) const
Definition Equalizer.hh:1613
void Prepare()
Definition Equalizer.hh:1609
Vector2d Index(Point2d p) const
Definition Equalizer.hh:105
Gradient(Function< Point2d, float > &f)
Definition Equalizer.hh:104
Definition Effect.hh:7706
ImageBools(Bitmap< Color > &bm)
Definition Equalizer.hh:443
bool Index(Pixel p) const
Definition Equalizer.hh:445
int Index(ImgSelect p) const
Definition Equalizer.hh:757
ImageFunction(Bitmap< Color > &bm)
Definition Equalizer.hh:756
IntegrationFunction(const Function< float, float > &f, float delta, float startx, float endx, float C)
Definition Equalizer.hh:164
float Delta(float x) const
Definition Equalizer.hh:178
float Index(float x) const
Definition Equalizer.hh:165
PowerSet< T > * Index(PowerSet< B > *b) const
Definition Equalizer.hh:496
Intersection2(Function< A, B > &f1, Function< C, B > &f2, Function< T, A > &m1, Function< T, C > &m2)
Definition Equalizer.hh:495
bool Index(A a) const
Definition Equalizer.hh:535
IntersectionArray(Array< int, PowerSet< A > * > &arr)
Definition Equalizer.hh:534
Definition Equalizer.hh:478
bool Index(A a) const
Definition Equalizer.hh:481
Intersection(PowerSet< A > &m, PowerSet< A > &m2)
Definition Equalizer.hh:480
std::vector< A > Index(A a) const
Definition Equalizer.hh:655
InverseEqualizer(Function< A, B > &f, InvertableFunction< A, B > &g)
Definition Equalizer.hh:654
K Index(T t) const
Definition Equalizer.hh:201
std::vector< T > Inverse(K k) const
Definition Equalizer.hh:202
InverseFunctionCompose(InvertableFunction< T, U > &f, InvertableFunction< U, K > &g)
Definition Equalizer.hh:200
InverseImage2(Function< A, B > &f)
Definition Equalizer.hh:459
Function< A, Omega > * Index(Function< B, Omega > *b) const
Definition Equalizer.hh:460
InverseImageA(Function< X, Y > &f, Function< Y, bool > &a)
Definition Equalizer.hh:289
bool Index(X x) const
Definition Equalizer.hh:290
X Index(U u) const
Definition Equalizer.hh:293
Function< A, Omega > * Index(Function< B, Omega > *b) const
Definition Equalizer.hh:327
InverseImageF(Function< A, B > &f)
Definition Equalizer.hh:326
X Index(U u) const
Definition Equalizer.hh:277
InverseImageK(Function< X, Y > &f)
Definition Equalizer.hh:272
Function< U, X > * Index(Function< V, Y > *vy) const
Definition Equalizer.hh:273
Definition Equalizer.hh:352
virtual Y f(X x) const =0
virtual Y j(V v) const =0
virtual X i(U u) const =0
Definition Equalizer.hh:367
bool v(V v) const
Definition Equalizer.hh:371
bool x(X x) const
Definition Equalizer.hh:372
ResImpl(PowerSet< Y > &mem, Req &r)
Definition Equalizer.hh:369
bool u(U u) const
Definition Equalizer.hh:370
bool y(Y y) const
Definition Equalizer.hh:373
Definition Equalizer.hh:359
virtual bool x(X x) const =0
virtual bool y(Y y) const =0
virtual bool u(U u) const =0
virtual bool v(V v) const =0
Definition Equalizer.hh:349
bool Index(Point2d p) const
Definition Equalizer.hh:1397
InverseImageSubset2d(Function< Point2d, float > &f, PowerSet< float > &m)
Definition Equalizer.hh:1396
Definition Equalizer.hh:303
PowerSet< A > * Index(PowerSet< B > *b) const
Definition Equalizer.hh:306
InverseImage(Function< A, B > &f)
Definition Equalizer.hh:305
Definition Equalizer.hh:704
InversePullback(Function< A, C > &ac, InvertableFunction< B, C > &bc)
Definition Equalizer.hh:706
B Index(A a) const
Definition Equalizer.hh:707
LineIn2dScanLine(Point2d p1, Point2d p2, float y)
Definition Equalizer.hh:1465
bool Index(float x) const
Definition Equalizer.hh:1466
MaxFloatSpace(FloatSpace &s1, FloatSpace &s2)
Definition Equalizer.hh:2033
float Get(Point p) const
Definition Equalizer.hh:2034
float Get(Point p, float time) const
Definition Equalizer.hh:2060
MaxTimedFloatSpace(TimedFloatSpace &s1, TimedFloatSpace &s2)
Definition Equalizer.hh:2059
float Get(Point p) const
Definition Equalizer.hh:2021
MinFloatSpace(FloatSpace &s1, FloatSpace &s2)
Definition Equalizer.hh:2020
float Get(Point p, float time) const
Definition Equalizer.hh:2047
MinTimedFloatSpace(TimedFloatSpace &s1, TimedFloatSpace &s2)
Definition Equalizer.hh:2046
Definition Equalizer.hh:1631
MinusFunction(Function< A, float > &f, Function< A, float > &g)
Definition Equalizer.hh:1633
float Index(A x) const
Definition Equalizer.hh:1634
Definition Equalizer.hh:1625
virtual Expr * Child(int i) const
Definition Equalizer.hh:1857
Expr & t
Definition Equalizer.hh:1860
Expr & k
Definition Equalizer.hh:1860
virtual int ChildCount() const
Definition Equalizer.hh:1856
virtual int Type() const
Definition Equalizer.hh:1858
Mul2(Expr &t, Expr &k)
Definition Equalizer.hh:1855
Definition Equalizer.hh:3139
float SizeX() const
Definition Equalizer.hh:3141
float Map(float x, float y) const
Definition Equalizer.hh:3143
float SizeY() const
Definition Equalizer.hh:3142
Definition Equalizer.hh:3132
int SizeX() const
Definition Equalizer.hh:3134
int SizeY() const
Definition Equalizer.hh:3135
int Map(int x, int y) const
Definition Equalizer.hh:3136
float c
Definition Equalizer.hh:1821
virtual int Type() const
Definition Equalizer.hh:1819
virtual int ChildCount() const
Definition Equalizer.hh:1817
Num(float c)
Definition Equalizer.hh:1816
virtual Expr * Child(int i) const
Definition Equalizer.hh:1818
OneMinusFloatSpace(FloatSpace &s1)
Definition Equalizer.hh:2072
float Get(Point p) const
Definition Equalizer.hh:2073
OneMinusTimedFloatSpace(TimedFloatSpace &s1)
Definition Equalizer.hh:2084
float Get(Point p, float time) const
Definition Equalizer.hh:2085
Definition Equalizer.hh:2199
float Index(Point2d p) const
Definition Equalizer.hh:2201
Definition Equalizer.hh:2208
float Index(Point2d p) const
Definition Equalizer.hh:2210
Definition Equalizer.hh:26
PartialFunction2_1(Function< Point2d, float > &f, float y_)
Definition Equalizer.hh:28
float Index(float x) const
Definition Equalizer.hh:29
Definition Equalizer.hh:40
float Index(float y) const
Definition Equalizer.hh:43
PartialFunction2_2(Function< Point2d, float > &f, float x_)
Definition Equalizer.hh:42
Definition Equalizer.hh:54
float Index(float x) const
Definition Equalizer.hh:57
PartialFunction3_1(Function< Point, float > &f, float y_, float z_)
Definition Equalizer.hh:56
Definition Equalizer.hh:69
float Index(float y) const
Definition Equalizer.hh:72
PartialFunction3_2(Function< Point, float > &f, float x_, float z_)
Definition Equalizer.hh:71
Definition Equalizer.hh:84
float Index(float z) const
Definition Equalizer.hh:87
PartialFunction3_3(Function< Point, float > &f, float x_, float y_)
Definition Equalizer.hh:86
Definition Equalizer.hh:922
float Index(std::pair< float, float > p) const
Definition Equalizer.hh:924
@ EMove
Definition Graph.hh:8321
virtual int Type() const
Definition Equalizer.hh:1829
Expr & k
Definition Equalizer.hh:1832
Plus2(Expr &t, Expr &k)
Definition Equalizer.hh:1826
Expr & t
Definition Equalizer.hh:1831
virtual Expr * Child(int i) const
Definition Equalizer.hh:1828
virtual int ChildCount() const
Definition Equalizer.hh:1827
Definition Equalizer.hh:2284
float Index(std::pair< Point2d, Point2d > p) const
Definition Equalizer.hh:2286
Point2dFunction(Function< std::pair< float, float >, float > &f)
Definition Equalizer.hh:147
float Index(Point2d p) const
Definition Equalizer.hh:148
Definition Equalizer.hh:1080
float Index(std::pair< Point2d, Point2d > p) const
Definition Equalizer.hh:1082
Definition Effect.hh:2663
PointCollectionDistance(PointCollection &coll)
Definition Equalizer.hh:1231
float Index(Point p) const
Definition Equalizer.hh:1232
Vector Index(Point p) const
Definition Equalizer.hh:1252
PointCollectionNormal(PointCollection &coll, float dist1, float dist2)
Definition Equalizer.hh:1251
Definition Effect.hh:2456
Definition Equalizer.hh:2094
virtual void SetPoint(Point p)=0
Definition Equalizer.hh:1069
float Index(std::pair< Point, Point > p) const
Definition Equalizer.hh:1071
int Size() const
Definition Equalizer.hh:1486
Line2d Index(int i) const
Definition Equalizer.hh:1505
PolygonLines(PlanePoints2d &points, int num)
Definition Equalizer.hh:1485
Expr & t
Definition Equalizer.hh:1841
virtual int Type() const
Definition Equalizer.hh:1840
virtual Expr * Child(int i) const
Definition Equalizer.hh:1839
virtual int ChildCount() const
Definition Equalizer.hh:1838
Pow2(Expr &t)
Definition Equalizer.hh:1837
virtual Expr * Child(int i) const
Definition Equalizer.hh:1848
virtual int Type() const
Definition Equalizer.hh:1849
Pow3(Expr &t)
Definition Equalizer.hh:1846
Expr & t
Definition Equalizer.hh:1850
virtual int ChildCount() const
Definition Equalizer.hh:1847
Definition Equalizer.hh:239
PowerSet< P > * Index(PowerSet< C > *c) const
Definition Equalizer.hh:864
Pullback2(Function< A, C > &f1, Function< B, C > &f2, Function< P, A > &p1, Function< P, B > &p2)
Definition Equalizer.hh:863
Pullback3(Function< A, C > &f1, Function< B, C > &f2, Function< P, A > &p1, Function< P, B > &p2, bool is_path_from_B)
Definition Equalizer.hh:886
C Index(P p) const
Definition Equalizer.hh:887
Definition Equalizer.hh:902
Pullback4I(Function< A, C > &f1, Function< B, C > &f2, Function< P, A > &p1, Function< P, B > &p2)
Definition Equalizer.hh:904
std::pair< C, C > Index(P p) const
Definition Equalizer.hh:905
InvertableFunction< C, C > * Index(P p) const
Definition Equalizer.hh:1174
Pullback4(Function< A, C > &f1, Function< B, C > &f2, Function< P, A > &p1, Function< P, B > &p2, bool is_path_from_B)
Definition Equalizer.hh:1173
Definition Equalizer.hh:844
bool Index(std::pair< A, B > p) const
Definition Equalizer.hh:848
Pullback(Compare< C > &comp, Function< A, C > &f1, Function< B, C > &f2)
Definition Equalizer.hh:846
bool Index(float x) const
Definition Equalizer.hh:1278
Range2(float start, float end)
Definition Equalizer.hh:1277
Definition Effect.hh:1305
T end
Definition Effect.hh:1310
T start
Definition Effect.hh:1309
Definition RayTracing.hh:8
std::pair< A, B > Index(A a) const
Definition Equalizer.hh:684
RealGraph(Function< A, B > &f)
Definition Equalizer.hh:683
Repeat2(PowerSet< float > &mem, float sizex)
Definition Equalizer.hh:1364
bool Index(float t) const
Definition Equalizer.hh:1365
Definition Equalizer.hh:1148
K Index(std::pair< T, K > p) const
Definition Equalizer.hh:1150
Definition Equalizer.hh:2100
Definition VolumeObjects.hh:470
Sphere(Point center, float radius)
Definition Graph.hh:8060
Definition Equalizer.hh:1664
std::vector< float > Inverse(float x) const
Definition Equalizer.hh:1667
float Index(float x) const
Definition Equalizer.hh:1666
Definition Equalizer.hh:1287
Step(float x, bool flip)
Definition Equalizer.hh:1289
bool Index(float xx) const
Definition Equalizer.hh:1290
SubImage(Function< A, bool > &obj, bool choose)
Definition Equalizer.hh:254
A Index(U t) const
Definition Equalizer.hh:259
bool Index(A t) const
Definition Equalizer.hh:255
std::vector< X > Index(std::pair< Y, Z > p) const
Definition Equalizer.hh:1715
SumXFunctionPullback2(InvertableFunction< X, float > &f, Function< std::pair< Y, Z >, float > &g, Function< std::pair< Y, Z >, float > &h)
Definition Equalizer.hh:1711
Definition Equalizer.hh:1695
SumXFunctionPullback(InvertableFunction< X, float > &f, Function< Y, float > &g, Function< Y, float > &h)
Definition Equalizer.hh:1697
std::vector< X > Index(Y x) const
Definition Equalizer.hh:1698
Definition Equalizer.hh:1578
int SizeX() const
Definition Equalizer.hh:1589
TextureWithHole(Bitmap< Color > &orig, PointCollection2d &coll)
Definition Equalizer.hh:1580
int SizeY() const
Definition Equalizer.hh:1590
void Prepare()
Definition Equalizer.hh:1587
void HeavyPrepare()
Definition Equalizer.hh:1585
void Collect(CollectVisitor &vis)
Definition Equalizer.hh:1581
Color Map(int x, int y) const
Definition Equalizer.hh:1591
Definition Equalizer.hh:1893
virtual float Get(Point p, float time) const =0
Definition VolumeObjects.hh:390
std::vector< float > Inverse(float x) const
Definition Equalizer.hh:1682
TimesConstantFunction(float c)
Definition Equalizer.hh:1680
float Index(float x) const
Definition Equalizer.hh:1681
Definition Equalizer.hh:1724
Point Index(float t) const
Definition Equalizer.hh:1727
float Size() const
Definition Equalizer.hh:1726
Union2(PowerSet< A > &m, PowerSet< A > &m2)
Definition Equalizer.hh:519
bool Index(A a) const
Definition Equalizer.hh:520
UnionArray(Array< int, PowerSet< A > * > &arr)
Definition Equalizer.hh:555
bool Index(A a) const
Definition Equalizer.hh:556
UpgradeFloatSpace(FloatSpace &orig, VolumeObject &v, float value)
Definition Equalizer.hh:1939
float Get(Point p) const
Definition Equalizer.hh:1940
float Get(Point p, float time) const
Definition Equalizer.hh:1980
UpgradeTimedFloatSpace(TimedFloatSpace &orig, TimedVolumeObject &v, float value)
Definition Equalizer.hh:1979
Definition VectorTools.hh:125
float Dist() const
Definition VectorTools.cc:141
float dy
Definition VectorTools.hh:268
float dz
Definition VectorTools.hh:268
float dx
Definition VectorTools.hh:268
Definition VolumeObjects.hh:130
Definition Equalizer.hh:1316
float Index(Point2d p) const
Definition Equalizer.hh:1318
Definition Equalizer.hh:1335
float Index(Point p) const
Definition Equalizer.hh:1337
Point2d Index(float x) const
Definition Equalizer.hh:2220
XProdFunction(float y)
Definition Equalizer.hh:2219
Definition Equalizer.hh:1800
virtual int ChildCount() const
Definition Equalizer.hh:1802
virtual Expr * Child(int i) const
Definition Equalizer.hh:1803
virtual int Type() const
Definition Equalizer.hh:1804
Definition Equalizer.hh:1325
float Index(Point2d p) const
Definition Equalizer.hh:1327
Definition Equalizer.hh:1344
float Index(Point p) const
Definition Equalizer.hh:1346
YProdFunction(float x)
Definition Equalizer.hh:2234
Point2d Index(float y) const
Definition Equalizer.hh:2235
Definition Equalizer.hh:1807
virtual int ChildCount() const
Definition Equalizer.hh:1809
virtual Expr * Child(int i) const
Definition Equalizer.hh:1810
virtual int Type() const
Definition Equalizer.hh:1811
Definition Equalizer.hh:1353
float Index(Point p) const
Definition Equalizer.hh:1355
border radius
Definition gameapi_example.php:45
P g(unsigned int c, EveryApi &ev)
Definition test.cpp:19
d
Definition meshpage.php:3895
n< br > font size
Definition meshpage.php:3536
background image
Definition meshpage_bootstrap.php:1723
Object filter(Container c, Function f)
Takes elements from Container c that match function f, return them.
size_t count(const T &t_target, const typename T::key_type &t_key)
Definition bootstrap_stl.hpp:104
std::pair< ssize_t, ssize_t > Range
Definition httplib.h:1164
@ object
object (unordered set of name/value pairs)
Definition json.hpp:1221
double f(const std::string &, double, bool) noexcept
Definition profile_cpp_calls_2.cpp:4
int f2(char c)
Definition test.cpp:51
Definition Equalizer.hh:2248
float x
Definition Equalizer.hh:2249
float y
Definition Equalizer.hh:2249
Definition Equalizer.hh:952
float y
Definition Equalizer.hh:955
FloatPair(float xx, float yy)
Definition Equalizer.hh:954
float x
Definition Equalizer.hh:955
static FloatPair SolveWithFailure(Function< FloatPair, float > &f, FloatPair t_0, FloatPair t_1, bool &error)
Definition Equalizer.hh:968
Definition Equalizer.hh:978
Point p
Definition Equalizer.hh:1005
Point get() const
Definition Equalizer.hh:981
static FloatPoint SolveWithFailure(const Function< FloatPoint, float > &f, FloatPoint t_0, FloatPoint t_1, bool &error)
Definition Equalizer.hh:995
FloatPoint(Point p)
Definition Equalizer.hh:980
Definition Equalizer.hh:928
Float(float v)
Definition Equalizer.hh:929
static Float SolveWithFailure(Function< Float, float > &f, Float t_0, Float t_1, bool &error)
Definition Equalizer.hh:943
float value
Definition Equalizer.hh:930
Definition Equalizer.hh:3162
State forall
Definition Equalizer.hh:3164
State exists
Definition Equalizer.hh:3163
Definition Equalizer.hh:747
int color_component
Definition Equalizer.hh:750
int x
Definition Equalizer.hh:748
int y
Definition Equalizer.hh:749
Definition FreeType2.cc:432
Point2d p1
Definition Graph.hh:5781
Point2d p2
Definition Graph.hh:5781
Definition Equalizer.hh:2107
ContinuousVoxel< float > * refletivity
Definition Equalizer.hh:2113
VolumeObject * surfacepoints
Definition Equalizer.hh:2110
ContinuousVoxel< Color > * color
Definition Equalizer.hh:2112
VolumeObject * volume
Definition Equalizer.hh:2109
ContinuousVoxel< Vector > * normals
Definition Equalizer.hh:2111
Definition Equalizer.hh:424
int x
Definition Equalizer.hh:426
int y
Definition Equalizer.hh:426
int g
Definition Equalizer.hh:427
int r
Definition Equalizer.hh:427
int b
Definition Equalizer.hh:427
Definition VectorTools.hh:910
float x
Definition VectorTools.hh:911
float y
Definition VectorTools.hh:911
float x
Definition Parser.cc:60
float Dist() const
Definition VectorTools.cc:150
float y
Definition Parser.cc:60
float z
Definition Parser.cc:60
int x
Definition test.cpp:10
int y
Definition test.cpp:10
Definition Equalizer.hh:343
static const Singleton & get()
Definition Equalizer.hh:344
Definition Equalizer.hh:2121
SphereVolume * volume
Definition Equalizer.hh:2129
SphereProperties(Point center, float radius, float gap)
Definition Equalizer.hh:2123
Definition Equalizer.hh:419
float radius
Definition Equalizer.hh:421
Color center
Definition Equalizer.hh:420
Definition VectorTools.hh:972
float dy
Definition VectorTools.hh:973
float dx
Definition VectorTools.hh:973
num
Definition view.php:2821