Superficie Reactiva

Superficie Reactiva

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

Superficie Reactiva

Superficie Reactiva

Leave a Reply