I translate this to VB.Net.but there is a shortage that I can't delete the bigger box from the last generation.
Looks for help...
'''''''''''''''''''''''''''''''''''''''
Sub subD_box(ByVal box As box, ByVal generation As int32, ByRef allboxes As list(Of box))
If generation - 1 < 0 Then
Exit Sub
End If
Dim subboxes As New List(Of Box)
Dim corners As Point3d()=box.getcorners
Dim xvec As Vector3d = (corners(1) - corners(0)) / 3
Dim yvec As Vector3d = (corners(3) - corners(0)) / 3
Dim zvec As Vector3d = (corners(4) - corners(0)) / 3
box.transform(transform.Scale(corners(0), 1 / 3))
For m As int32=0 To 2
For n As Int32=0 To 2
For k As int32=0 To 2
If Not (m * m + n * n = 2) And Not (n * n + k * k = 2) And Not (k * k + m * m = 2) Then
Dim sub_box As Box = box
Dim transvec As Vector3d = xvec * m + yvec * n + zvec * k
sub_box.Transform(transform.Translation(transvec))
allboxes.Add(sub_box)
subD_box(sub_box, generation - 1, allboxes)
' all_boxes.remove(sub_box)
End If
Next
Next
Next
Alexander
Looks for help...
'''''''''''''''''''''''''''''''''''''''
Sub subD_box(ByVal box As box, ByVal generation As int32, ByRef allboxes As list(Of box))
If generation - 1 < 0 Then
Exit Sub
End If
Dim subboxes As New List(Of Box)
Dim corners As Point3d()=box.getcorners
Dim xvec As Vector3d = (corners(1) - corners(0)) / 3
Dim yvec As Vector3d = (corners(3) - corners(0)) / 3
Dim zvec As Vector3d = (corners(4) - corners(0)) / 3
box.transform(transform.Scale(corners(0), 1 / 3))
For m As int32=0 To 2
For n As Int32=0 To 2
For k As int32=0 To 2
If Not (m * m + n * n = 2) And Not (n * n + k * k = 2) And Not (k * k + m * m = 2) Then
Dim sub_box As Box = box
Dim transvec As Vector3d = xvec * m + yvec * n + zvec * k
sub_box.Transform(transform.Translation(transvec))
allboxes.Add(sub_box)
subD_box(sub_box, generation - 1, allboxes)
' all_boxes.remove(sub_box)
End If
Next
Next
Next
End Sub
'''''''''''''''''''''''''''''''''''''''''
Nov 3, 2010
huhooya
I don't know about vb.net. Perhaps you can ask some experts for help.
Nov 3, 2010
huhooya
Nov 3, 2010