đồ án này được lấy cảm hứng từ các pixel. mỗi pixel li ti bản thân nó không có giá trị gì cả nhưng hàng trăm hàng ngàn,hàng triệu pixel kết hợp với nhau có thể tao ra vô số hình ảnh tuyệt. đó phải chăng cũng là triết lý của con người chúng ta.
tôi không muốn khi người khác nhắc đến chiến tranh là nhắc đến một hình ảnh thảm khốc: loạn lạn, chết chóc...
chiến tranh đã qua lâu lắm rồi
hình ảnh đó cũng nhạt nhòa rồi ( ít nhất là đối với thế hệ chúng tôi)
những gì tôi muốn kể về chiến tranh Việt Nam, con người Việt Nam trong chiến tranh với thế hệ chúng tôi, thế hệ con cháu chúng tôi, với bè bạn năm châu là một hình ảnh một "dân tộc đoàn kết, tự cường", là tinh thần bất khuất của cả một thế hệ
chiến thắng, hòa bình mà hôm nay tôi đang sống trong đó là kết quả của cả một dân tộc cũng giống như những pixel chỉ thành hình khi hàng trăm hàng vạn pixel đứng cùng nhau
[ b-lak ]
design research: parametricism, material
Tìm kiếm Blog này
Thứ Bảy, 4 tháng 9, 2010
Thứ Sáu, 27 tháng 8, 2010
Thứ Năm, 26 tháng 8, 2010
dragon city statue competition- week 1
thức cột Trung quốc :
thức cột Việt Nam:
tôi nhận thấy sự tương đồng của cột rồng của hai nước tuy nhiên cũng có những sự khác biệt giữa chúng về việc sử dụng màu sắc, họa tiêt trang trí. kỹ thuật .Tuy nhiên, với kiến thức hạn hẹp về lịch sử nếu muốn phân biệt hai loại cột này thì có lẽ tôi cần thêm thời gian để tìm hiểu sâu hơn
Ý TƯỞNG THIẾT KẾ :
thức cột Việt Nam:
tôi nhận thấy sự tương đồng của cột rồng của hai nước tuy nhiên cũng có những sự khác biệt giữa chúng về việc sử dụng màu sắc, họa tiêt trang trí. kỹ thuật .Tuy nhiên, với kiến thức hạn hẹp về lịch sử nếu muốn phân biệt hai loại cột này thì có lẽ tôi cần thêm thời gian để tìm hiểu sâu hơn
Ý TƯỞNG THIẾT KẾ :
Thứ Năm, 19 tháng 8, 2010
Paper Art
http://www.youtube.com/watch?v=vYf5UqJa_O4&feature=player_embedded#!
thật ngạc nhiên về sự sáng tạo của con người. Thật tuyệt vời! tôi không ngừng trầm trồ và tham phục đôi bàn tay khéo léo và bộ óc đầy sáng tạo của họ .Nó khơi dậy trong tôi một ý tưởng, tôi sẽ viết một đọan code để thự hiện việc này trên máy tính ( tôi không đc khéo tay cho lắm =.=!).
thật ngạc nhiên về sự sáng tạo của con người. Thật tuyệt vời! tôi không ngừng trầm trồ và tham phục đôi bàn tay khéo léo và bộ óc đầy sáng tạo của họ .Nó khơi dậy trong tôi một ý tưởng, tôi sẽ viết một đọan code để thự hiện việc này trên máy tính ( tôi không đc khéo tay cho lắm =.=!).
Thứ Ba, 17 tháng 8, 2010
Lattice Pipe
Lattice Pipe
Option Explicit
'Script written by <David Mans>
'Script copyrighted by <NeoArchaic Studio>
'Script version Sunday, August 30, 2009 1:22:47 AM
Call Main()
Sub Main()
Dim strCurve
strCurve = Rhino.GetObject("Select Curve",4,True)
If IsNull(strCurve) Then Exit Sub
Call reparameterize(strCurve)
Dim arrItems, arrValues, arrReturns
arrItems = Array("Strands","Rotations","Strand Oscillations","Min Radius","Max Radius","Radius Oscillations","Samples")
arrValues= Array(8,0,4,1,2,4,18)
arrReturns = Rhino.PropertyListBox (arrItems, arrValues ,,"Parameters")
If IsNull(arrReturns) Then Exit Sub
Call Rhino.EnableRedraw(False)
Call curveLattice(strCurve,CInt(arrReturns(0)),CInt(arrReturns(2)),CDbl(arrReturns(1)),Array(CDbl(arrReturns(3)),CDbl(arrReturns(4))),CInt(arrReturns(5)),CInt(arrReturns(6)))
Call Rhino.EnableRedraw(True)
End Sub
Function curveLattice(strCurve,intStrands,intOscillations, dblRotation, arrRadius, intRadius, intSamples)
curveLattice = Null
intOscillations = intOscillations*2
Dim i,j, count, tDom, tStep, rStep, dblSc
Dim tFrame, rFrame
Dim arrOutput(),arrPt()
count = intSamples*intOscillations
ReDim arrPt(count), arrOutput(intStrands)
tDom = Rhino.CurveDomain(strCurve)
tStep = (tDom(1)-tDom(0))/count
rStep = 360/intStrands
dblSc = arrRadius(1)-arrRadius(0)
For i = 0 To intStrands-1 Step 1
For j = 0 To count Step 1
tFrame = Rhino.CurvePerpFrame(strCurve,tDom(0)+tStep*j)
If i Mod(2) Then
rFrame = Rhino.RotatePlane(tFrame,rStep*i+(rStep*0.5)*Sin(intOscillations*PI*(j/count))+(360*dblRotation)*j/count,tFrame(3))
Else
rFrame = Rhino.RotatePlane(tFrame,rStep*i+(rStep*0.5)*Sin(PI+intOscillations*PI*(j/count))+(360*dblRotation)*j/count,tFrame(3))
End If
arrPt(j) = Rhino.PointAdd(tFrame(0),Rhino.VectorScale(Rhino.VectorUnitize(rFrame(1)),arrRadius(0)+dblSc+dblSc*Cos(intRadius*PI*(j/count))))
Next
arrOutput(i) = arrPt
Call Rhino.AddInterpCurve(arrPt)
Next
curveLattice = arrOutput
End Function
Function reparameterize(strObjectID)
If Rhino.IsCurve(strObjectID) = True Then
Call Rhino.SelectObject(strObjectID)
Call Rhino.Command("reparameterize 0 1")
Call Rhino.UnselectAllObjects()
End If
If Rhino.IsSurface(strObjectID) = True Then
Call Rhino.SelectObject(strObjectID)
Call Rhino.Command("reparameterize 0 1 0 1")
Call Rhino.UnselectAllObjects()
End If
End Function
random points
Option Explicit
'Script written by <David Mans>
'Script copyrighted by <NeoArchaic Studio>
'Script version Friday, October 02, 2009 12:22:08 AM
Call Main()
Sub Main()
Dim i, j, arrObjects, strType, strMethod, intCount, dblRadius, dblDim(2), arrCircles(), arrPoints()
intCount = Rhino.GetInteger("Total Number of Points",100,1)
If IsNull(intCount) Then Exit Sub
strType = Rhino.GetString("Select Geometry Type","Circle",Array("Circle","Sphere","Cube","Curve","Surface"))
If IsNull(strType) Then Exit Sub
If strType = "Circle" Then
strType = Rhino.GetString("Select Circle Geometry","Object",Array("Object","ByOrigin"))
If IsNull(strType) Then Exit Sub
strMethod = Rhino.GetString("Select Circle Method","Dispersed",Array("Dispersed","Radial"))
If IsNull(strMethod) Then Exit Sub
If strType = "Object" Then
arrObjects = Rhino.GetObjects("Select Circles",4,,True)
If IsNull(arrObjects) Then Exit Sub
j=0
For i = 0 To UBound(arrObjects) Step 1
If Rhino.IsCircle(arrObjects(i)) Then
ReDim Preserve arrCircles(j), arrPoints(j)
arrCircles(j) = arrObjects(i)
arrPoints(j) = Rhino.CircleCenterPoint(arrCircles(j))
j = j+1
End If
Next
arrObjects = arrPoints
Else
arrObjects = Rhino.GetObjects("Select Origin Points",1,,True)
If IsNull(arrObjects) Then Exit Sub
dblRadius = Rhino.GetReal("Radius",1)
If IsNull(dblRadius) Then Exit Sub
End If
Call Rhino.EnableRedraw(False)
For i = 0 To UBound(arrObjects) Step 1
If strType = "Object" Then
dblRadius = Rhino.CircleRadius(arrCircles(i))
Else
arrObjects(i) = Rhino.PointCoordinates(arrObjects(i))
End If
If strMethod = "Radial" Then
Call Rhino.AddPointCloud(randomPointCircleRadial(arrObjects(i), dblRadius, intCount))
Else
Call Rhino.AddPointCloud(randomPointCircle(arrObjects(i), dblRadius, intCount))
End If
Next
Call Rhino.EnableRedraw(True)
Exit Sub
ElseIf strType = "Sphere" Then
strMethod = Rhino.GetString("Select Sphere Method","Volume",Array("Volume","Radial","Shell"))
If IsNull(strMethod) Then Exit Sub
arrObjects = Rhino.GetObjects("Select Origin Points",1,,True)
If IsNull(arrObjects) Then Exit Sub
dblRadius = Rhino.GetReal("Radius",1)
If IsNull(dblRadius) Then Exit Sub
Call Rhino.EnableRedraw(False)
For i = 0 To UBound(arrObjects) Step 1
If strMethod = "Volume" Then
Call Rhino.AddPointCloud(randomPointSphere(Rhino.PointCoordinates(arrObjects(i)), dblRadius, intCount))
ElseIf strMethod = "Shell" Then
Call Rhino.AddPointCloud(randomPointSphereShell(Rhino.PointCoordinates(arrObjects(i)), dblRadius, intCount))
Else
Call Rhino.AddPointCloud(randomPointSphereVol(Rhino.PointCoordinates(arrObjects(i)), dblRadius, intCount))
End If
Next
Call Rhino.EnableRedraw(True)
Exit Sub
ElseIf strType = "Cube" Then
strMethod = Rhino.GetString("Select Cube Method","Volume",Array("Volume","Shell"))
If IsNull(strMethod) Then Exit Sub
arrObjects = Rhino.GetObjects("Select Origin Points",1,,True)
If IsNull(arrObjects) Then Exit Sub
dblDim(0) = Rhino.GetReal("Length",1)
dblDim(1) = Rhino.GetReal("Width",1)
dblDim(2) = Rhino.GetReal("Height",1)
Call Rhino.EnableRedraw(False)
For i = 0 To UBound(arrObjects) Step 1
If strMethod = "Volume" Then
Call Rhino.AddPointCloud(randomPointCubeVol(Rhino.PointCoordinates(arrObjects(i)), dblDim(0), dblDim(1), dblDim(2), intCount))
Else
Call Rhino.AddPointCloud(randomPointCube(Rhino.PointCoordinates(arrObjects(i)), dblDim(0), dblDim(1), dblDim(2), intCount))
End If
Next
Call Rhino.EnableRedraw(True)
Exit Sub
ElseIf strType = "Curve" Then
arrObjects = Rhino.GetObjects("Select Curves",4,,True)
If IsNull(arrObjects) Then Exit Sub
dblRadius = Rhino.GetReal("Maximum Deviation",1)
If IsNull(dblRadius) Then Exit Sub
Call Rhino.EnableRedraw(False)
For i = 0 To UBound(arrObjects) Step 1
Call reparameterize(arrObjects(i))
Call Rhino.AddPointCloud(randomPtsCrv(arrObjects(i),dblRadius,intCount))
Next
Call Rhino.EnableRedraw(True)
Exit Sub
ElseIf strType = "Surface" Then
arrObjects = Rhino.GetObjects("Select Surfaces",8,,True)
If IsNull(arrObjects) Then Exit Sub
dblRadius = Rhino.GetReal("Maximum Deviation",1)
If IsNull(dblRadius) Then Exit Sub
Call Rhino.EnableRedraw(False)
For i = 0 To UBound(arrObjects) Step 1
Call reparameterize(arrObjects(i))
Call Rhino.AddPointCloud(randomPtsSrf(arrObjects(i),dblRadius,intCount))
Next
Call Rhino.EnableRedraw(True)
Exit Sub
End If
End Sub
Function randomPointCircleRadial(arrOrigin, dblRadius, intCount)
randomPointCircleRadial = Null
Dim i, dblRandom(1), arrOutput()
ReDim arrOutput(intCount-1)
For i = 0 To intCount-1 Step 1
dblRandom(0) = random(0,2*PI)
dblRandom(1) = random(0,dblRadius)
arrOutput(i) = Array(arrOrigin(0)+dblRandom(1)*Sin(dblRandom(0)),arrOrigin(1)+dblRandom(1)*Cos(dblRandom(0)),arrOrigin(2))
Next
randomPointCircleRadial = arrOutput
End Function
Function randomPointCircle(arrOrigin, dblRadius, intCount)
randomPointCircle = Null
Dim i, arrOutput()
ReDim arrOutput(intCount-1)
For i = 0 To intCount-1 Step 1
Do
arrOutput(i) = Array(arrOrigin(0)+random(-dblRadius,dblRadius),arrOrigin(1)+random(-dblRadius,dblRadius),arrOrigin(2))
If Rhino.Distance(arrOrigin,arrOutput(i)) < dblRadius Then Exit Do
Loop
Next
randomPointCircle = arrOutput
End Function
Function randomPointSphereShell(arrOrigin, dblRadius, intCount)
randomPointSphereShell = Null
Dim i, dblRandom(1), arrOutput()
ReDim arrOutput(intCount-1)
For i = 0 To intCount-1 Step 1
dblRandom(0) = random(0,2*PI)
dblRandom(1) = random(0,PI)
arrOutput(i) = Array(arrOrigin(0)+dblRadius*Sin(dblRandom(0))*Sin(dblRandom(1)),arrOrigin(1)+dblRadius*Cos(dblRandom(0))*Sin(dblRandom(1)),arrOrigin(2)+dblRadius*Cos(dblRandom(1)))
Next
randomPointSphereShell = arrOutput
End Function
Function randomPointSphere(arrOrigin, dblRadius, intCount)
randomPointSphere = Null
Dim i, arrOutput()
ReDim arrOutput(intCount-1)
For i = 0 To intCount-1 Step 1
Do
arrOutput(i) = Array(arrOrigin(0)+random(-dblRadius,dblRadius),arrOrigin(1)+random(-dblRadius,dblRadius),arrOrigin(2)+random(-dblRadius,dblRadius))
If Rhino.Distance(arrOrigin,arrOutput(i)) < dblRadius Then Exit Do
Loop
Next
randomPointSphere = arrOutput
End Function
Function randomPointSphereVol(arrOrigin, dblRadius, intCount)
randomPointSphereVol = Null
Dim i, dblRandom(2), arrOutput()
ReDim arrOutput(intCount-1)
For i = 0 To intCount-1 Step 1
dblRandom(0) = random(0,2*PI)
dblRandom(1) = random(0,PI)
dblRandom(2) = random(0,dblRadius)
arrOutput(i) = Array(arrOrigin(0)+dblRandom(2)*Sin(dblRandom(0))*Sin(dblRandom(1)),arrOrigin(1)+dblRandom(2)*Cos(dblRandom(0))*Sin(dblRandom(1)),arrOrigin(2)+dblRandom(2)*Cos(dblRandom(1)))
Next
randomPointSphereVol = arrOutput
End Function
Function randomPointCube(arrOrigin, dblLength, dblWidth, dblHeight, intCount)
randomPointCube = Null
Dim i, arrOutput()
ReDim arrOutput(intCount-1)
For i = 0 To intCount-1 Step 1
arrOutput(i) = Array(arrOrigin(0)+random(0,dblLength),arrOrigin(1)+random(0,dblLength),arrOrigin(2)+random(0,dblHeight))
Next
randomPointCube = arrOutput
End Function
Function randomPointCubeVol(arrOrigin, dblLength, dblWidth, dblHeight, intCount)
randomPointCubeVol = Null
Dim i, arrOutput()
ReDim arrOutput(intCount-1)
For i = 0 To intCount-1 Step 1
arrOutput(i) = Array(arrOrigin(0)+random(0,dblLength),arrOrigin(1)+random(0,dblLength),arrOrigin(2)+random(0,dblHeight))
Next
randomPointCubeVol = arrOutput
End Function
Function randomPtsCrv(strCurve,dblDist,intCount)
randomPtsCrv = Null
Dim i, tDom, dblRandom, arrOutput()
ReDim arrOutput(intCount-1)
tDom = Rhino.CurveDomain(strCurve)
For i = 0 To intCount-1 Step 1
dblRandom = random(tDom(0),tDom(1)-tDom(0))
arrOutput(i) = Rhino.PointAdd(Rhino.EvaluateCurve(strCurve,dblRandom),Rhino.VectorScale(Rhino.VectorUnitize(Rhino.CurvePerpFrame(strCurve,dblRandom)(1)),random(-dblDist,dblDist)))
Next
randomPtsCrv = arrOutput
End Function
Function randomPtsSrf(strSurface,dblDist,intCount)
randomPtsSrf = Null
Dim i, uDom, vDom, arrOutput()
ReDim arrOutput(intCount-1)
uDom = Rhino.SurfaceDomain(strSurface,0)
vDom = Rhino.SurfaceDomain(strSurface,1)
For i = 0 To intCount-1 Step 1
arrOutput(i) = Rhino.PointAdd(Rhino.EvaluateSurface(strSurface,Array(random(uDom(0),uDom(1)),random(vDom(0),vDom(1)))),Rhino.VectorScale(Rhino.VectorUnitize(Rhino.SurfaceNormal(strSurface,Array(random(uDom(0),uDom(1)),random(vDom(0),vDom(1))))),random(-dblDist,dblDist)))
Next
randomPtsSrf = arrOutput
End Function
Function random(min,max)
random = Null
Dim dblValue: dblValue = min+(max-min)*Rnd()
random = dblValue
End Function
Function reparameterize(strObjectID)
If Rhino.IsCurve(strObjectID) = True Then
Call Rhino.SelectObject(strObjectID)
Call Rhino.Command("reparameterize 0 1",False)
Call Rhino.UnselectAllObjects()
End If
If Rhino.IsSurface(strObjectID) = True Then
Call Rhino.SelectObject(strObjectID)
Call Rhino.Command("reparameterize 0 1 0 1",False)
Call Rhino.UnselectAllObjects()
End If
End Function
Đăng ký:
Bài đăng (Atom)