社区
Java SE
帖子详情
用java3D,怎样画出一个一直函数的图形呢??急急急!!!
usxue
2003-05-13 08:32:12
比如说函数为:f(x,y)=x*x+y*y;
怎样在java3D中画出他的图形呢??急急急!
而且如果知道已知的点的坐标,怎样画出他的点呢??
...全文
118
7
打赏
收藏
用java3D,怎样画出一个一直函数的图形呢??急急急!!!
比如说函数为:f(x,y)=x*x+y*y; 怎样在java3D中画出他的图形呢??急急急! 而且如果知道已知的点的坐标,怎样画出他的点呢??
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
usxue
2003-05-13
打赏
举报
回复
呵呵……
能有完整的例子吗??
labimantou
2003-05-13
打赏
举报
回复
啥错
usxue
2003-05-13
打赏
举报
回复
怎么提示运行有错啊??
labimantou
2003-05-13
打赏
举报
回复
// 生成函数曲面
import com.sun.j3d.utils.geometry.*;
import javax.media.j3d.*;
import javax.vecmath.*;
public class Surface extends Shape3D
{
Surface()
{
this.setGeometry(createGeometry());
this.setAppearance(createAppearance());
}
// 具体函数,更改这一函数即可显示不同函数的图像
float calz(float x,float y)
{
return (float)(-1f*Math.sqrt(2-x*x-y*y));
}
Geometry createGeometry()
{
int MAXX=200;
int MAXY=200;
QuadArray surf = new QuadArray(
MAXX*MAXY*4, GeometryArray.COORDINATES
| GeometryArray.NORMALS);
for(int i=0;i<MAXX;i++)
{
for(int j=0;j<MAXY*4;j+=4)
{
int jb=j/4;
float x=(i-100f)/200.0f;
float y=(jb-100f)/200.0f;
// 计算一个平面上的4个点
Point3f A=new Point3f(x,y,calz(x,y));
Point3f B=
new Point3f(x+0.005f,y,calz(x+0.005f,y));
Point3f C=new Point3f(x+0.005f,
y+0.005f,calz(x+0.005f,y+0.005f));
Point3f D=new Point3f(x,y+0.005f,
calz(x,y+0.005f));
// 计算四个点的法向量
Vector3f a = new Vector3f(
A.x - B.x, A.y - B.y, A.z - B.z);
Vector3f b = new Vector3f(
C.x - B.x, C.y - B.y, C.z - B.z);
Vector3f n = new Vector3f();
n.cross(b, a);
n.normalize();
// 设置点坐标
surf.setCoordinate(i*MAXY*4+j, A);
surf.setCoordinate(i*MAXY*4+j+1, B);
surf.setCoordinate(i*MAXY*4+j+2, C);
surf.setCoordinate(i*MAXY*4+j+3, D);
// 设置点法向量
surf.setNormal(i*MAXY*4+j, n);
surf.setNormal(i*MAXY*4+j+1, n);
surf.setNormal(i*MAXY*4+j+2, n);
surf.setNormal(i*MAXY*4+j+3, n);
}
}
return surf;
}
Appearance createAppearance()
{
// 指定外观,这样才有明暗效果
Appearance appear = new Appearance();
Material material = new Material();
Color3f white = new Color3f(1.0f, 1.0f, 1.0f);
Color3f red = new Color3f(1.0f, 0.0f, 0.0f);
material.setDiffuseColor(red);
material.setSpecularColor(white);
material.setShininess(2.0f);
appear.setMaterial(material);
return appear;
}
}// end of Surface.java
// 生成函数曲面
import com.sun.j3d.utils.geometry.*;
import javax.media.j3d.*;
import javax.vecmath.*;
public class Surface extends Shape3D
{
Surface()
{
this.setGeometry(createGeometry());
this.setAppearance(createAppearance());
}
// 具体函数,更改这一函数即可显示不同函数的图像
float calz(float x,float y)
{
return (float)(-1f*Math.sqrt(2-x*x-y*y));
}
Geometry createGeometry()
{
int MAXX=200;
int MAXY=200;
QuadArray surf = new QuadArray(
MAXX*MAXY*4, GeometryArray.COORDINATES
| GeometryArray.NORMALS);
for(int i=0;i<MAXX;i++)
{
for(int j=0;j<MAXY*4;j+=4)
{
int jb=j/4;
float x=(i-100f)/200.0f;
float y=(jb-100f)/200.0f;
// 计算一个平面上的4个点
Point3f A=new Point3f(x,y,calz(x,y));
Point3f B=
new Point3f(x+0.005f,y,calz(x+0.005f,y));
Point3f C=new Point3f(x+0.005f,
y+0.005f,calz(x+0.005f,y+0.005f));
Point3f D=new Point3f(x,y+0.005f,
calz(x,y+0.005f));
// 计算四个点的法向量
Vector3f a = new Vector3f(
A.x - B.x, A.y - B.y, A.z - B.z);
Vector3f b = new Vector3f(
C.x - B.x, C.y - B.y, C.z - B.z);
Vector3f n = new Vector3f();
n.cross(b, a);
n.normalize();
// 设置点坐标
surf.setCoordinate(i*MAXY*4+j, A);
surf.setCoordinate(i*MAXY*4+j+1, B);
surf.setCoordinate(i*MAXY*4+j+2, C);
surf.setCoordinate(i*MAXY*4+j+3, D);
// 设置点法向量
surf.setNormal(i*MAXY*4+j, n);
surf.setNormal(i*MAXY*4+j+1, n);
surf.setNormal(i*MAXY*4+j+2, n);
surf.setNormal(i*MAXY*4+j+3, n);
}
}
return surf;
}
Appearance createAppearance()
{
// 指定外观,这样才有明暗效果
Appearance appear = new Appearance();
Material material = new Material();
Color3f white = new Color3f(1.0f, 1.0f, 1.0f);
Color3f red = new Color3f(1.0f, 0.0f, 0.0f);
material.setDiffuseColor(red);
material.setSpecularColor(white);
material.setShininess(2.0f);
appear.setMaterial(material);
return appear;
}
}// end of Surface.java
usxue
2003-05-13
打赏
举报
回复
给个例子好吗??呵呵……没学过JAVA3D啊!
呵呵……
谢谢!急急急!!!
labimantou
2003-05-13
打赏
举报
回复
用QuardArray,你要画得应该是个面吧
labimantou
2003-05-13
打赏
举报
回复
这就是个完整的例子阿!!!!!
java3D
第三章
java3D
基本
图形
类详解
本文介绍
Java3D
的基本
图形
功能与场景管理方法,包括SimpleUniverse类的使用,以及如何创建并操作3D
图形
对象。通过具体示例展示了如何实现3D
图形
的绘制与交互。
Java 3d 三维
图形
库使用
本文介绍
Java3D
的基本概念及安装配置方法,并提供了
一个
简单的三维
图形
示例代码,展示了如何创建三维场景、添加交互行为等。
Java
图形
学实践:精通2D与3D
图形
设计
本教程深入探索Java
图形
API,涵盖2D绘图、文本渲染、图像处理,以及3D建模、光照、纹理映射等方面。介绍了Java 2D和Java 3D API的架构、核心类与功能,通过示例代码展示
图形
绘制、图像操作等方法,适用于多领域
图形
应用开发。
java 画图 怎么清除已经
画出
来的
图形
_ppt小技巧——用paint3d画3d演示内容
微软发布的Paint3D软件上手简单,win10用户更新系统后可在应用商店下载。其界面简单,有强大的贴图功能,能绘制3D内容,如立体
图形
、3D字体和涂鸦等。将制作好的3D模型文件插入PPT,设置动画效果,可实现精彩的3D演示。
java 画立体
图形
本文介绍如何使用Java的drawPolygon方法绘制立体长方体。通过控制点的坐标,实现多边形的绘制,并结合填充和线条绘制技巧,创建出具有一定立体感的
图形
。
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章