Physics Forums (http://www.physicsforums.com/index.php)
-   Engineering, Comp Sci, & Technology Homework (http://www.physicsforums.com/forumdisplay.php?f=158)
-   -   Help With Pseudo Coded Algorithm for The Diamond-Square Algorithm (http://www.physicsforums.com/showthread.php?t=318796)

 quddusaliquddus Jun8-09 06:14 PM

Help With Pseudo Coded Algorithm for The Diamond-Square Algorithm

1. The problem statement, all variables and given/known data

I am trying to write a pseudocoded recursive algorithm.

Algorithm is located @: http://gameprogrammer.com/fractal.html#diamond

I am getting the ending wrong.

2. Relevant equations

Do diamond step.
Do square step.
Reduce random number range.
Call myself four times.

3. The attempt at a solution

My attempt:

Quote:
 Function DiamondSquare(PointsColl as Points3DCollection) Points3DCollection 'Variables Dim SquareSize as Integer = PointColl.Length if SquareSize > 1 then Dim RandomRange as Integer = 5 Dim Rand as Random(1234) 'Diamond Step Dim SqrCorner1 as Integer = 1 Dim SqrCorner2 as Integer = SquareSize Dim SqrCorner3 as Integer = (SquareSize - 1) * SquareSize +1 Dim SqrCorner4 as Integer = SquareSize * SquareSize Dim SqrCentre as Integer = (SquareSize / 2) ^ 2 'Assign Diamond Centre value SqrCentreValue = PointsColl(SqrCorner1) + PointsColl(SqrCorner2) + PointsColl(SqrCorner3) + PointsColl(SqrCorner4) + Rand.Next(0, RandomRange) PointsColl(SqrCentre) = New Point3D(PointsColl(SqrCentre).X, SqrCentreValue, PointsColl(SqrCentre).Z) 'Square Step Dim DiamCorner1 as Integer = SquareSize/2 Dim DiamCorner2 as Integer = DiamCorner1 + SquareSize Dim DiamCorner3 as Integer = DiamCorner2 + SquareSize Dim DiamCorner4 as Integer = DiamCorner3 + SquareSize 'Assign Diamond Centre Values to Diamond Corners PointsColl(DiamondCorner1) = SqrCentreValue PointsColl(DiamondCorner2) = SqrCentreValue PointsColl(DiamondCorner3) = SqrCentreValue PointsColl(DiamondCorner4) = SqrCentreValue 'Split into Four Squares Dim Square1 as Point3DCollection((SquareSize/2)-1) Dim Square2 as Point3DCollection((SquareSize/2)-1) Dim Square3 as Point3DCollection((SquareSize/2)-1) Dim Square4 as Point3DCollection((SquareSize/2)-1) 'Populate Square 1 Dim Index as integer = 0 For i = 0 to (SquareSize / 2) - 1 For j = 0 to (SquareSize / 2) - 1 Square1(Index) = PointsColl((i * SquareSize) + j) Index = Index + 1 next next 'Populate Square 2 Dim Index as integer = 0 For i = 0 to (SquareSize / 2) - 1 For j = 0 to (SquareSize / 2) -1 Square2(Index) = PointsColl((i * SquareSize) + j + (SquareSize / 2)) Index = Index + 1 next next 'Populate Square 3 Dim Index as integer = 0 For i = 0 to (SquareSize / 2) - 1 For j = 0 to (SquareSize / 2) - 1 Square3(Index) = PointsColl(((i + SquareSize / 2)* SquareSize) + j) Index = Index + 1 next next 'Populate Square 4 Dim Index as integer = 0 For i = 0 to (SquareSize / 2) - 1 For j = 0 to (SquareSize / 2) - 1 Square4(Index) = PointsColl(((i + SquareSize / 2) * SquareSize) + j + (SquareSize / 2)) Index = Index + 1 next next 'Call function for each Quarter Square Dim Square1 as Point3DCollection = DiamondSquare(Square1) Dim Square2 as Point3DCollection = DiamondSquare(Square2) Dim Square3 as Point3DCollection = DiamondSquare(Square3) Dim Square4 as Point3DCollection = DiamondSquare(Square4) Else 'Replace Square Values in PointsColl 'Retrieve Square1 Dim index as integer = 0 for i = 0 to (SquareSize / 2) - 1 for j = 0 to (SquareSize / 2) - 1 PointsColl((i * SquareSize) + j) = Square1(Index) Index = Index + 1 next next 'Retrieve Square2 Dim index as integer = 0 for i = 0 to (SquareSize / 2) - 1 for j = 0 to (SquareSize / 2) - 1 PointsColl((i * SquareSize) + j + (SquareSize / 2)) = Square1(Index) next next 'Retrieve Square3 Dim index as integer = 0 for i = 0 to (SquareSize / 2) - 1 for j = 0 to (SquareSize / 2) - 1 PointsColl(((i + SquareSize / 2)* SquareSize) + j) = Square1(Index) next next 'Retrieve Square4 Dim index as integer = 0 for i = 0 to (SquareSize / 2) - 1 for j = 0 to (SquareSize / 2) - 1 PointsColl(((i + SquareSize / 2) * SquareSize) + j + (SquareSize / 2)) = Square1(Index) next next End Function
1. The problem statement, all variables and given/known data

2. Relevant equations

3. The attempt at a solution

 All times are GMT -5. The time now is 12:49 PM.