欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java3D實例之創(chuàng)建空間幾何模型的實現(xiàn)方法

 更新時間:2013年05月06日 16:50:46   作者:  
本篇文章是對Java3D 創(chuàng)建空間幾何模型的實現(xiàn)方法進行了詳細的介紹。需要的朋友參考下

Java3D,算是比較古老的技術,Java8OracleJavaFX支持了Java3D. 相關資料參照Oracle官網(wǎng) <JDK8目前還沒有正式發(fā)布 Early Access版本下載地址 http://jdk8.java.net>

環(huán)境搭建Java3D開發(fā)環(huán)境,JDK下載見Oracle官網(wǎng).安裝后在安裝目錄下的lib文件中找到Java3D驅(qū)動包,添加的自己的項目中

Java3D實現(xiàn)簡單幾何空間圖形說明:


實例應用:創(chuàng)建3D直線

復制代碼 代碼如下:

package com.java3d.dennist.study;

import javax.media.j3d.Appearance;
import javax.media.j3d.LineArray;
import javax.media.j3d.LineAttributes;
import javax.media.j3d.Shape3D;

/**
 *
 *
 *  @version : 1.1
 * 
 *  @author  : 蘇若年         <a href="mailto:DennisIT@163.com">發(fā)送郵件</a>
 *   
 *  @since   : 1.0      創(chuàng)建時間:    2013-5-6 下午02:57:47
 *    
 *  TODO     :
 *
 */
public class LineShape extends Shape3D{

    // 直線的定點坐標
    private float vert[ ]={
.5f,0.5f,0.0f, -0.5f,0.5f,0.0f,
.3f,0.0f,0.0f, -0.3f,0.0f,0.0f,
                -0.5f,-0.5f,0.0f, 0.5f,-0.5f,0.0f};
    // 各定點的顏色
    private float color[ ]={
.0f,0.5f,1.0f,  0.0f,0.5f,1.0f,
.0f,0.8f,2.0f,  1.0f,0.0f,0.3f,
.0f,1.0f,0.3f,  0.3f,0.8f,0.0f};

    public LineShape( ) {
        // 創(chuàng)建直線數(shù)組對象
        LineArray line=new LineArray(6,LineArray.COORDINATES|LineArray.COLOR_3);
        // 設置直線對象的坐標數(shù)組
        line.setCoordinates(0,vert);
        // 設置直線對象的顏色數(shù)組
        line.setColors(0,color);
        // 創(chuàng)建直線屬性對象
        LineAttributes linea=new LineAttributes( );
        // 設置線寬
        linea.setLineWidth(10.0f);
        // 設置直線的渲染效果
        linea.setLineAntialiasingEnable(true);

        Appearance app=new Appearance( ); 
        app.setLineAttributes(linea);
        this.setGeometry(line);
        this.setAppearance(app);
    }

}


將3d直線放置到場景中
復制代碼 代碼如下:

package com.java3d.dennist.study;

import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.DirectionalLight;
import javax.media.j3d.Shape3D;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3f;

import com.sun.j3d.utils.universe.SimpleUniverse;

/**
 *
 *
 *  @version : 1.1
 * 
 *  @author  : 蘇若年         <a href="mailto:DennisIT@163.com">發(fā)送郵件</a>
 *   
 *  @since   : 1.0      創(chuàng)建時間:    2013-5-6 下午02:50:08
 *    
 *  TODO     :
 *
 */
public class Line3DShape {

    public Line3DShape(){

        //構建空間 和物體

        // 創(chuàng)建一個虛擬空間
        SimpleUniverse universe = new  SimpleUniverse();
        // 創(chuàng)建一個用來包含對象的數(shù)據(jù)結構
        BranchGroup group = new BranchGroup();
        // 創(chuàng)建直線形狀對象把它加入到group中
        Shape3D shape=new LineShape();
        group.addChild(shape);

        //燈光構造
        Color3f light1Color = new Color3f(1.8f, 0.1f, 0.1f);
        // 設置光線的顏色
        BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
        // 設置光線的作用范圍
        Vector3f light1Direction  = new Vector3f(4.0f, -7.0f, -12.0f);
        // 設置光線的方向
        DirectionalLight light1= new DirectionalLight(light1Color, light1Direction);
          // 指定顏色和方向,產(chǎn)生單向光源
        light1.setInfluencingBounds(bounds);
        // 把光線的作用范圍加入光源中
        group.addChild(light1);
        // 將光源加入group組
        // 安放觀察點
        universe.getViewingPlatform().setNominalViewingTransform();
        // 把group加入到虛擬空間中
        universe.addBranchGraph(group);
    }

   
    public static void main(String[] args) {
        new Line3DShape();
    }
}


運行效果:
 

