Update of /cvsroot/apophysis/2.10/Source
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv24107
Modified Files:
ControlPoint.pas XForm.pas
Log Message:
"on/off" plot mode replaced with "opacity" value
"symmetry" renamed to "color_speed" (almost...)
Index: XForm.pas
===================================================================
RCS file: /cvsroot/apophysis/2.10/Source/XForm.pas,v
retrieving revision 1.44
retrieving revision 1.45
diff -C2 -d -r1.44 -r1.45
*** XForm.pas 29 Sep 2008 09:56:35 -0000 1.44
--- XForm.pas 20 Apr 2009 07:53:17 -0000 1.45
***************
*** 56,68 ****
c: array[0..2, 0..1] of double; // the coefs to the affine part of the function
p: array[0..2, 0..1] of double; // post-transform coefs!
! density: double; // prob is this function is chosen
color: double; // color coord for this function. 0 - 1
color2: double; // Second color coord for this function. 0 - 1
! symmetry: double;
c00, c01, c10, c11, c20, c21: double;// unnecessary duplicated variables
p00, p01, p10, p11, p20, p21: double;// :-)
postXswap: boolean;
! noPlot: boolean;
// nx,ny,x,y: double;
--- 56,70 ----
c: array[0..2, 0..1] of double; // the coefs to the affine part of the function
p: array[0..2, 0..1] of double; // post-transform coefs!
! weight: double; // prob is this function is chosen
color: double; // color coord for this function. 0 - 1
color2: double; // Second color coord for this function. 0 - 1
! color_speed: double;
! animate: double; // for flam3, use as 1/0 toggle in Apo?
c00, c01, c10, c11, c20, c21: double;// unnecessary duplicated variables
p00, p01, p10, p11, p20, p21: double;// :-)
postXswap: boolean;
! opacity: double;
! plotMode: integer; // (neverPlot = -1, opacityPlot = 0, alwaysPlot = 1);
// nx,ny,x,y: double;
***************
*** 206,212 ****
i: Integer;
begin
! density := 0;
color := 0;
! symmetry := 0;
postXswap := false;
--- 208,214 ----
i: Integer;
begin
! weight := 0;
color := 0;
! color_speed := 0;
postXswap := false;
***************
*** 232,236 ****
modWeights[i] := 1;
! noPlot := false;
end;
--- 234,238 ----
modWeights[i] := 1;
! opacity := 1;
end;
***************
*** 248,253 ****
c21 := c[2][1];
! colorC1 := (1 + symmetry)/2;
! colorC2 := color*(1 - symmetry)/2;
FNrFunctions := 0;
--- 250,255 ----
c21 := c[2][1];
! colorC1 := (1 + color_speed)/2;
! colorC2 := color*(1 - color_speed)/2;
FNrFunctions := 0;
***************
*** 2121,2128 ****
c := Xform.c;
p := Xform.p;
! density := XForm.density;
color := XForm.color;
color2 := XForm.color2;
! symmetry := XForm.symmetry;
Orientationtype := XForm.Orientationtype;
--- 2123,2130 ----
c := Xform.c;
p := Xform.p;
! weight := XForm.weight;
color := XForm.color;
color2 := XForm.color2;
! color_speed := XForm.color_speed;
Orientationtype := XForm.Orientationtype;
***************
*** 2140,2144 ****
modWeights[i] := xform.modWeights[i];
! noPlot := xform.noPlot;
end;
--- 2142,2146 ----
modWeights[i] := xform.modWeights[i];
! opacity := xform.opacity;
end;
***************
*** 2151,2156 ****
numChaos: integer;
begin
! result := Format(' <xform weight="%g" color="%g" ', [density, color]);
! if symmetry <> 0 then result := result + format('symmetry="%g" ', [symmetry]);
for i := 0 to nrvar - 1 do begin
--- 2153,2161 ----
numChaos: integer;
begin
! result := Format(' <xform weight="%g" color="%g" ', [weight, color]);
! if color_speed <> 0 then
! result := result + format('symmetry="%g" ', [color_speed]);
! if opacity <> 1 then
! Result := Result + Format('opacity="%g" ', [opacity]);
for i := 0 to nrvar - 1 do begin
***************
*** 2185,2191 ****
end;
- if noPlot = true then
- Result := Result + 'plotmode="off" ';
-
Result := Result + '/>';
end;
--- 2190,2193 ----
***************
*** 2200,2204 ****
// [ifthen(IsEnabled, 1, 0), color, symmetry]);
result := Format(' <finalxform color="%g" ', [color]);
! if symmetry <> 0 then result := result + format('symmetry="%g" ', [symmetry]);
for i := 0 to nrvar - 1 do begin
if vars[i] <> 0 then
--- 2202,2206 ----
// [ifthen(IsEnabled, 1, 0), color, symmetry]);
result := Format(' <finalxform color="%g" ', [color]);
! if color_speed <> 0 then result := result + format('symmetry="%g" ', [color_speed]);
for i := 0 to nrvar - 1 do begin
if vars[i] <> 0 then
Index: ControlPoint.pas
===================================================================
RCS file: /cvsroot/apophysis/2.10/Source/ControlPoint.pas,v
retrieving revision 1.42
retrieving revision 1.43
diff -C2 -d -r1.42 -r1.43
*** ControlPoint.pas 18 Dec 2008 16:12:00 -0000 1.42
--- ControlPoint.pas 20 Apr 2009 07:53:17 -0000 1.43
***************
*** 171,175 ****
procedure Copy(cp1: TControlPoint; KeepSizes: boolean = false);
- // function HasNewVariants: boolean;
function HasFinalXForm: boolean;
--- 171,174 ----
***************
*** 328,333 ****
if soloXform >= 0 then begin
! for i := 0 to n - 1 do xform[i].noPlot := true;
! xform[soloXform].noPlot := false;
end;
--- 327,339 ----
if soloXform >= 0 then begin
! for i := 0 to n - 1 do xform[i].plotMode := -1; //neverPlot;
! xform[soloXform].plotMode := 1; //alwaysPlot;
! end
! else begin
! for i := 0 to n - 1 do with xform[i] do begin
! if opacity = 0 then plotMode := -1 //neverPlot
! else if opacity = 1 then plotMode := 1 //alwaysPlot
! else plotMode := 0; //opacityPlot;
! end;
end;
***************
*** 337,341 ****
for i := 0 to n - 1 do begin
! tp[i] := xform[i].density * xform[k].modWeights[i];
totValue := totValue + tp[i];
end;
--- 343,347 ----
for i := 0 to n - 1 do begin
! tp[i] := xform[i].weight * xform[k].modWeights[i];
totValue := totValue + tp[i];
end;
***************
*** 460,464 ****
xf.NextPoint(p);
! if xf.noPlot then
pPoint^.x := MaxDouble // hack
else
--- 466,472 ----
xf.NextPoint(p);
! if (xf.plotMode < 0) or
! ((xf.plotMode = 0) and (random > xf.opacity))
! then
pPoint^.x := MaxDouble // hack
else
***************
*** 471,475 ****
xf := xf.PropTable[Random(PROP_TABLE_SIZE)];
xf.NextPoint(p);
! if xf.noPlot then
pPoint^.x := MaxDouble // hack
else begin
--- 479,486 ----
xf := xf.PropTable[Random(PROP_TABLE_SIZE)];
xf.NextPoint(p);
!
! if (xf.plotMode < 0) or
! ((xf.plotMode = 0) and (random > xf.opacity))
! then
pPoint^.x := MaxDouble // hack
else begin
***************
*** 786,798 ****
// cmapindex := StrToInt(ParseValues[ParsePos]);
OutputDebugString(Pchar('NYI import Palette'));
! end else if AnsiCompareText(CurrentToken, 'density') = 0 then begin
Inc(ParsePos);
! xform[CurrentXForm].Density := StrToFloat(ParseValues[ParsePos]);
end else if AnsiCompareText(CurrentToken, 'color') = 0 then begin
Inc(ParsePos);
xform[CurrentXForm].color := StrToFloat(ParseValues[ParsePos]);
! end else if AnsiCompareText(CurrentToken, 'symmetry') = 0 then begin
Inc(ParsePos);
! xform[CurrentXForm].symmetry := StrToFloat(ParseValues[ParsePos]);
end else if AnsiCompareText(CurrentToken, 'coefs') = 0 then begin
Inc(ParsePos);
--- 797,809 ----
// cmapindex := StrToInt(ParseValues[ParsePos]);
OutputDebugString(Pchar('NYI import Palette'));
! end else if AnsiCompareText(CurrentToken, 'weight') = 0 then begin
Inc(ParsePos);
! xform[CurrentXForm].weight := StrToFloat(ParseValues[ParsePos]);
end else if AnsiCompareText(CurrentToken, 'color') = 0 then begin
Inc(ParsePos);
xform[CurrentXForm].color := StrToFloat(ParseValues[ParsePos]);
! end else if AnsiCompareText(CurrentToken, 'color_speed') = 0 then begin
Inc(ParsePos);
! xform[CurrentXForm].color_speed := StrToFloat(ParseValues[ParsePos]);
end else if AnsiCompareText(CurrentToken, 'coefs') = 0 then begin
Inc(ParsePos);
***************
*** 878,884 ****
end;
! end else if AnsiCompareText(CurrentToken, 'plotmode') = 0 then begin
Inc(ParsePos);
! xform[CurrentXForm].noPlot := (StrToInt(ParseValues[ParsePos]) = 1);
end else begin
OutputDebugString(Pchar('Unknown Token: ' + CurrentToken));
--- 889,895 ----
end;
! end else if AnsiCompareText(CurrentToken, 'opacity') = 0 then begin
Inc(ParsePos);
! xform[CurrentXForm].opacity := StrToFloat(ParseValues[ParsePos]);
end else begin
OutputDebugString(Pchar('Unknown Token: ' + CurrentToken));
***************
*** 904,908 ****
VarPossible := false;
for j := 0 to NRVAR - 1 do begin
! VarPossible := VarPossible or Variations[j];
end;
--- 915,919 ----
VarPossible := false;
for j := 0 to NRVAR - 1 do begin
! VarPossible := VarPossible or RandomVariations[j];
end;
***************
*** 910,914 ****
repeat
rv := var_distrib[random(Length(var_distrib))];
! until Variations[rv];
end else begin
rv := 0;
--- 921,925 ----
repeat
rv := var_distrib[random(Length(var_distrib))];
! until RandomVariations[rv];
end else begin
rv := 0;
***************
*** 927,931 ****
repeat
v := Mixed_var_distrib[random(Length(mixed_var_distrib))];
! until Variations[v]; // Use only Variations set in options
end else begin
v := 0;
--- 938,942 ----
repeat
v := Mixed_var_distrib[random(Length(mixed_var_distrib))];
! until RandomVariations[v]; // Use only Variations set in options
end else begin
v := 0;
***************
*** 960,964 ****
VarPossible := false;
for j := 0 to NRVAR - 1 do begin
! VarPossible := VarPossible or Variations[j];
end;
--- 971,975 ----
VarPossible := false;
for j := 0 to NRVAR - 1 do begin
! VarPossible := VarPossible or RandomVariations[j];
end;
***************
*** 966,970 ****
repeat
rv := var_distrib[random(Length(var_distrib))];
! until Variations[rv];
end else begin
rv := 0;
--- 977,981 ----
repeat
rv := var_distrib[random(Length(var_distrib))];
! until RandomVariations[rv];
end else begin
rv := 0;
***************
*** 972,980 ****
for i := 0 to NXFORMS - 1 do begin
! xform[i].density := 0;
end;
for i := 0 to nrXforms - 1 do begin
! xform[i].density := 1.0 / nrXforms;
xform[i].color := i / (nrXforms - 1);
--- 983,991 ----
for i := 0 to NXFORMS - 1 do begin
! xform[i].weight := 0;
end;
for i := 0 to nrXforms - 1 do begin
! xform[i].weight := 1.0 / nrXforms;
xform[i].color := i / (nrXforms - 1);
***************
*** 998,1002 ****
repeat
v := Mixed_var_distrib[random(Length(mixed_var_distrib))];
! until Variations[v]; // use only variations set in options
end else begin
v := 0;
--- 1009,1013 ----
repeat
v := Mixed_var_distrib[random(Length(mixed_var_distrib))];
! until RandomVariations[v]; // use only variations set in options
end else begin
v := 0;
***************
*** 1048,1056 ****
try
SetLength(Points, SUB_BATCH_SIZE);
! { case compatibility of
! 0: iterate_Old(SUB_BATCH_SIZE, points);
! 1: iterateXYC(SUB_BATCH_SIZE, points);
! end;
! }
cosa := cos(FAngle);
sina := sin(FAngle);
--- 1059,1063 ----
try
SetLength(Points, SUB_BATCH_SIZE);
!
cosa := cos(FAngle);
sina := sin(FAngle);
***************
*** 1463,1467 ****
else begin
cp1.xform[NXFORMS].Clear;
! cp1.xform[NXFORMS].symmetry := 1;
end;
--- 1470,1474 ----
else begin
cp1.xform[NXFORMS].Clear;
! cp1.xform[NXFORMS].color_speed := 1;
end;
***************
*** 1477,1487 ****
else begin
cp2.xform[NXFORMS].Clear;
! cp2.xform[NXFORMS].symmetry := 1;
end;
for i := 0 to NXFORMS do begin
! Result.xform[i].density := c0 * cp1.xform[i].density + c1 * cp2.xform[i].density;
Result.xform[i].color := c0 * cp1.xform[i].color + c1 * cp2.xform[i].color;
! Result.xform[i].symmetry := c0 * cp1.xform[i].symmetry + c1 * cp2.xform[i].symmetry;
// for j := 0 to NrVar - 1 do
// Result.xform[i].vars[j] := c0 * cp1.xform[i].vars[j] + c1 * cp2.xform[i].vars[j];
--- 1484,1494 ----
else begin
cp2.xform[NXFORMS].Clear;
! cp2.xform[NXFORMS].color_speed := 1;
end;
for i := 0 to NXFORMS do begin
! Result.xform[i].weight := c0 * cp1.xform[i].weight + c1 * cp2.xform[i].weight;
Result.xform[i].color := c0 * cp1.xform[i].color + c1 * cp2.xform[i].color;
! Result.xform[i].color_speed := c0 * cp1.xform[i].color_speed + c1 * cp2.xform[i].color_speed;
// for j := 0 to NrVar - 1 do
// Result.xform[i].vars[j] := c0 * cp1.xform[i].vars[j] + c1 * cp2.xform[i].vars[j];
***************
*** 1579,1585 ****
for i := 0 to Min(NumXForms+1, NXFORMS) do
with xform[i] do begin
! //if density = 0 then continue; - FinalXform has weight=0
! sl.add(format('xform %d density %g color %g symmetry %g', [i, density, color, symmetry]));
s := 'vars';
for j := 0 to NRVAR - 1 do begin
--- 1586,1592 ----
for i := 0 to Min(NumXForms+1, NXFORMS) do
with xform[i] do begin
! //if weight = 0 then continue; - FinalXform has weight=0
! sl.add(format('xform %d weight %g color %g color_speed %g', [i, weight, color, color_speed]));
s := 'vars';
for j := 0 to NRVAR - 1 do begin
***************
*** 1597,1603 ****
end;
sl.add(s);
! sl.Add(format('coefs %.6f %.6f %.6f %.6f %.6f %.6f',
[c[0][0], c[0][1], c[1][0], c[1][1], c[2][0], c[2][1]]));
! sl.Add(format('post %.6f %.6f %.6f %.6f %.6f %.6f',
[p[0][0], p[0][1], p[1][0], p[1][1], p[2][0], p[2][1]]));
if postXswap then
--- 1604,1610 ----
end;
sl.add(s);
! sl.Add(format('coefs %g %g %g %g %g %g', // 'coefs %.6f %.6f %.6f %.6f %.6f %.6f',
[c[0][0], c[0][1], c[1][0], c[1][1], c[2][0], c[2][1]]));
! sl.Add(format('post %g %g %g %g %g %g', // 'post %.6f %.6f %.6f %.6f %.6f %.6f',
[p[0][0], p[0][1], p[1][0], p[1][1], p[2][0], p[2][1]]));
if postXswap then
***************
*** 1612,1616 ****
sl.Add(s);
! sl.Add(Format('plotmode %d', [Ifthen(noPlot, 1, 0)]));
end;
--- 1619,1623 ----
sl.Add(s);
! sl.Add(Format('opacity %g', [opacity]));
end;
***************
*** 1710,1714 ****
Result := (c[0,0]<>1) or (c[0,1]<>0) or (c[1,0]<>0) or (c[1,1]<>1) or (c[2,0]<>0) or (c[2,1]<>0) or
(p[0,0]<>1) or (p[0,1]<>0) or (p[1,0]<>0) or (p[1,1]<>1) or (p[2,0]<>0) or (p[2,1]<>0) or
! (symmetry <> 1) or (vars[0] <> 1);
if Result = false then
for i := 1 to NRVAR-1 do Result := Result or (vars[i] <> 0);
--- 1717,1721 ----
Result := (c[0,0]<>1) or (c[0,1]<>0) or (c[1,0]<>0) or (c[1,1]<>1) or (c[2,0]<>0) or (c[2,1]<>0) or
(p[0,0]<>1) or (p[0,1]<>0) or (p[1,0]<>0) or (p[1,1]<>1) or (p[2,0]<>0) or (p[2,1]<>0) or
! (color_speed <> 1) or (vars[0] <> 1);
if Result = false then
for i := 1 to NRVAR-1 do Result := Result or (vars[i] <> 0);
***************
*** 1746,1750 ****
for i := 0 to NXFORMS - 1 do
! if (cp.xform[i].density = 0.0) then break;
if (i = NXFORMS) then
--- 1753,1757 ----
for i := 0 to NXFORMS - 1 do
! if (cp.xform[i].weight = 0.0) then break;
if (i = NXFORMS) then
***************
*** 1757,1762 ****
if (sym < 0) then
begin
! cp.xform[i].density := 1.0;
! cp.xform[i].symmetry := 1;
cp.xform[i].vars[0] := 1.0;
for j := 1 to NRVAR - 1 do
--- 1764,1769 ----
if (sym < 0) then
begin
! cp.xform[i].weight := 1.0;
! cp.xform[i].color_speed := 1;
cp.xform[i].vars[0] := 1.0;
for j := 1 to NRVAR - 1 do
***************
*** 1782,1788 ****
while (k < sym) and (i < SymmetryNVars) do
begin
! cp.xform[i].density := 1.0;
cp.xform[i].vars[0] := 1.0;
! cp.xform[i].symmetry := 1;
for j := 1 to NRVAR - 1 do
cp.xform[i].vars[j] := 0;
--- 1789,1795 ----
while (k < sym) and (i < SymmetryNVars) do
begin
! cp.xform[i].weight := 1.0;
cp.xform[i].vars[0] := 1.0;
! cp.xform[i].color_speed := 1;
for j := 1 to NRVAR - 1 do
cp.xform[i].vars[j] := 0;
***************
*** 1995,1999 ****
for i := 0 to NXFORMS - 1 do
begin
! if xform[i].density = 0 then
begin
Result := i;
--- 2002,2006 ----
for i := 0 to NXFORMS - 1 do
begin
! if xform[i].weight = 0 then
begin
Result := i;
***************
*** 2096,2100 ****
t := NumXForms;
for i := 0 to t - 1 do
! xform[i].density := 0.5;
end;
--- 2103,2107 ----
t := NumXForms;
for i := 0 to t - 1 do
! xform[i].weight := 0.5;
end;
***************
*** 2106,2115 ****
td := 0.0;
for i := 0 to NumXForms - 1 do
! td := td + xform[i].Density;
if (td < 0.001) then
EqualizeWeights
else
for i := 0 to NumXForms - 1 do
! xform[i].Density := xform[i].Density / td;
end;
--- 2113,2122 ----
td := 0.0;
for i := 0 to NumXForms - 1 do
! td := td + xform[i].weight;
if (td < 0.001) then
EqualizeWeights
else
for i := 0 to NumXForms - 1 do
! xform[i].weight := xform[i].weight / td;
end;
***************
*** 2119,2123 ****
begin
for i := 0 to Transforms - 1 do
! xform[i].Density := Random;
end;
--- 2126,2130 ----
begin
for i := 0 to Transforms - 1 do
! xform[i].weight := Random;
end;
***************
*** 2131,2142 ****
for i := 0 to t - 1 do
begin
! xform[i].Density := triangle_area(Triangles[i]);
! total_area := total_area + xform[i].Density;
end;
for i := 0 to t - 1 do
begin
! xform[i].Density := xform[i].Density / total_area;
end;
- //? cp1.NormalizeWeights;
end;
--- 2138,2148 ----
for i := 0 to t - 1 do
begin
! xform[i].weight := triangle_area(Triangles[i]);
! total_area := total_area + xform[i].weight;
end;
for i := 0 to t - 1 do
begin
! xform[i].weight := xform[i].weight / total_area;
end;
end;
|