| ODL 129 TEAM B Coursework 1 | ||||||||||||||||||||||
| Question 3 | ||||||||||||||||||||||
| Outline an algorithm for detecting all instances of two or more rectilinier blocks in a particular 2D world being adjacent. Illustrate how your algorithm (method) might work for your particular 2D world. | ||||||||||||||||||||||
| Answer | ||||||||||||||||||||||
| Find Block A position (block centre) (block centre) = (a,b) Find Block A extent (X,Y) X = width Find X minimum = ((block centre) - (width/2) Find X maximum = ((block centre) + (width/2) Y = height Find Y minimum = ((block centre) - (height/2) Find Y maximum = ((block centre) + (height/2) Repeat for Blocks B to F Check if Blocks adjacent front or rear If Block A(X minimum, Y minimum) = Block B(X minimum, Y maximum) or if Block A(X minimum, Y maximum) = Block B(X minimum, Y minimum) or if Block A(X maximum, Y minimum) = Block B(X maximum, Y maximum) or if Block A(X maximum, Y maximum) = Block B(X maximum, Y minimum) Then return : Block A and Block B adjacent Check if Blocks adjacent left or right If Block A(X minimum, Y minimum) = Block B(X maximum, Y minimum) or if Block A(X minimum, Y maximum) = Block B(X maximum, Y maximum) or if Block A(X maximum, Y minimum) = Block B(X minimum, Y minimum) or if Block A(X maximum, Y maximum) = Block B(X minimum, Y maximum) Then return : Block A and Block B adjacent Check if Blocks adjacent on diagonal If Block A(X minimum, Y minimum) = Block B(X maximum, Y maximum) or if Block A(X minimum, Y maximum) = Block B(X maximum, Y minimum) or if Block A(X maximum, Y minimum) = Block B(X minimum, Y maximum) or if Block A(X maximum, Y maximum) = Block B(X minimum, Y minimum) Then return : Block A and Block B adjacent Repeat for Block A with Blocks C to F Then start check for Block B, and repeat through to Block F. |
||||||||||||||||||||||
| Question 1 | ||||||||||||||||||||||
| Question 2 | ||||||||||||||||||||||
| To top | ||||||||||||||||||||||
| Question 4 | ||||||||||||||||||||||
| Question 5 | ||||||||||||||||||||||