其他形狀

錐體Cone cone=new Cone(.5f,1.0f,1,app)   //app即外觀參數(shù)

球體Sphere sphere=new Sphere(.5f,app);   //app即外觀參數(shù)

圓柱體Cylinder cylinder=new Cylinder(.5f,1.0f);


實例應用
:Java3D實現(xiàn)空間椎體

復制代碼 代碼如下:

package com.java3d.dennist.study;

import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.DirectionalLight;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3f;

import com.sun.j3d.utils.geometry.Cone;
import com.sun.j3d.utils.universe.SimpleUniverse;

/**
 *
 *
 *  @version : 1.1
 * 
 *  @author  : 蘇若年         <a href="mailto:DennisIT@163.com">發(fā)送郵件</a>
 *   
 *  @since   : 1.0      創(chuàng)建時間:    2013-5-6 下午02:50:08
 *    
 *  TODO     : Java3D 各種三維形狀展示
 *
 */
public class Java3DShape {

    public Java3DShape(){

        //構建空間 和物體

        // 創(chuàng)建一個虛擬空間
        SimpleUniverse universe = new  SimpleUniverse();
        // 創(chuàng)建一個用來包含對象的數(shù)據(jù)結構
        BranchGroup group = new BranchGroup();
        // 創(chuàng)建一個椎體并把它加入到group中
          Cone cone=new Cone(.5f,1.0f,1,null) ;    //錐體
        group.addChild(cone);

        //燈光構造

        Color3f light1Color = new Color3f(1.8f, 0.1f, 0.1f);
        // 設置光線的顏色
        BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
        // 設置光線的作用范圍
        Vector3f light1Direction  = new Vector3f(4.0f, -7.0f, -12.0f);
        // 設置光線的方向
        DirectionalLight light1= new DirectionalLight(light1Color, light1Direction);
          // 指定顏色和方向,產(chǎn)生單向光源
        light1.setInfluencingBounds(bounds);
        // 把光線的作用范圍加入光源中
        group.addChild(light1);
        // 將光源加入group組
        // 安放觀察點
        universe.getViewingPlatform().setNominalViewingTransform();
        // 把group加入到虛擬空間中
        universe.addBranchGraph(group);
    }

    public static void main(String[] args) {
        new Java3DShape();
    }
}

效果圖:

實例應用:Java3D實現(xiàn)空間球體

復制代碼 代碼如下:

package com.java3d.dennist.study;

import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.DirectionalLight;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3f;

import com.sun.j3d.utils.geometry.Sphere;
import com.sun.j3d.utils.universe.SimpleUniverse;

/**
 *
 *
 *  @version : 1.1
 * 
 *  @author  : 蘇若年         <a href="mailto:DennisIT@163.com">發(fā)送郵件</a>
 *   
 *  @since   : 1.0      創(chuàng)建時間:    2013-5-6 下午02:50:08
 *    
 *  TODO     : Java3D 各種三維形狀展示
 *
 */
public class Java3DShape {

    public Java3DShape(){

        //構建空間 和物體

        // 創(chuàng)建一個虛擬空間
        SimpleUniverse universe = new  SimpleUniverse();
        // 創(chuàng)建一個用來包含對象的數(shù)據(jù)結構
        BranchGroup group = new BranchGroup();
        // 創(chuàng)建一個球并把它加入到group中
        Sphere sphere = new Sphere(0.5f);// 小球的半徑為0.5米
        group.addChild(sphere);

        //燈光構造

        Color3f light1Color = new Color3f(1.8f, 0.1f, 0.1f);
        // 設置光線的顏色
        BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
        // 設置光線的作用范圍
        Vector3f light1Direction  = new Vector3f(4.0f, -7.0f, -12.0f);
        // 設置光線的方向
        DirectionalLight light1= new DirectionalLight(light1Color, light1Direction);
          // 指定顏色和方向,產(chǎn)生單向光源
        light1.setInfluencingBounds(bounds);
        // 把光線的作用范圍加入光源中
        group.addChild(light1);
        // 將光源加入group組
        // 安放觀察點
        universe.getViewingPlatform().setNominalViewingTransform();
        // 把group加入到虛擬空間中
        universe.addBranchGraph(group);
    }

    public static void main(String[] args) {
        new Java3DShape();
    }
}


效果圖:

實例應用:Java3D實現(xiàn)空間圓柱體

復制代碼 代碼如下:

package com.java3d.dennist.study;

import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.DirectionalLight;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3f;

import com.sun.j3d.utils.geometry.Cylinder;
import com.sun.j3d.utils.universe.SimpleUniverse;

