亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? codigo_imprimible.txt

?? 基于java的3d開發(fā)庫。對坐java3d的朋友有很大的幫助。
?? TXT
?? 第 1 頁 / 共 3 頁
字號:
//===========================================================================package vitral.framework.visual;import java.util.Vector;import java.util.Enumeration;import vitral.toolkits.common.VECTOR;import vitral.toolkits.common.COLOR;import vitral.toolkits.entorno.RAYO;import vitral.toolkits.entorno.CAMARA;import vitral.toolkits.entorno.MATERIAL;import vitral.toolkits.entorno.LUZ;import vitral.toolkits.geom.GEOMETRIA;import vitral.toolkits.media.IMAGEN_RGB;import vitral.framework.UNIVERSO;/**Esta clase solo provee un m&eacute;todo que encapsula un algoritmo decontrol de visualizaci&oacute;n. Su raz&oacute;n de ser (y por la cualNO poner ese m&eacute;todo en la clase cliente que la utiliza) es facilitarla abstracci&oacute;n de la operaci&oacute;n de visualizaci&oacute;n, lacual puede ser cambiada por otro algoritmo de visualizaci&oacute;n (i.e.zbuffer o radiosidad), pero manteniendo el mismo modelo de escena 3D.*/public class RAYTRACER_MIT {    private static final float INFINITO = Float.MAX_VALUE;    private static final float TINY = 0.001f;    private VECTOR static_tmp;    public RAYTRACER_MIT()    {        // Machete similar al descrito en ESFERA::intersect        static_tmp = new VECTOR();    }    //   the point of intersection (p)    //   a unit-length surface normal (n)    //   a unit-length vector towards the ray's origin (v)    public COLOR modelo_de_iluminacion(VECTOR p, VECTOR n, VECTOR v,         Vector lights, Vector objects, COLOR color_de_fondo,        MATERIAL m) {        COLOR resultado = new COLOR();        GEOMETRIA objeto_mas_cercano;        for ( Enumeration lightSources = lights.elements();              lightSources.hasMoreElements(); ) {            LUZ luz = (LUZ)lightSources.nextElement();            if ( luz.tipo_de_luz == LUZ.AMBIENTE ) {                resultado.r += m.ka*m.ir*luz.ir;                resultado.g += m.ka*m.ig*luz.ig;                resultado.b += m.ka*m.ib*luz.ib;              }               else {                VECTOR l;                if ( luz.tipo_de_luz == LUZ.PUNTUAL ) {                    l = new VECTOR(luz.lvec.x - p.x,                                    luz.lvec.y - p.y,                                    luz.lvec.z - p.z);                    l.normalizar();                  }                   else {                    l = new VECTOR(-luz.lvec.x, -luz.lvec.y, -luz.lvec.z);                }                // Check if the surface point is in shadow                VECTOR poffset =                     new VECTOR(p.x + TINY*l.x, p.y + TINY*l.y, p.z + TINY*l.z);                RAYO rayo_sombra = new RAYO(poffset, l);                objeto_mas_cercano =                    trazar_rayo_en_escena(rayo_sombra, objects);                if ( objeto_mas_cercano != null ) {                    continue;                }                float lambert = n.producto_punto(l);                if ( lambert > 0 ) {                    if ( m.kd > 0 ) {                        float diffuse = m.kd*lambert;                        resultado.r += diffuse*m.ir*luz.ir;                        resultado.g += diffuse*m.ig*luz.ig;                        resultado.b += diffuse*m.ib*luz.ib;                    }                    if ( m.ks > 0 ) {                        lambert *= 2;                        static_tmp.x = lambert*n.x - l.x;                        static_tmp.y = lambert*n.y - l.y;                        static_tmp.z = lambert*n.z - l.z;                        float spec =                             v.producto_punto(static_tmp);                        if ( spec > 0 ) {                            spec = m.ks*((float) Math.pow((double) spec,                                        (double)m.ns));                            resultado.r += spec*luz.ir;                            resultado.g += spec*luz.ig;                            resultado.b += spec*luz.ib;                        }                    }                }            }        }        // Compute illumination due to reflection        if ( m.kr > 0 ) {            float t = v.producto_punto(n);            if ( t > 0 ) {                t *= 2;                VECTOR reflect = new VECTOR(t*n.x - v.x,                                                 t*n.y - v.y,                                                 t*n.z - v.z);                VECTOR poffset = new VECTOR(p.x + TINY*reflect.x,                                                 p.y + TINY*reflect.y,                                                 p.z + TINY*reflect.z);                RAYO rayo_reflejado = new RAYO(poffset, reflect);                objeto_mas_cercano =                     trazar_rayo_en_escena(rayo_reflejado, objects);                if ( objeto_mas_cercano != null ) {                    VECTOR rp = new VECTOR();                    VECTOR rn = new VECTOR();                    VECTOR rv = new VECTOR();                    objeto_mas_cercano.informacion_extra(                        rayo_reflejado, rayo_reflejado.t, rp, rn);                    rv.x = -rayo_reflejado.direction.x;                    rv.y = -rayo_reflejado.direction.y;                    rv.z = -rayo_reflejado.direction.z;                                        COLOR rcolor =                        modelo_de_iluminacion(rp, rn, rv, lights, objects, color_de_fondo, m);                    resultado.r += m.kr*rcolor.r;                    resultado.g += m.kr*rcolor.g;                    resultado.b += m.kr*rcolor.b;                  }                   else {                    resultado.r += m.kr*color_de_fondo.r;                    resultado.g += m.kr*color_de_fondo.g;                    resultado.b += m.kr*color_de_fondo.b;                }            }        }        // Add code for refraction here        // <No implementado>        // Clamp resultado to MAX 1.0 intensity.        resultado.r = (resultado.r > 1f) ? 1f : resultado.r;        resultado.g = (resultado.g > 1f) ? 1f : resultado.g;        resultado.b = (resultado.b > 1f) ? 1f : resultado.b;        return resultado;    }    /**    Si el `in_rayo` se intersecta con al menos uno de los `in_arr_objetos`,    se retorna una referencia al objeto mas cercano de los intersectados.    De lo contrario se retorna null.    */    public GEOMETRIA     trazar_rayo_en_escena(RAYO in_rayo, Vector in_arr_objetos) {        Enumeration i;        GEOMETRIA gi;        GEOMETRIA objeto_mas_cercano;        in_rayo.t = INFINITO;        objeto_mas_cercano = null;        for ( i = in_arr_objetos.elements(); i.hasMoreElements(); ) {            gi = (GEOMETRIA)i.nextElement();            if ( gi.interseccion(in_rayo) ) {                objeto_mas_cercano = gi;            }        }        return objeto_mas_cercano;    }    private COLOR seguimiento_rayo(RAYO rayo, Vector in_objetos,                          Vector in_luces, COLOR in_fondo)    {        COLOR c;        VECTOR p = new VECTOR();        VECTOR n = new VECTOR();        VECTOR v = new VECTOR();        GEOMETRIA objeto_mas_cercano;        objeto_mas_cercano = trazar_rayo_en_escena(rayo, in_objetos);        if ( objeto_mas_cercano != null ) {            objeto_mas_cercano.informacion_extra(rayo, rayo.t,                                                      p, n);            v.x = -rayo.direction.x;            v.y = -rayo.direction.y;            v.z = -rayo.direction.z;            c = modelo_de_iluminacion(                p, n, v, in_luces, in_objetos, in_fondo,                 objeto_mas_cercano.material);          }          else {            c = in_fondo;        }        return c;    }/*    // SIN MODELO DE ILUMINACION: SOLO LUZ AMBIENTE (Borrar luego de aqui,    // dejar solo en el estudio paso a paso de las etapas!    private COLOR seguimiento_rayo(RAYO rayo, Vector in_objetos,                          Vector in_luces, COLOR in_fondo)    {        COLOR c;        GEOMETRIA objeto_mas_cercano;        c = in_fondo;        objeto_mas_cercano = trazar_rayo_en_escena(rayo, in_objetos);        if ( objeto_mas_cercano != null ) {            c.r = objeto_mas_cercano.material.ir;            c.g = objeto_mas_cercano.material.ig;            c.b = objeto_mas_cercano.material.ib;        }        return c;    }*/    /**    Macroalgoritmo de control para raytracing. Este m&eacute;todo recibe    el modelo de una escena 3D previamente construida en memoria y una    imagen, y modifica la imagen de tal forma que contiene una visualizacion    de la escena, resultado de aplicar la t&eacute;cnica de raytracing.    PAR&Aacute;METROS:    - `inout_viewport`: imagen RGB en donde el algoritmo calcular&aacute; su       resultado.    - `in_objetos`: arreglo din&aacute;mico de GEOMETRIAs que constituyen los       objetos visibles de la escena.    - `in_luces`: arreglo din&aacute;mico de LUZes (luces puntuales)    - `in_fondo`: especificaci&oacute;n de un color de fondo para la escena      (i.e. el color que se ve si no se ve ning&uacute;n objeto!)    - `in_camara`: especificaci&oacute;n de la transformaci&oacute;n de      proyecci&oacute;n 3D a 2D que se lleva a cabo en el proceso de       visualizaci&oacute;n.    PRE:    - Todas las referencias estan creadas, asi sea que apunten a estructuras      vac&iacute;as.    - La imagen `inout_viewport` esta creada, y es de el tama&ntilde;o que      el usuario desea para su visualizaci&oacute;n.    POST:    - `inout_viewport` contiene una representaci&oacute;n visual de la       escena 3D (`in_objetos`, `in_luces`, `in_fondo`), tal que corresponde a       una proyecci&oacute;n 3D a 2D controlada por la c&aacute;mara       virtual `in_camara`.    NOTA: Este algoritmo se inicio como una modificacion del raytracer del          curso 6.837 (computaci&oacute;n gr&aacute;fica) de MIT, original          de Leonard McMillan y Tomas Lozano Perez, pero puede considerarse          que es una re-escritura y re-estructuraci&oacute;n completa de          Oscar Chavarro / FUSM.    */    public void ejecutar(IMAGEN_RGB inout_viewport, UNIVERSO in_escena)    {        int x, y;        RAYO rayo;        COLOR color;        System.out.print("[");        in_escena.camara.preprocesar_vista();        for ( y = 0; y < inout_viewport.ytam(); y++ ) {            if ( y % 10 == 0 ) {                System.out.print(".");            }            for ( x = 0; x < inout_viewport.xtam(); x++ ) {                //- Trazado individual de un rayo --------------------------                // Es importante que la operacion generar_rayo sea inline                // (i.e. "final")                rayo = in_escena.camara.generar_rayo(x, y);                color = seguimiento_rayo(rayo, in_escena.arr_cosas,                     in_escena.arr_luces, in_escena.color_de_fondo);                //- Exporto el resultado de color del pixel ----------------                inout_viewport.putpixel(x, y, (byte)(255 * color.r),                                               (byte)(255 * color.g),                                               (byte)(255 * color.b));            }        }        System.out.println("]");    }}//===========================================================================//= EOF                                                                     =//===========================================================================//===========================================================================package vitral.framework;// Paquetes de java utilizados para la agregacion multipleimport java.util.Vector;import java.io.InputStream;import java.io.InputStreamReader;import java.io.Reader;import java.io.BufferedReader;import java.io.StreamTokenizer;import java.io.IOException;// Paquetes internos al sistema de raytracing / modelamientoimport vitral.toolkits.common.VECTOR;import vitral.toolkits.common.COLOR;import vitral.toolkits.entorno.CAMARA;import vitral.toolkits.entorno.LUZ;import vitral.toolkits.entorno.MATERIAL;import vitral.toolkits.geom.ESFERA;public class UNIVERSO{    // Variables especificas para la depuracion / desarrollo    private static final boolean depurar = false;    // El modelo del mundo    public Vector arr_cosas;    public Vector arr_luces;    public COLOR color_de_fondo;    public CAMARA camara;    public UNIVERSO()    {        camara = new CAMARA();        color_de_fondo = new COLOR();        color_de_fondo.r = 0;        color_de_fondo.g = 0;        color_de_fondo.b = 0;        int CHUNKSIZE = 100; // Incremento de arreglos        // Arreglo de GEOMETRIAs        arr_cosas = new Vector(CHUNKSIZE, CHUNKSIZE);          // Arreglo de LUZes        arr_luces = new Vector(CHUNKSIZE, CHUNKSIZE);    }    public void dispose()    {        // OJO: Falta ver si la destruccion de la escena esta OK...        camara = null;        color_de_fondo = null;        arr_cosas = null;        arr_luces = null;    }    private void    imprimirMensaje(String m)    {        if ( depurar ) {            System.out.println(m);        }    }    private float    leerNumero(StreamTokenizer st) throws IOException {        if (st.nextToken() != StreamTokenizer.TT_NUMBER) {            System.err.println("ERROR: number expected in line "+st.lineno());            throw new IOException(st.toString());        }        return (float)st.nval;    }    public void    leerArchivoDeEscena(InputStream is) throws IOException {        Reader parsero = new BufferedReader(new InputStreamReader(is));        StreamTokenizer st = new StreamTokenizer(parsero);        st.commentChar('#');        boolean fin_de_lectura = false;        MATERIAL material_actual;        // Material por defecto...        material_actual = new MATERIAL(0.8f, 0.2f, 0.9f,                                        0.2f, 0.4f, 0.4f,                                        10.0f, 0f, 0f, 1f);        while ( !fin_de_lectura ) {          switch ( st.nextToken() ) {            case StreamTokenizer.TT_WORD:              if (st.sval.equals("sphere")) {                  VECTOR c = new VECTOR((float) leerNumero(st),                                         (float) leerNumero(st),                                         (float) leerNumero(st));                  float r = (float)leerNumero(st);                  imprimirMensaje("sphere");                  arr_cosas.addElement(new ESFERA(material_actual, c, r));                }                 /*                else if (st.sval.equals("triangles")) {                  imprimirMensaje("triangles");                  arr_cosas.addElement(new MESH(material_actual, st));                }                 */                else if (st.sval.equals("eye")) {                  imprimirMensaje("eye");

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品日日夜夜| 欧美精品国产精品| 中文字幕制服丝袜一区二区三区| 韩国一区二区在线观看| 精品国产免费一区二区三区香蕉 | 亚洲男人的天堂网| 成人18视频在线播放| 久久夜色精品国产欧美乱极品| 午夜精品123| 欧美不卡一二三| 理论电影国产精品| 久久精品水蜜桃av综合天堂| 国产在线视频一区二区三区| 久久九九久久九九| 成人高清免费观看| 日本一区二区视频在线观看| 99国产精品久久久久| 亚洲精品中文字幕乱码三区| 欧美日韩一区二区三区在线看 | 亚洲精品成人天堂一二三| 在线日韩一区二区| 亚洲线精品一区二区三区| 91麻豆6部合集magnet| 午夜国产不卡在线观看视频| 欧美精品久久一区| 国产精品主播直播| 成人欧美一区二区三区白人 | 国产91在线观看丝袜| 亚洲欧洲日产国产综合网| 欧美日韩dvd在线观看| 日韩精品91亚洲二区在线观看| 精品美女被调教视频大全网站| 狠狠色丁香婷婷综合| 亚洲免费观看在线视频| 欧美久久久久久久久| 精品伊人久久久久7777人| 亚洲品质自拍视频| 7777精品久久久大香线蕉| www.日韩在线| 亚洲成人黄色小说| 中文字幕中文乱码欧美一区二区| 日本道色综合久久| 国内精品嫩模私拍在线| 亚洲人精品一区| 欧美一区二区三区白人| 一本在线高清不卡dvd| 日韩专区一卡二卡| 亚洲图片激情小说| 日韩欧美一区二区免费| 在线中文字幕一区| 极品少妇xxxx偷拍精品少妇| 国产日韩欧美制服另类| 欧美日产国产精品| 国产99久久久国产精品潘金网站| 天堂av在线一区| 亚洲国产高清在线观看视频| 日韩欧美一区二区视频| av在线这里只有精品| 日韩精品成人一区二区在线| 亚洲精品免费在线| 精品福利av导航| 337p亚洲精品色噜噜噜| 北岛玲一区二区三区四区| 精品一区二区三区免费毛片爱| 一区二区国产视频| 亚洲三级电影网站| 久久影音资源网| 欧美性色黄大片手机版| 91网站在线观看视频| 国产精品99精品久久免费| 久久精品国产色蜜蜜麻豆| 一区二区高清免费观看影视大全| 国产精品乱码妇女bbbb| 精品少妇一区二区三区免费观看| 欧美在线播放高清精品| 成人教育av在线| 国产剧情av麻豆香蕉精品| 亚洲色图一区二区三区| 久久久九九九九| 精品伦理精品一区| 欧美精品欧美精品系列| 国产一区二区91| 国产一区二区在线观看视频| 舔着乳尖日韩一区| 日韩不卡一区二区| 亚洲成av人片一区二区梦乃| 天天影视涩香欲综合网| 一级日本不卡的影视| 亚洲最大成人综合| 亚洲精品国产一区二区精华液 | 亚洲欧美欧美一区二区三区| 自拍偷自拍亚洲精品播放| 国产精品欧美一区二区三区| 国产欧美精品一区| 国产日产亚洲精品系列| 国产精品国产精品国产专区不蜜| 国产免费成人在线视频| 亚洲欧洲一区二区在线播放| 欧美大白屁股肥臀xxxxxx| 欧美男男青年gay1069videost| 色婷婷狠狠综合| 欧美久久久久免费| 日韩一级成人av| 国产欧美一区二区精品仙草咪| 久久影院午夜论| 国产精品久久夜| 一区二区三区欧美视频| 国产精品网站导航| 亚洲男人的天堂在线aⅴ视频| 亚洲蜜臀av乱码久久精品| 日本中文字幕一区二区有限公司| 天堂成人国产精品一区| 国产成人av一区| 成人ar影院免费观看视频| 欧美性猛交xxxxxx富婆| 欧美精品久久久久久久多人混战 | 日韩精品亚洲一区| 久久99蜜桃精品| 91在线porny国产在线看| 色综合天天天天做夜夜夜夜做| 欧美猛男男办公室激情| 精品伦理精品一区| 夜夜爽夜夜爽精品视频| 午夜国产精品一区| av中文一区二区三区| 精品视频在线视频| 国产欧美一区二区三区沐欲 | 日韩一级黄色大片| 亚洲欧美福利一区二区| 亚洲成人激情自拍| 成人av片在线观看| 69久久夜色精品国产69蝌蚪网 | 中国色在线观看另类| 亚洲18色成人| 国产一级精品在线| 欧美性感一区二区三区| 精品国产乱码久久久久久免费| 国产精品少妇自拍| 五月婷婷欧美视频| 久久精品72免费观看| 欧美日精品一区视频| 久久先锋影音av鲁色资源| 婷婷夜色潮精品综合在线| 国产成人午夜电影网| 欧美成人一区二区三区在线观看| 国产精品久久久久久亚洲毛片| 久久精品国产99久久6| 99亚偷拍自图区亚洲| 国产午夜精品久久久久久免费视| 亚洲一区电影777| 国产精品66部| 欧美日韩一区二区三区四区| 欧美一区二区三区爱爱| 亚洲精品综合在线| 日本成人中文字幕在线视频| 欧美日韩亚洲国产综合| 久久久三级国产网站| 奇米色一区二区| 色综合色综合色综合色综合色综合 | 青娱乐精品视频| 欧美日韩成人一区二区| 国产亚洲欧美日韩俺去了| 污片在线观看一区二区| 99久久国产综合精品女不卡| 久久综合资源网| 日韩精品高清不卡| 欧美精品tushy高清| 亚洲欧美一区二区三区国产精品| av在线不卡观看免费观看| wwww国产精品欧美| 国精产品一区一区三区mba视频 | 国产毛片精品国产一区二区三区| 日韩欧美激情在线| 日韩精品每日更新| 日韩欧美黄色影院| 午夜久久久久久久久| 欧美精品九九99久久| 亚洲国产欧美在线人成| 欧美久久久久久久久久| 午夜视黄欧洲亚洲| 日韩一区和二区| 蜜臀av性久久久久蜜臀av麻豆| 欧美一区二区女人| 免费高清在线一区| 久久久久青草大香线综合精品| 蜜桃91丨九色丨蝌蚪91桃色| 91精品国产欧美一区二区18| 天天综合色天天综合| 日韩免费在线观看| 久久精品国产成人一区二区三区 | 欧美专区日韩专区| 日韩精品久久久久久| 3d动漫精品啪啪1区2区免费 | 亚洲精品视频在线观看免费| 91成人免费网站| 亚洲一区二区三区美女| 欧美日韩第一区日日骚| 日本伊人色综合网| 国产欧美一区二区精品性| 99久久国产免费看|