// Flowers.inc - called by grass.inc to create flowers #declare Stems = MinStems + ((MaxStems-MinStems)*rand(R1)); #declare StemI = 0; #while (StemI < Stems) #declare StemAngle = MinStemAngle + ((MaxStemAngle-MinStemAngle)*rand(R1)); #declare StemHeight = MeanStemHeight*(1+((rand(R1)-0.5)*StemHeightVar*2)); #declare StemWidth = MeanStemWidth*(1+((rand(R1)-0.5)*StemWidthVar*2)); #declare StemBearing = rand(R1)*360; #declare StemCurve = MinStemCurve + ((MaxStemCurve-MinStemCurve)*rand(R1)); #declare StemSegs = MinStemSegs + ((MaxStemSegs-MinStemSegs)*rand(R1)); #declare StemWidthStep = (StemWidth*(1-StemTaper))/StemSegs; #declare CurvePerSeg = StemCurve/StemSegs; #declare SegCurve = CurvePerSeg; #declare PBot = ; #declare SegLen = StemHeight * (pow((1/StemCurvePower),StemSegs-1)/(pow((1/StemCurvePower),StemSegs)-1)) *((1/StemCurvePower)-1); #declare PTop = PBot + vrotate(<0,0,SegLen>,); #declare NBot0 = vnormalize(vrotate(<0,1,0>, )); #declare NBot1 = vnormalize(vrotate(<0.866,-0.5,0>, )); #declare NBot2 = vnormalize(vrotate(<-0.866,-0.5,0>, )); #declare NTop0 = vnormalize(vrotate(<0,1,0>, )); #declare NTop1 = vnormalize(vrotate(<0.866,-0.5,0>, <(StemAngle+SegCurve)/2,0,StemBearing>)); #declare NTop2 = vnormalize(vrotate(<-0.866,-0.5,0>, <(StemAngle+SegCurve)/2,0,StemBearing>)); #declare StemSeg = 0; #while (StemSeg, ), ); #declare NBot0 = NTop0; #declare NBot1 = NTop1; #declare NBot2 = NTop2; #declare NTop0= vrotate( vrotate( vrotate(NTop0 ,<0,0,StemBearing*-1> ) , ) ,<0,0,StemBearing> ); #declare NTop1= vrotate( vrotate( vrotate(NTop1 ,<0,0,StemBearing*-1> ) , ) ,<0,0,StemBearing> ); #declare NTop2= vrotate( vrotate( vrotate(NTop2 ,<0,0,StemBearing*-1> ) , ) ,<0,0,StemBearing> ); #declare SegCurve = SegCurve + CurvePerSeg; #declare StemWidth = StemWidth - StemWidthStep; #declare StemSeg = StemSeg + 1; #declare NumTri = NumTri + 6; #end #declare PetSize = 1.0 + ((rand(R1)*2*FlowerSizeVar)-FlowerSizeVar); #declare FlowerAxis = vnormalize(vcross(NBot0,NBot1)); #declare PBot = PBot + (FlowerAxis*SepalHght*-0.75); #declare PetCentP0 = PBot + (FlowerAxis*PetCentHght*-1); #declare SepP0 = PBot + (FlowerAxis*SepalHght); #declare PetRow = 0; #while (PetRow < PetRows) #declare PetBase = PBot - (FlowerAxis*(PetRow*PetRowOff)); #declare PetSize = PetSize * PetRowScale; #declare PetI = 0; #while (PetI