/**
 *
 *
 *  @version : 1.1
 * 
 *  @author  : 蘇若年         <a href="mailto:DennisIT@163.com">發(fā)送郵件</a>
 *   
 *  @since   : 1.0      創(chuàng)建時間:    2013-5-6 下午02:50:08
 *    
 *  TODO     : Java3D 各種三維形狀展示
 *
 */
public class Java3DShape {

    public Java3DShape(){

        //構建空間 和物體

        // 創(chuàng)建一個虛擬空間
        SimpleUniverse universe = new  SimpleUniverse();
        // 創(chuàng)建一個用來包含對象的數(shù)據(jù)結構
        BranchGroup group = new BranchGroup();
        // 創(chuàng)建一個圓柱形狀并把它加入到group中
        Cylinder cylinder=new Cylinder(.5f,1.0f); //圓柱型
        group.addChild(cylinder);

        //燈光構造

        Color3f light1Color = new Color3f(1.8f, 0.1f, 0.1f);
        // 設置光線的顏色
        BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
        // 設置光線的作用范圍
        Vector3f light1Direction  = new Vector3f(4.0f, -7.0f, -12.0f);
        // 設置光線的方向
        DirectionalLight light1= new DirectionalLight(light1Color, light1Direction);
          // 指定顏色和方向,產(chǎn)生單向光源
        light1.setInfluencingBounds(bounds);
        // 把光線的作用范圍加入光源中
        group.addChild(light1);
        // 將光源加入group組
        // 安放觀察點
        universe.getViewingPlatform().setNominalViewingTransform();
        // 把group加入到虛擬空間中
        universe.addBranchGraph(group);
    }

    public static void main(String[] args) {
        new Java3DShape();
    }
}


效果圖:


相關文章

  • 一文掌握C++ 智能指針全部用法

    一文掌握C++ 智能指針全部用法

    學習智能指針有很多好處,可以幫我們C++程序員管理動態(tài)分配的內(nèi)存的,它會幫助我們自動釋放new出來的內(nèi)存,從而避免內(nèi)存泄漏,感興趣的朋友跟隨小編一起看看吧
    2021-08-08
  • 詳解C語言快速排序三種方法的單趟實現(xiàn)

    詳解C語言快速排序三種方法的單趟實現(xiàn)

    本文將通過圖片重點為大家介紹一下C語言中快速排序三種方法的單趟實現(xiàn):分別是hoare法、挖坑法、雙指針法,文中示例代碼講解詳細,感興趣的可以了解一下
    2022-06-06
  • Define,const,static用法總結

    Define,const,static用法總結

    const定義的全局數(shù)據(jù)變量,其基本作用和define相同,但又在define的基礎上增加了好多功能
    2013-10-10
  • OpenCV識別提取圖像中的水平線與垂直線

    OpenCV識別提取圖像中的水平線與垂直線

    這篇文章主要為大家詳細介紹了OpenCV識別提取圖像中的水平線與垂直線,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C++接口文件小技巧之PIMPL詳解

    C++接口文件小技巧之PIMPL詳解

    C++ 里面有一些慣用法(idioms),如 RAII,PIMPL,copy-swap、CRTP、SFINAE 等,今天要說的是 PIMPL,即 Pointer To Implementation,指向?qū)崿F(xiàn)的指針,感興趣的可以了解一下
    2023-06-06
  • OpenCV圖像處理之實現(xiàn)圖像膨脹腐蝕操作

    OpenCV圖像處理之實現(xiàn)圖像膨脹腐蝕操作

    圖像形態(tài)學操作是指基于形狀的一系列圖像處理操作的合集,主要是基于集合論基礎上的形態(tài)學數(shù)學對圖像進行處理。本文將為大家介紹一下如何利用OpenCV實現(xiàn)其中的腐蝕和膨脹操作,需要的可以參考一下
    2022-09-09
  • C++冒泡排序與選擇排序詳解

    C++冒泡排序與選擇排序詳解

    大家好,本篇文章主要講的是C++冒泡排序與選擇排序詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C語言函數(shù)的參數(shù)使用指針

    C語言函數(shù)的參數(shù)使用指針

    這篇文章主要介紹了C語言函數(shù)的參數(shù)使用指針,本文講述了指針在作為函數(shù)參數(shù)時候的使用方法,解析值傳遞和值引用的區(qū)別案例,希望對你有所幫助
    2021-06-06
  • C++入門之vector使用詳解

    C++入門之vector使用詳解

    這篇文章主要為大家介紹了C++入門之vector使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • 枚舉和宏的區(qū)別詳細解析

    枚舉和宏的區(qū)別詳細解析

    枚舉常量具有類型,但宏沒有類型,枚舉變量具有與普通變量相同的諸如作用域、值等性質(zhì),但宏沒有,宏不是語言的一部分,它是一種預處理替換符
    2013-09-09

最新評論