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  * Adds c constant to z vector. C addition constant varies based on iteration parameters.
10  */
11 
12 #include "all_fractal_definitions.h"
13 
cFractalTransfAddConstantVaryV1()14 cFractalTransfAddConstantVaryV1::cFractalTransfAddConstantVaryV1() : cAbstractFractal()
15 {
16 	nameInComboBox = "T>Add Constant VaryV1";
17 	internalName = "transf_add_constant_vary_v1";
18 	internalID = fractal::transfAddConstantVaryV1;
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 cFractalTransfAddConstantVaryV1::FormulaCode(
28 	CVector4 &z, const sFractal *fractal, sExtendedAux &aux)
29 {
30 	CVector4 tempVC = fractal->transformCommon.additionConstant000; // constant to be varied
31 	if (aux.i < fractal->transformCommon.startIterations250)
32 	{
33 		;
34 	}
35 	if (aux.i >= fractal->transformCommon.startIterations250
36 			&& aux.i < fractal->transformCommon.stopIterations
37 			&& (fractal->transformCommon.stopIterations - fractal->transformCommon.startIterations250
38 					!= 0))
39 	{
40 		int iterationRange =
41 			fractal->transformCommon.stopIterations - fractal->transformCommon.startIterations250;
42 		int currentIteration = (aux.i - fractal->transformCommon.startIterations250);
43 		tempVC += fractal->transformCommon.offset000 * (1.0 * currentIteration) / iterationRange;
44 	}
45 	if (aux.i >= fractal->transformCommon.stopIterations)
46 	{
47 		tempVC = (tempVC + fractal->transformCommon.offset000);
48 	}
49 	z += tempVC;
50 }
51