Resultados 1 al 6 de 6

Tema: Calcular el área de la sombra que proyecta un modelo

  1. #1
    Fecha de ingreso
    Dec 2006
    Mensajes
    3

    Calcular el área de la sombra que proyecta un modelo

    Saludos. Tengo intención de hacer un programa que me calcule el área de la sombra que un edificio crea sobre el suelo a una determinada hora del día.
    ¿Pensáis que 3d Studio Max y alguna Api me podrían ayudará.

    Tengo entendido que hay alguna aplicación que permite simular la luz en un determinado momento del día en cualquier parte del mundo.
    ¿Es cierto?

  2. #2
    Fecha de ingreso
    Jul 2005
    Mensajes
    7,953

    Calcular el área de la sombra que proyecta un modelo

    Te pongo un sencillo script que calcula la posición del sol según fecha, hora, latitud y longitud. También te da el Vector dirección: s=(x y, z).

    Para calcular el área, dependerá lo difícil es hallar el área de la proyección del edificio sobre el plano perpendicular a, y dividirla por el seno de altitude. Si no me equivoco.
    #*********************.
    # posicionamiento del sol respecto a la hora solar.
    # -.
    #*********************.

    Latitude =
    S_latitude = Latitude * pi/180.

    Longitude =
    S_longitude = longitude * pi/180.

    Meridian = -2.

    S_meridian = meridian * pi/180.

    Tsolar = 1 (el +gmt).

    Hour =.(0.23).

    Month =. (1,2.12).

    Day =.(1.31).
    #-.
    #/* Julián date (days into year) */.
    #-.

    Def jdate (month, day).

    Mo_da = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334].

    Return(mo_da[month-1] + day).
    #-.
    #/* solar time adjustment from Julián date */.
    #-.

    Def stadj(jd).

    Return(0.170 * sin((4*pi/373) * (jd - 80)) - 0.129 * sin((2*pi/355) * (jd + 12 * (s_meridian - S_longitude) / pi).
    #-.
    #/* solar declination angle from Julián date */.
    #-.

    Def sdec(jd).

    Return(0.4093 * sin((2*pi/36 * (jd - 81))).
    #-.
    #/* solar altitude from solar declination and solar time */.
    #-.

    Def salt(sd, st).

    Return(así(sin(s_latitude) * sin(sd) - Cos(s_latitude) * cos(sd) * cos(st*(pi/12)))).
    #-.
    # /* solar azimuth from solar declination and solar time */.
    #-.

    Def sazi (sd, st).

    Return(-atan2(cos(sd)*sin(st*(pi/12)), -cos(s_latitude)*sin(sd) - Sin(s_latitude)*cos(sd)*cos(st*(pi/12)))).
    #-.
    # main.
    #-.

    Jd = jdate (month, day).

    Sd = sdec(jd).

    If tsolar == 1:
    St = hour.

    Else:
    St = hour + stadj(jd).

    Altitude = salt(sd, st).

    Azimuth = sazi (sd, st).

    Print local solar time, st.

    Print altitude, altitude*180/pi.

    Print azimuth, azimuth*180/pi.

    Print x,-sin(azimuth)*cos(altitude).

    Print y,-cos(azimuth)*cos(altitude).

    Print z, sin(altitude).
    Última edición por Klópes; 04-01-2007 a las 13:32
    ...y estaba superbueno.
    Y miré su perfil. Y vi que era amigo de Daniela. Puaf.


    Dos niñas en el parque

    no se elevará, nunca más

  3. #3
    Fecha de ingreso
    Apr 2006
    Mensajes
    2,391

    Calcular el área de la sombra que proyecta un modelo

    Hola, chicos, eso lo hace el max desde la versión 4 creo. Tu le dices: España-Zaragoza a las 14:35 de la tarde y el tipo te coloca el sol clavado, eso eso? Saludos.

  4. #4
    Fecha de ingreso
    Dec 2006
    Mensajes
    3

    Calcular el área de la sombra que proyecta un modelo

    Te pongo un sencillo script que calcula la posición del sol según fecha, hora, latitud y longitud. También te da el Vector dirección: s=(x y, z).

    Para calcular el área, dependerá lo difícil es hallar el área de la proyección del edificio sobre el plano perpendicular a, y dividirla por el seno de altitude. Si no me equivoco.
    #*********************.
    # posicionamiento del sol respecto a la hora solar.
    # -.
    #*********************.

    Latitude =
    S_latitude = Latitude * pi/180.

    Longitude =
    S_longitude = longitude * pi/180.

    Meridian = -2.

    S_meridian = meridian * pi/180.

    Tsolar = 1 (el +gmt).

    Hour =.(0.23).

    Month =. (1,2.12).

    Day =.(1.31).
    #-.
    #/* Julián date (days into year) */.
    #-.

    Def jdate (month, day).

    Mo_da = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334].

    Return(mo_da[month-1] + day).
    #-.
    #/* solar time adjustment from Julián date */.
    #-.

    Def stadj(jd).

    Return(0.170 * sin((4*pi/373) * (jd - 80)) - 0.129 * sin((2*pi/355) * (jd + 12 * (s_meridian - S_longitude) / pi).
    #-.
    #/* solar declination angle from Julián date */.
    #-.

    Def sdec(jd).

    Return(0.4093 * sin((2*pi/36 * (jd - 81))).
    #-.
    #/* solar altitude from solar declination and solar time */.
    #-.

    Def salt(sd, st).

    Return(así(sin(s_latitude) * sin(sd) - Cos(s_latitude) * cos(sd) * cos(st*(pi/12)))).
    #-.
    # /* solar azimuth from solar declination and solar time */.
    #-.

    Def sazi (sd, st).

    Return(-atan2(cos(sd)*sin(st*(pi/12)), -cos(s_latitude)*sin(sd) - Sin(s_latitude)*cos(sd)*cos(st*(pi/12)))).
    #-.
    # main.
    #-.

    Jd = jdate (month, day).

    Sd = sdec(jd).

    If tsolar == 1:
    St = hour.

    Else:
    St = hour + stadj(jd).

    Altitude = salt(sd, st).

    Azimuth = sazi (sd, st).

    Print local solar time, st.

    Print altitude, altitude*180/pi.

    Print azimuth, azimuth*180/pi.

    Print x,-sin(azimuth)*cos(altitude).

    Print y,-cos(azimuth)*cos(altitude).

    Print z, sin(altitude).
    Gracias Klópes, pero este script ¿para qué aplicación es?

  5. #5
    Fecha de ingreso
    Jul 2005
    Mensajes
    7,953

    Calcular el área de la sombra que proyecta un modelo

    Editado porque soy así de chulo.
    ...y estaba superbueno.
    Y miré su perfil. Y vi que era amigo de Daniela. Puaf.


    Dos niñas en el parque

    no se elevará, nunca más

  6. #6
    Fecha de ingreso
    Jul 2005
    Mensajes
    7,953

    Calcular el área de la sombra que proyecta un modelo

    Gracias Klópes, pero este script ¿para qué aplicación es?
    Así a bote pronto, para ninguna. Es Python, pero le he quitado las órdenes que, acceden a objetos para que quede casi como seudocódigo, para algo tan específico como lo que pides no te puedo ayudar más, lo siento. Simplemente tienes que traducirlo al lenguaje de tu programa y adaptarlo.

    Como dice TBC3D, max ya tiene el cálculo solar implementado, sólo tienes que, acceder a la dirección del sol, ni siquiera necesitas ese script. La madre del cordero está en lo que te he dicho después, que no es poco trabajo, siento no poder ayudarte más, suerte.
    ...y estaba superbueno.
    Y miré su perfil. Y vi que era amigo de Daniela. Puaf.


    Dos niñas en el parque

    no se elevará, nunca más

Temas similares

  1. La lámpara no proyecta ninguna imagen
    Por Panakabena en el foro Impresoras 3D
    Respuestas: 1
    : 29-03-2023, 16:15
  2. Respuestas: 17
    : 14-12-2020, 14:46
  3. Rhinoceros Cómo calcular el volumen mínimo para esculpir modelo
    Por Architecto en el foro Modelado
    Respuestas: 2
    : 19-01-2015, 14:33
  4. Caja tonta que no proyecta sombra
    Por nuhar en el foro Render, Iluminación y Cámaras
    Respuestas: 2
    : 12-07-2012, 17:06
  5. Calcular volumen de objeto en Blender para calcular su masa
    Por 3dpoder en el foro Revistas Online
    Respuestas: 0
    : 25-05-2009, 17:26

Etiquetas para este tema