Superficie Reactiva
Jul 8, 2007
Este script reconoce la orientación de un recorrido dado, como podría ser el recorrido del sol:
puntoCardinal1 = Rhino.GetPoint(”selecciona el primer punto cardinal”)
If IsNull (puntoCardinal1) Then Exit Sub
PuntoCardinal2 = Rhino.GetPoint(”selecciona el segundo punto cardinal”)
If IsNull (puntoCardinal2) Then Exit Sub
Luego selecciona una superficie dada y la subdivide en N*N regiones.
strSurface = Rhino.GetObject(”Seleccione superficie”)
If IsNull (strSurface) Then Exit Sub
arrParamU = arrDomainU(0) + i * (arrDomainU(1) – arrDomainU(0)) / secu
arrParamV = arrDomainV(0) + j * (arrDomainV(1) – arrDomainV(0)) / secv
Luego calcula el punto medio de cada región y a partir de ese punto genera la “normal” para esa región en particular.
CenterPoint = Rhino.EvaluateSurface(placa, Array(uparamplaca,vparamplaca))
Rhino.AddPoint CenterPoint
Normal = Rhino.SurfaceNormal(placa, Array(uparamplaca, vparamplaca))
LineNormal = Rhino.AddLine(CenterPoint, Rhino.VectorAdd(CenterPoint, Normal))
Cada normal es comparada con la orientación original y devuelve un ángulo.
arrAngle = Rhino.Angle2(arrLine1, arrLine2)
Si el ángulo de incidencia es perpendicular al plano de la región el resultado es color rojo.
If arrAngle(0) >= 90 Then
Rhino.ObjectColor placa, RGB(250,0,0)
Si el ángulo de incidencia está entre los 45 y 90 grados, el color es magenta.
ElseIf arrAngle(0) > 45 And arrAngle(0) <= 89 Then
Rhino.ObjectColor placa, RGB(250,0,255)
Y si el ángulo está por debajo de los 45 grados, siendo la zona obscura o con sombra de la superficie el color el azul.
Else
Rhino.ObjectColor placa, RGB(0,0,255)
End If
End Function


