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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? codigo_imprimible.txt

?? 基于java的3d開發庫。對坐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");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品欧美精品系列| 久久99深爱久久99精品| 精品国精品国产| 欧美日韩国产精品自在自线| 在线区一区二视频| 色88888久久久久久影院野外| 国产美女视频一区| 久久99精品久久久久久| 麻豆视频观看网址久久| 麻豆专区一区二区三区四区五区| 亚洲国产成人精品视频| 亚洲精品国产高清久久伦理二区| 国产欧美日韩三级| 一色屋精品亚洲香蕉网站| 国产精品久99| 亚洲女人****多毛耸耸8| 成人欧美一区二区三区在线播放| 国产精品看片你懂得| 亚洲欧洲日韩在线| 亚洲五码中文字幕| 日韩成人午夜电影| 国产精品77777竹菊影视小说| 国产精品一区二区免费不卡| 成人精品电影在线观看| 色婷婷av一区二区三区软件| 欧美视频三区在线播放| 91精品国产综合久久精品app | 一区二区三区日韩精品视频| 亚洲一本大道在线| 久久国产人妖系列| 99国产精品国产精品久久| 在线免费观看不卡av| 日韩欧美黄色影院| 亚洲日本电影在线| 免费观看成人av| 成人激情动漫在线观看| 911精品产国品一二三产区| 欧美精品一区二区高清在线观看| 国产欧美日韩精品在线| 一区二区三区加勒比av| 久久97超碰国产精品超碰| 97成人超碰视| 欧美成人三级电影在线| 一区二区三区成人| 国内精品嫩模私拍在线| 欧美日韩国产大片| 欧美激情一区二区在线| 秋霞午夜av一区二区三区| 成人av在线资源网| 欧美哺乳videos| 一区二区三区在线免费观看| 国产乱子轮精品视频| 欧美男生操女生| 亚洲六月丁香色婷婷综合久久 | 欧美一区二区久久久| 日韩美女视频19| 国产精品一区在线| 91麻豆精品91久久久久同性| 日韩一区中文字幕| 丁香天五香天堂综合| 日韩一区二区免费视频| 亚洲尤物视频在线| av在线这里只有精品| 久久男人中文字幕资源站| 日韩电影免费在线| 6080日韩午夜伦伦午夜伦| 一区二区欧美在线观看| 99久久国产免费看| 国产精品久久福利| 成人短视频下载| 国产欧美视频一区二区| 国产精品1024久久| 久久丝袜美腿综合| 国产一区二区三区在线观看免费| 91精品免费在线观看| 奇米一区二区三区| 日韩美女在线视频| 黄色小说综合网站| 亚洲精品在线免费观看视频| 免费在线看成人av| 欧美成人激情免费网| 日韩高清国产一区在线| 日韩一区二区在线观看| 美国十次了思思久久精品导航| 欧美日本一区二区三区| 日韩中文字幕一区二区三区| 欧美日韩国产色站一区二区三区| 亚洲精品免费播放| 精品视频一区三区九区| 天天色综合天天| 欧美videossexotv100| 国产美女在线精品| 国产精品的网站| 日本高清不卡在线观看| 亚洲va欧美va国产va天堂影院| 欧美精品vⅰdeose4hd| 精品一区二区在线免费观看| 久久精品网站免费观看| 99热99精品| 天堂精品中文字幕在线| 欧美成人精品二区三区99精品| 国产高清在线观看免费不卡| 亚洲免费大片在线观看| 欧美顶级少妇做爰| 狠狠色丁香婷婷综合久久片| 国产精品无人区| 在线观看中文字幕不卡| 秋霞av亚洲一区二区三| 日本一区二区三区视频视频| 欧美丝袜丝nylons| 狠狠色丁香婷婷综合久久片| 亚洲精品自拍动漫在线| 日韩欧美专区在线| bt欧美亚洲午夜电影天堂| 午夜精品福利一区二区三区av | 亚洲国产精品成人综合| 日本乱人伦aⅴ精品| 精品一区二区三区久久久| 日韩毛片视频在线看| 精品国产乱码久久久久久1区2区| 成人免费毛片片v| 老司机精品视频在线| 亚洲色图欧美激情| 久久日韩粉嫩一区二区三区| 欧美视频完全免费看| 波多野结衣一区二区三区| 日本欧美韩国一区三区| 亚洲欧美成aⅴ人在线观看| 久久亚洲精精品中文字幕早川悠里| 色婷婷av一区二区| 成人网页在线观看| 激情综合色播五月| 视频在线观看91| 亚洲精品国产无天堂网2021| 国产欧美日韩在线视频| 精品久久久久久久久久久久包黑料 | 一本一道久久a久久精品| 精品一区二区影视| 婷婷久久综合九色综合绿巨人| 国产精品乱人伦| 久久久久久亚洲综合影院红桃| 91麻豆精品国产91久久久久久久久 | 欧美一区二区精品| 日本韩国一区二区三区视频| 国产91精品露脸国语对白| 久久99精品视频| 首页欧美精品中文字幕| 亚洲国产你懂的| 亚洲黄色免费电影| 亚洲人午夜精品天堂一二香蕉| 亚洲国产电影在线观看| 精品国产1区二区| 欧美一区二区精美| 日韩一级完整毛片| 欧美一级片在线| 欧美一级高清片| 91精品国模一区二区三区| 91精品国产综合久久久久| 欧美一区二区精品在线| 精品国产免费人成在线观看| 欧美不卡一区二区| 精品久久久久久久久久久久久久久 | 国产一区二区美女诱惑| 国产一区二区影院| 岛国一区二区三区| 成人18视频日本| 色菇凉天天综合网| 欧美日韩一区二区在线视频| 欧美日韩精品电影| 欧美大片一区二区三区| 久久亚洲一区二区三区四区| 欧美激情综合在线| 亚洲精品一卡二卡| 日韩av中文字幕一区二区| 美女视频网站久久| 国产成人综合精品三级| 9色porny自拍视频一区二区| 一本一道综合狠狠老| 欧美乱妇15p| 国产婷婷色一区二区三区四区| 国产三级一区二区| 亚洲免费色视频| 日本亚洲免费观看| 国产精品456露脸| 97精品视频在线观看自产线路二| 欧美伊人久久大香线蕉综合69| 69久久99精品久久久久婷婷| 久久精品视频网| 一区二区三区在线观看视频| 色哟哟国产精品| 99在线热播精品免费| 欧美日韩一区二区在线观看| 欧美不卡视频一区| 亚洲人一二三区| 免费高清成人在线| 99精品国产一区二区三区不卡| 欧美一级片免费看| 亚洲色图视频网| 国产裸体歌舞团一区二区| 欧美日韩一级片在线观看|