1 /**
2 * Mandelbulber v2, a 3D fractal generator _%}}i*<. ______
3 * Copyright (C) 2020 Mandelbulber Team _>]|=||i=i<, / ____/ __ __
4 * \><||i|=>>%) / / __/ /___/ /_
5 * This file is part of Mandelbulber. )<=i=]=|=i<> / /__ /_ __/_ __/
6 * The project is licensed under GPLv3, -<>>=|><|||` \____/ /_/ /_/
7 * see also COPYING file in this folder. ~+{i%+++
8 *
9 * abs Multi - Multiple parameters for abs functions
10 */
11
12 #include "all_fractal_definitions.h"
13
cFractalTransfAbsAddMulti()14 cFractalTransfAbsAddMulti::cFractalTransfAbsAddMulti() : cAbstractFractal()
15 {
16 nameInComboBox = "T>Abs Add Multi";
17 internalName = "transf_abs_add_multi";
18 internalID = fractal::transfAbsAddMulti;
19 DEType = analyticDEType;
20 DEFunctionType = withoutDEFunction;
21 cpixelAddition = cpixelDisabledByDefault;
22 defaultBailout = 100.0;
23 DEAnalyticFunction = analyticFunctionNone;
24 coloringFunction = coloringFunctionDefault;
25 }
26
FormulaCode(CVector4 & z,const sFractal * fractal,sExtendedAux & aux)27 void cFractalTransfAbsAddMulti::FormulaCode(CVector4 &z, const sFractal *fractal, sExtendedAux &aux)
28 {
29 Q_UNUSED(aux);
30
31 CVector4 tempA = CVector4(0.0, 0.0, 0.0, 0.0);
32 CVector4 tempB = CVector4(0.0, 0.0, 0.0, 0.0);
33
34 if (fractal->transformCommon.functionEnabledAx)
35 tempA.x = fabs(z.x + fractal->transformCommon.additionConstant000.x);
36
37 if (fractal->transformCommon.functionEnabledx)
38 tempB.x = fabs(z.x - fractal->transformCommon.offset000.x);
39
40 z.x = tempA.x - tempB.x - (z.x * fractal->transformCommon.scale3D111.x);
41
42 if (fractal->transformCommon.functionEnabledAy)
43 tempA.y = fabs(z.y + fractal->transformCommon.additionConstant000.y);
44
45 if (fractal->transformCommon.functionEnabledy)
46 tempB.y = fabs(z.y - fractal->transformCommon.offset000.y);
47
48 z.y = tempA.y - tempB.y - (z.y * fractal->transformCommon.scale3D111.y);
49
50 if (fractal->transformCommon.functionEnabledAz)
51 tempA.z = fabs(z.z + fractal->transformCommon.additionConstant000.z);
52
53 if (fractal->transformCommon.functionEnabledz)
54 tempB.z = fabs(z.z - fractal->transformCommon.offset000.z);
55
56 z.z = tempA.z - tempB.z - (z.z * fractal->transformCommon.scale3D111.z);
57
58 z += fractal->transformCommon.offsetA000;
59
60 if (fractal->analyticDE.enabledFalse)
61 aux.DE = aux.DE * fractal->analyticDE.scale1 + fractal->analyticDE.offset0;
62 }
63